私は、画像をアップロードするためにPaperclipを使用する単純なプロジェクトに取り組んでいます。 S3をPaperclipと統合しようとするまで、すべてのことがうまくいきました。ユーザーの画像を「アップロード」すると、NoMethodError (undefined method 'match' for nil:NilClass):
というエラーが発生します。これは、S3の設定を実行している場合にのみ発生します。AWS S3の統合により、未定義のメソッドmatchが返される
マイ設定:
development.rb:
....
....
config.paperclip_defaults = {
:storage => :s3,
:s3_credentials => {
:bucket => ENV['AWS_BUCKET_ID'],
:access_key_id => ENV['AWS_ACCESS_KEY_ID'],
:secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
}
}
マイモデル:
class User < ActiveRecord::Base
has_attached_file :image_file, default_url: "/myapp/images/:style/missing.png"
validates_attachment_file_name :image_file, matches: [/png\Z/, /jpeg\Z/, /tiff\Z/, /bmp\Z/, /jpg\Z/]
コンソールから全体のエラー出力:私が試し
NoMethodError (undefined method `match' for nil:NilClass):
app/controllers/images_controller.rb:33:in `block in create'
app/controllers/images_controller.rb:32:in `create'
もの:
環境変数として の代わりにコードに直接AWSキーとバケット名を追加しました。
上記のように、私は自分の環境ファイル内のAWS設定をコメントアウトしており、完全に動作しているようです。
それは私がGoogleのクラウドストレージのための設定を開始するfog
宝石以前インストールし、代わりにS3に固執することを決めたことを言及する価値があるだろう。私はgem uninstall fog
を使って宝石を取り除いたが、いくつかの依存関係が残っているようだ。
私は同じ問題があります。まだ修正を見つけましたか? – rguerrettaz
追加してみましたか:s3_region => 'us-east-1'(またはあなたのs3がある地域)以下は役に立つリンクです:https://github.com/thoughtbot/paperclip/blob/95acf3b898bd782f4429d42fd2d8812505390328/lib /paperclip/storage/s3.rb#L96 – rguerrettaz
はい、AWSリージョンを追加すると、うまく動作しているようです。以下の答えで言えば、これはドキュメント内では完全には説明されていません。私は基本的に完璧に動作した別のプロジェクトから貼り付けられたコードをコピーするので、もっと混乱しました。 – PSCampbell