2011-10-30 16 views
0

私はレール3アプリでファイルアップロードを管理するためにcarrierwave gemを使用していますが、私はamazon s3バケットに接続できません。Carrierwaveとamazon s3

私はwikiの指示に従っていますが、十分詳細ではありません。たとえば、s3の資格情報はどこに保存しますか?

答えて

7

このようなものをイニシャライザに入れます。

CarrierWave.configure do |config| 
    config.storage = :fog 
    config.fog_directory = 'your_bucket' 

    config.fog_credentials = { 
    :provider => 'AWS', 
    :aws_access_key_id => 'your_access_key' 
    :aws_secret_access_key => 'your_secret_key', 
    :region => 'your_region' 
    } 
end 

必要に応じて、自分の資格情報をファイルに保存できます(コードは非公開です)。または、別のファイル、またはデータベースから、あなた次第です。以下は、設定ファイルをロードし、envに基づいて異なる設定を許可します。

# some module in your app 
module YourApp::AWS 
    CONFIG_PATH = File.join(Rails.root, 'config/aws.yml') 

    def self.config 
    @_config ||= YAML.load_file(CONFIG_PATH)[Rails.env] 
    end 
end 

# config/aws.yml 
base: &base 
    secret_access_key: "your_secret_access_key" 
    access_key_id: "your_access_key_id" 
    region: your_region 
development: 
    <<: *base 
    bucket_name: your_dev_bucket 
production: 
    <<: *base 
    bucket_name: your_production_bucket 

# back in the initializer 
config.fog_directory = YourApp::AWS.config['bucket_name'] 
# ... 
config.fog_credentials = { 
    :provider => 'AWS', 
    :aws_access_key_id => YourApp::AWS.config['access_key_id'], 
    :aws_secret_access_key => YourApp::AWS.config['secret_access_key'], 
    :region => YourApp::AWS.config['region'] 
} 
1

チェックアウトthis quick blog post私はそれを行う方法について書きました。

  • がアカウントにAPIキーを接続します(アマゾンS3のAPIに接続できるように)APIキー
  • を設定する(維持することを確認します:基本的にはかなり複雑であるそれぞれのいくつかのステップがあり、あなたがパブリックリポジトリを使用している場合、資格はGitHubにチェックインされません)
  • 変更を展開する。