2

Railsプラグインを作成していますrails new plugin my_plugin --mountable

これを理解するにはかなりの作業が必要でしたが、carrierwave を使用してファイルを S3 にアップロードすることになっていますが、OK と表示されますが、何もアップロードされません。

Carrierwave を使用してrails g uploader photo 、次のようなファイルでアップローダを生成します

# my_engine/app/uploaders/my_engine/photo_uploader.rb

# encoding: utf-8
module my_engine
 class PhotoUploader < CarrierWave::Uploader::Base
  # Choose what kind of storage to use for this uploader:
  storage :file
  # storage :fog

  # Override the directory where uploaded files will be stored.
  # This is a sensible default for uploaders that are meant to be mounted:
  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end
 end
end

モデルにはマウントがありました:写真、PhotoUploader

module PdfGeneratorEngine
  class Assemble < ActiveRecord::Base
    attr_accessible :color, :photo, :qr_code_url, :text

    mount_uploader :photo, PhotoUploader
  end
end

私のCarrierWave設定ファイルはこれです

CarrierWave.configure do |config|
  config.fog_credentials = {
    :provider               => 'AWS',
    :aws_access_key_id      => 'MY_ACCES_KEY',
    :aws_secret_access_key  => 'MY_SECRET_KEY',
    :provider => 'AWS',
    :region => 'eu-west-1'
  }
  config.fog_directory  =  'my.bucket.com'
  config.fog_host       =  'https://s3-eu-west-1.amazonaws.com/my.bucket.com'
  config.storage = :fog
  config.s3_use_ssl = true
  config.fog_public = true
end

なのでまずはfog_hostで叫び始めますが、asset_hostなら大丈夫です

次に、s3_use_ssl に問題がありますが、CarrierWave の github にマージされた問題です。しかし、ホストはすでに https:// として定義されているため、その行が必要な理由がわかりません。

その後、「完了しました」と表示され、(デーモンで) ファイルを確認しようとすると、何もありません。

私は何を取りこぼしたか?または、CarrierWave と Rails のマウント可能なエンジンに何か問題がありますか?

4

2 に答える 2

1

あなたの photo_uploader.rb で

コメント ストレージ:ファイルとアンコメント ストレージ:フォグ

  # storage :file
  storage :fog   

-- あなたの fog.rb を見てください。ここで与えられたものと矛盾しています。

Carrierwave#using-amazon-s3

CarrierWave.configure do |config|
  config.fog_credentials = {
    :provider               => 'AWS',                        # required
    :aws_access_key_id      => 'xxx',                        # required
    :aws_secret_access_key  => 'yyy',                        # required
    :region                 => 'eu-west-1'                   # optional, defaults to 'us-east-1'
    :hosts                  => 's3.example.com'              # optional, defaults to nil
    :endpoint               => 'https://s3.example.com:8080' # optional, defaults to nil
  }
  config.fog_directory  = 'name_of_directory'                     # required
  config.fog_public     = false                                   # optional, defaults to true
  config.fog_attributes = {'Cache-Control'=>'max-age=315576000'}  # optional, defaults to {}
end
于 2012-12-19T10:05:52.223 に答える
0

さて、CarrierWave には少し問題があります。

RightAws をすばやくセットアップしたところ、S3 にアップロードされ、デーモンから見つけることができます。

追加したアップローダーで

   @s3 = RightAws::S3Interface.new('MY KEY', 'MY SECRET KEY')
   @s3.put('my.bucket.com', assemble.photo.identifier ,params[:assemble][:photo])

助けてくれてありがとう、Nishant、CarrierWave はもっと洗練されたものになるはずですが、現在は機能しません。Railsエンジンでの使用に関して、githubでこれに問題がありました。

于 2012-12-19T11:08:20.917 に答える