2

私は何年もの間これにこだわっていて、何が悪いのかわかりません。これと同じ問題を抱えているように見える人はたくさんいますが、実際に機能する答えは実際には見つかりません.

production.rb

  config.paperclip_defaults = {
  :storage => :s3,
  :s3_credentials => {
    :bucket => ENV['my bucket name is here'],
    :access_key_id => ENV['my key is here'],
    :secret_access_key => ENV['my secret key is here']
  }
}

game.rb

require 'aws/s3'

class Game < ActiveRecord::Base

attr_accessible  :swf, :swf_file_name, :name, :description, :category, :age_group, :dimension_x, :dimension_y, :image, :image_file_name, :feature_image, :feature_image_file_name, :developer, :instructions, :date_to_go_live, :date_to_show_countdown, :plays
has_attached_file :swf

has_attached_file :image

has_attached_file :feature_image

  def swfupload_file=(data)
    data.content_type =
MIME::Types.type_for(data.original_filename).first.content_type
    logger.warn("Data content type is: #{data.content_type}")
    self.file = data
  end

end

ペーパークリップ.rb

Paperclip::Attachment.default_options[:url] = ':s3_domain_url'
Paperclip::Attachment.default_options[:path] = '/:class/:attachment/:id_partition/:style/:filename'
4

1 に答える 1

2

ここに私のペーパークリップの初期化のものがあります:

Paperclip::Attachment.default_options.merge!({
    storage: :s3,
    s3_credentials: {
        access_key_id: ENV['S3_KEY'],
        secret_access_key: ENV['S3_SECRET'],
        bucket: "#{ENV['S3_BUCKET']}-#{Rails.env}"
        },
    url: ":s3_domain_url",
    path: "/:class/:attachment/:id_partition/:style/:filename"
    })

これは、S3_KEY、S3_SECRET、および S3_BUCKET という 3 つの環境変数 setup が呼び出されていることを前提としています。バケット変数に Rails.env を追加することで、環境ごとに異なるバケットを持つことができるように、ちょっとしたトリックを行いました。

質問で、バケットの実際の名前をENVへの参照に入れていることを示しているようですが、これは機能しません。バケットの名前を環境変数に入れ、環境変数の名前をキーとして使用する必要があります。

これが役立つことを願っています。

于 2013-09-13T21:31:55.350 に答える