2

paperclip gem を使用して画像を処理し、Amazon S3 に保存しています。各画像は人の名前を表しています。Unicode 文字を含む名前のサポートも追加したいのですが、ペーパークリップが名前に Unicode 文字を含むファイルをアップロードできないため、機能しません。アップロードする前にÑをNに変更することはできません.Nでアップロードされた画像を上書きしてしまうからです。NUÑO と NUNO の 2 人のユーザー。NUÑO.jpg を NUNO.jpg としてアップロードするようにペーパークリップに指示することはできません。これは、以前の NUNO.jpg を上書きしてしまうからです。

これが私のかなり標準的な本番環境/ステージング環境の構成です。

config.paperclip_defaults = {
  :storage => :s3,
  :url => ':s3_domain_url',
  :path => 'assets/:class/:id/:style.:extension',
  :s3_credentials => {
    :bucket => ENV['AWS_BUCKET'],
    :access_key_id => ENV['AWS_ACCESS_KEY_ID'],
    :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY_ID']
  }
}

画像が添付された関連クラスは次のとおりです。

class NameSpread < ActiveRecord::Base
(...)
  has_attached_file :rendered_image,
    default_url: lambda { |attach| attach.instance.processing_image },
    path: lambda { |attach| attach.instance.save_path },
    styles: { (..) },
    processors: [ :name_spread_processor ],
    default_style: :spread
(...)
end

save_path メソッドは次のとおりです。

def save_path
  if Rails.env.production? || Rails.env.staging?
    "assets/:class/#{gender}/#{name}/:style.jpg"
  else
    "#{Rails.root}/public/assets/:class/#{gender}/#{name}/:style.jpg"
  end
end

これはめちゃくちゃになる部分です:#{name}

何か案は?

4

1 に答える 1

0

2 日間のデバッグの後、解決策を見つけました。

ruby 1.9.2 から 2.0.0 に更新したところ、すべてが機能するようになりました...

于 2013-10-09T06:06:45.140 に答える