我正在协作开发一个应用程序,有时遇到问题是因为原始开发者使用的是Linux系统,而我使用的是OSX系统。我的当前问题与使用ImageMagik和paperclip上传图像有关。当我尝试将图片上传到应用程序时,我会收到以下消息。
Permission denied - /assets
我非常确定这意味着该应用程序希望将图像保存在assets目录中,但由于该目录不存在于我的计算机上,因此无法保存。
在模型中,这是处理图片的代码。
has_attached_file :avatar,
:url => "/avatars/:id?style=:style",
:styles => { :large => "190x190#", :medium => "70x70#", :thumb => "106x106#" },
:path => "/assets/rob/images/Users/:id/:style/:basename.:extension"
现在,我假设这个目录存在于原始程序员的计算机和站点托管的位置。但是我没有那个目录,所以我这样做:
:path => "~/robotimus/dev_images/:id/:style/:basename.:extension"
但现在我陷入了困境,因为最终我必须在部署之前恢复那行代码。作为解决方案,我可以编写这样的方法。
def images_path
Rails.env.production? ? "/assets/rob/images/Users/" : "~/robotimus/dev_images"
end
然后:path这一行将会变成这样:
:path => images_path + "/:id/:style/:basename.:extension"
听起来是个好主意吗?此外,这个方法应该被存储在哪里呢?我猜它属于config/environment.rb,但我想听听专家的意见。