User
Rails 3.2 + Heroku + S3 + Paperclipを使用して、モデルにアイコンを保存しています。ただし、モデルは4つのアイコンフィールドを保存していません。画像はS3で正しく処理および保存されており、エラーは発生していません。また、ペーパークリップとS3を介してドキュメントが保存されている別のモデルもあります。そのモデルはすべての場合に完全に機能します。アイコンはローカルではUser
機能しますが、Herokuでは機能しません。
production.rb
関連する構成
config.paperclip_defaults = {
:storage => :s3,
:s3_credentials => {
:bucket => ENV['AWS_BUCKET'],
:access_key_id => ENV['AWS_ACCESS_KEY_ID'],
:secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
}
}
ユーザーモデルコード:
class User < ActiveRecord::Base
attr_accessible :icon
has_attached_file :icon, :url => "/system/:rails_env/:attachment/:style/:hash.:extension",
:hash_data => ":class/:attachment/:id",
:hash_secret => "superSecretThing",
:styles => { :medium => "300x300>", :thumb => "100x100>" },
:default_url => "/blank.png"
...
コントローラコード:(私はBase64でエンコードされたファイルをAJAXしているので、このコードはちょっとおかしいです。)
params[:user][:icon_data]
decoded_file = Base64.decode64(data)
begin
split_name = params[:user][:icon_file_name].split(".")
file = Tempfile.new([split_name[0..-2].join("."), ".#{split_name[-1]}"])
file.binmode
file.write(decoded_file)
file.close
@user.icon = open(file)
@user.icon_file_name = params[:user][:icon_file_name]
ensure
file.unlink
end
@user.save
私はペーパークリップアタッチメントを備えた別のモデルでほぼ同じプロセスを実行し、それは完璧に機能します。どちらの場合も、添付ファイルはS3に正しく保存されており、エラーは発生していません。この要点には、Herokuログからのコントローラーアクションの出力例があります。
他のモデルがうまく機能するので、私はかなり困惑しています。唯一の本当の違いは、User
添付ファイルが画像処理を行うことですが、その部分は正常に機能しているように見えます。
問題はこれと同じですが、そこでの解決策は適用されません。
考え?