質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

1207閲覧

デプロイ時にcredentials.yml.enc周りのエラー

pecchan

総合スコア592

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2021/04/04 08:11

編集2021/04/04 09:12

rails6.1
herokuにデプロイ中に以下のエラーが出て失敗しました。

remote: Running: rake assets:precompile remote: rake aborted! remote: NoMethodError: undefined method `[]' for nil:NilClass remote: /tmp/build_414aed34/config/initializers/carrierwave.rb:11:in `block in <main>' remote: /tmp/build_414aed34/vendor/bundle/ruby/3.0.0/gems/carrierwave-2.2.0/lib/carrierwave/uploader/configuration.rb:174:in `configure' remote: /tmp/build_414aed34/vendor/bundle/ruby/3.0.0/gems/carrierwave-2.2.0/lib/carrierwave.rb:14:in `configure' remote: /tmp/build_414aed34/config/initializers/carrierwave.rb:5:in `<main>' remote: /tmp/build_414aed34/vendor/bundle/ruby/3.0.0/gems/bootsnap-1.7.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:59:in `load' remote: /tmp/build_414aed34/vendor/bundle/ruby/3.0.0/gems/bootsnap-1.7.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb

carriewaveによる画像の保存先を設定し、デプロイしたら今回のエラーでした。

「aws_access_key_id: Rails.application.credentials.aws[:access_key_id],」の行でエラーになってるようです。

config\initializers\carrierwave.rb

ruby

1require 'carrierwave/storage/abstract' 2require 'carrierwave/storage/file' 3require 'carrierwave/storage/fog' 4 5CarrierWave.configure do |config| 6 if Rails.env.production? 7 config.storage = :fog 8 config.fog_provider = 'fog/aws' 9 config.fog_credentials = { 10 provider: 'AWS', 11 aws_access_key_id: Rails.application.credentials.aws[:access_key_id], 12 aws_secret_access_key: Rails.application.credentials.aws[:secret_access_key], 13 region: 'ap-northeast-1' 14 } 15 16 config.fog_directory = 'xxxx' 17 config.asset_host = 'https://s3-ap-northeast-1.amazonaws.com/xxxx' 18 else 19 config.storage :file 20 config.enable_processing = false if Rails.env.test? 21 end 22 23 24end 25

ローカル環境では特にエラーなく動いてます。

何が原因でデプロイ失敗してるのか分かりません。
先輩方教えていただけないでしょうか?

app\uploaders\image_uploader.rb

ruby

1# require 'logger' 2class ImageUploader < CarrierWave::Uploader::Base 3 # Include RMagick or MiniMagick support: 4 # include CarrierWave::RMagick 5 # include CarrierWave::MiniMagick 6 7 include CarrierWave::MiniMagick 8 #process resize_to_limit: [100, 100] 9 process resize_to_fill: [600, 600, "Center"] 10 #process resize_to_fit: [200, 200] 11 12 if Rails.env.development? 13 storage :file 14 elsif Rails.env.test? 15 storage :file 16 else 17 storage :fog 18 end 19 20 # Override the directory where uploaded files will be stored. 21 # This is a sensible default for uploaders that are meant to be mounted: 22 def store_dir 23 "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 24 end 25 26 # Provide a default URL as a default if there hasn't been a file uploaded: 27 # def default_url(*args) 28 # # For Rails 3.1+ asset pipeline compatibility: 29 # # ActionController::Base.helpers.asset_path("fallback/" + [version_name, "default.png"].compact.join('_')) 30 # 31 # "/images/fallback/" + [version_name, "default.png"].compact.join('_') 32 # end 33 34 # Process files as they are uploaded: 35 # process scale: [200, 300] 36 # 37 # def scale(width, height) 38 # # do something 39 # end 40 41 # Create different versions of your uploaded files: 42 version :thumb do 43 process resize_to_fit: [50, 50] 44 end 45 46 # Add a white list of extensions which are allowed to be uploaded. 47 # For images you might use something like this: 48 def extension_whitelist 49 %w(jpg jpeg gif png) 50 end 51 52 # Override the filename of the uploaded files: 53 # Avoid using model.id or version_name here, see uploader/store.rb for details. 54 # def filename 55 56 # logger = Logger.new(STDOUT) 57 # logger.debug "++++++ filename : #{original_filename}" 58 59 # #"something.jpg" if original_filename 60 # "#{secure_token}_#{original_filename}" if original_filename.present? 61 62 # end 63 64 # protected 65 # def secure_token 66 # var = :"@#{mounted_as}_secure_token" 67 # model.instance_variable_get(var) or model.instance_variable_set(var, SecureRandom.uuid) 68 # end 69 70end 71

credentials.yml.encへキーは入力済みで、
railsコンソールから取得できました。

[1] pry(main)> Rails.application.credentials.aws[:access_key_id] => "xxxxxxxxxxxxxxxx"

teratail内に同一のエラーメッセージがありました。
参考に、herokuに環境変数の設定しましたが、相変わらずでした。
https://teratail.com/questions/248349

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

投稿2021/04/04 09:36

pecchan

総合スコア592

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問