2017-06-22 5 views
0

時々私はインターネットから離れていて、まだアップロードページで作業する必要があります。 Carrierwave Directはストレージを強制するようです。 devでオーバーライドする方法はありません。
Carrierwave Directにローカルストレージ(:ファイル)を使用させ、単にCarrierwaveの開発環境設定にフォールバックすることはできますか?キャリアはローカルストレージに直接アップロードできますか?

ストレージを設定しています:キャリアウェーブのイニシャライザで開発設定の設定を行っていません... "<%= direct_upload_form_for @uploader do | f |%>"の "認定プロバイダではありません"のcarrierwave_directエラー。

私はcarrierwave directを回避しようとしましたが、強制的に:霧、リダイレクトURLを期待し、direct_upload_form_forフォームメソッドを期待しています... carrierwave_directはかなり責任があります。

ストレージの使用:開発中のファイルは、carrierwave_direct gemの歓迎される機能です。誰もきれいにこれを行う方法を知っていますか?

答えて

1

私は次のようにそれを行うことができると思う:

CarrierWave.configure do |config| 
    if Rails.env.development? || Rails.env.test? 
    config.storage = :file 
    config.asset_host = ENV["dev_url"] 
    else 
    config.fog_provider = 'fog/aws'      # required 
    config.fog_credentials = { 
     provider:    'AWS',      # required 
     aws_access_key_id:  ENV["aws_id"],      # required 
     aws_secret_access_key: ENV["aws_key"],      # required 
     region:    ENV["aws_zone"]     # optional, defaults to 'us-east-1' 
    } 
    config.fog_directory = ENV["aws_bucket"]       # required 
    config.max_file_size = 600.megabytes # defaults to 5.megabytes 
    config.use_action_status = true 
    config.fog_public  = false          # optional, defaults to true 
    config.fog_attributes = { cache_control: "public, max-age=#{365.day.to_i}" } # optional, defaults to {} 
    end 

end 

そして、あなたのアップローダに追加します:

class SomeUploader < CarrierWave::Uploader::Base 
    if Rails.env.development? || Rails.env.test? 
    def store_dir 
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 
    end 
    end 
end 
関連する問題