これをPaperclipでs3ストレージとして使用している場合は、ymlのままにしておきます。あなたの初期化子インサイド(設定/初期化子)と呼ばれるファイルを作成:すべてのあなたのS3のもののためにあなたの設定は、形式にする必要があり
app_config.rb
AppConfig = YAML.load(File.read(Rails.root + 'config' + 'config.yml'))[Rails.env].with_indifferent_access
:
config.yml
を
development:
s3:
access_id: access-id
secret_key: secret
bucket_name: your-bucket-name-for-development
staging:
s3:
access_id: access-id
secret_key: secret
bucket_name: your-bucket-name-for-staging
production:
s3:
access_id: access-id
secret_key: secret
bucket_name: your-bucket-name-for-production
この時点で、あなたはあなたのコンソールに入って、あなたのs3データにアクセスすることができます:
AppConfig[:s3]
など、あなたはすべてのデータをバックハッシュを取得する必要があります:あなたが開発にあなたのS3のものをテストしたい場合、私はちょうど一例として、上記を持っていますが、通常、あなただけの節約になる
{"access_id"=>"access-id", "bucket_name"=>"your-bucket-name-for-development", "secret_key"=>"secret"}
開発時にはローカルのファイルディレクトリに、リモートのステージング環境と運用環境にはs3を使用します。
バケットデータへのアクセスは、別の会話であり、バケットデータをモデルに関連付けた方法によって異なります。例えば、あなたのバケットデータはそうのような写真のモデルに関連していた場合は、次のデータを:
photo.rb
require 'paperclip'
class Photo < ActiveRecord::Base
belongs_to :album
before_save :set_orientation
if AppConfig['s3']
has_attached_file :data,
:styles => {
:thumb => "200x200>",
:medium => "700x700>"
},
:storage => :s3,
:default_style => :medium,
:bucket => AppConfig['s3']['bucket_name'],
:s3_credentials => { :access_key_id => AppConfig['s3']['access_id'], :secret_access_key => AppConfig['s3']['secret_key'] },
:s3_headers => { 'Cache-Control' => 'max-age=315576000', 'Expires' => 10.years.from_now.httpdate },
:path => "/:class/:id/:style/:filename"
else
has_attached_file :data,
:styles => {
:thumb => "200x200>",
:medium => "700x700>"
},
:storage => :filesystem,
:default_style => :medium
end
private
def set_orientation
self.orientation = Paperclip::Geometry.from_file(self.data.to_file).horizontal? ? 'horizontal' : 'vertical'
end
end
私はhas_attached_fileに示されるように、私の添付ファイル名は、データと呼ばれています。
Photo.first.data(:thumb)
をそして、それはサムネイル写真が返された最初の写真のオブジェクトに格納したS3のURLを引くでしょう。だから、いくつかのバケットのデータにアクセスするために、私が呼び出します。上記の例では、 'paperclip' gemと 'aws-s3' gemも使用しています。
config.gem 'aws-s3', :version => '>=0.6.2', :lib => 'aws/s3'
config.gem 'paperclip'
あなたのお役に立てば幸いです。