AWS S3 その2
前回はバケット作成とセキュリティ対策だったので今回は実際に投稿するところについて書く。詰まるとしたらこっちの方だろし分けた。
S3はローカル環境からでも利用できるのでまずは
1 ローカルから画像投稿する
カリキュラムではsecrets.ymlの時代だったからその書き方になってる。まあ両方知ってる方がいいと思うから両方書くか。
ポイントとしては
vim ~/.bash_profile とかで環境変数のファイル開いてた
今は.zshrcに書いてるので
vim ~/.zshrcとかでファイル開いてこの中に書く
(ちなみにcapistrano使ってるリモートサーバは上の二つの読み込みしてくれないので/etc/environmentsに記述する)
さらにrailsではsecrets.ymlから環境変数読み込む形ではなくて
credentials.ymlに秘密の情報を書くようになったので、結局環境変数は
credentials.ymlに書いてある
(それと地味にPC全体の環境変数っていうよりも。あるアプリのcredentials内に書くようになったんだねぇと思った。それぞれにcredentialsあるからアプリごとに分けるような感じになったんかな?)(それとこのcredentialsの暗号化復号化するのがmasterkeyだから絶対にあげない、無くさないようにね。そしてこいつは直接書くんじゃなくて普通環境変数RAILS_MASTER_KEYに入れといてそれを読み込む形とるからね)
なので
secrets.ymlの時とはcarrierwaveの設定ファイルの書き方が異なる。
config/initializers/carrierwave.rb
require 'carrierwave/storage/abstract'
require 'carrierwave/storage/file'
require 'carrierwave/storage/fog'
CarrierWave.configure do |config|
config.storage = :fog
config.fog_provider = 'fog/aws'
config.fog_credentials = {
provider: 'AWS',
aws_access_key_id: Rails.application.secrets.aws_access_key_id,
aws_secret_access_key: Rails.application.secrets.aws_secret_access_key,
region: 'ap-northeast-1'
}
config.fog_directory = 'ここにバケット名を入れます'
config.asset_host = 'https://s3-ap-northeast-1.amazonaws.com/ここにバケット名を入れます'
end
|
こうじゃなくて
config/initializers/carrierwave.rb(必要なとこだけ)
こんな感じに書く。rails cでちゃんとその記述で値取れてるか確認するといい感じ
参考記事
https://qiita.com/nakasato_minami/items/0be3dd5efabe812c6282