Ruby on Rails でアプリを開発し、画像投稿機能を実装しようと考えています。
Heroku にデプロイしたアプリはクラウドストレージを使わないと画像の保存ができないことから、Heroku と相性のいい Cloudinary を導入しようと思うのですが、gem 'cloudinary'
導入の前段階で根本的な疑問が生じたので質問させていただきます。
前提
アプリを Heroku にデプロイするにあたって、本番環境のデータベースを Postgresql に変更しました(開発環境は SQLite3)。
その際、 Postgresql を本番環境だけ適応するためにbundle install --without production
を使いました。
Gemfile
1 # gem 'sqlite3' ←コメントアウト 2 3group :development, :test do 4 # Call 'byebug' anywhere in the code to stop execution and get a debugger console 5 gem 'byebug', platforms: [:mri, :mingw, :x64_mingw] 6 gem 'sqlite3' ←追記 7end 8 9group :production do ←以下追記 10 gem 'pg' 11end
この--without production
オプションによって、上記のようにproduction(本番環境)のみ使用する gem を開発環境に導入しないようにできる、という理解で合っているでしょうか?
いずれにせよ、上記のようにbundle install --without production
を使ってデータベースの設定を変更し、その後アプリを Heroku にデプロイして動作確認まで終了しました。
そして、冒頭で触れた画像投稿機能の件ですが、ここでgem 'cloudinary'
を追加する場合、Gemfile のどこにgem 'cloudinary'
を書けばいいのか、また、bundle install
のみでいいのか、疑問が生じました。
本題
ActiveStorage::Service::CloudinaryServiceを参考に cloudinary を導入しようと思います。
上記の Gemfile に
gem 'cloudinary', require: false
gem 'activestorage-cloudinary-service'
を追記したいのですが、書く場所はどこになるのでしょうか。
本番環境で使用するわけですので、group :production do ~ end 間になるのでしょうか。
あるいは development, test, production 全ての環境に適応させるべきなのでしょうか。
また、bundle install
する際に、何かオプションを付ける必要はあるのでしょうか。
現状では、上述のように以前bundle install --without production
を行ったため、.bundle/config
にBUNDLE_WITHOUT: "production"
が設定されています。このため、bundle install
しただけではgem 'cloudinary'
が本番環境に適応されないのかなと思うのですが。
教えていただきたいこと
gem 'cloudinary'
は Gemfile のどこに書けばいいのでしょうか。- この場合、
bundle install
にはどのようなオプションが必要でしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。