私はアプリで共同作業をしていますが、元の開発者がLinuxで作業していて、OSXを使用しているという事実に起因して、問題が発生することがあります。私の現在の問題は、ImageMagikとペーパークリップを使用して画像をアップロードすることと関係があります。アプリに写真をアップロードしようとすると、次のメッセージが表示されます。
Permission denied - /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に属していると思いますが、専門家の意見を聞きたいと思います。