前提・実現したいこと
Railsでローカル環境でアプリを作成し、
Herokuへpushする際にエラーが発生し、原因を探っております。
発生している問題・エラーメッセージ
エラーメッセージ remote: rake aborted! remote: NoMethodError: undefined method `[]' for nil:NilClass ### 該当のソースコード remote: rake aborted! remote: NoMethodError: undefined method `[]' for nil:NilClass remote: /tmp/build_4fbf04da/vendor/bundle/ruby/2.6.0/gems/sprockets-3.7.2/lib/sprockets/sass_processor.rb:278:in `sprockets_context' remote: /tmp/build_4fbf04da/vendor/bundle/ruby/2.6.0/gems/sprockets-3.7.2/lib/sprockets/sass_processor.rb:124:in `asset_path' remote: /tmp/build_4fbf04da/vendor/bundle/ruby/2.6.0/gems/sprockets-3.7.2/lib/sprockets/sass_processor.rb:137:in `asset_url' remote: /tmp/build_4fbf04da/vendor/bundle/ruby/2.6.0/gems/sprockets-3.7.2/lib/sprockets/sass_processor.rb:155:in `image_url' remote: /tmp/build_4fbf04da/vendor/bundle/ruby/2.6.0/gems/sass-3.7.4/lib/sass/script/tree/funcall.rb:151:in `block in _perform' remote: /tmp/build_4fbf04da/vendor/bundle/ruby/2.6.0/gems/sass-3.7.4/lib/sass/stack.rb:108:in `block in with_function' remote: /tmp/build_4fbf04da/vendor/bundle/ruby/2.6.0/gems/sass-3.7.4/lib/sass/stack.rb:135:in `with_frame' remote: /tmp/build_4fbf04da/vendor/bundle/ruby/2.6.0/gems/sass-3.7.4/lib/sass/stack.rb:108:in `with_function' remote: /tmp/build_4fbf04da/vendor/bundle/ruby/2.6.0/gems/sass-3.7.4/lib/sass/script/tree/funcall.rb:149:in `_perform' remote: /tmp/build_4fbf04da/vendor/bundle/ruby/2.6.0/gems/sass-3.7.4/lib/sass/script/tree/node.rb:50:in `perform' remote: /tmp/build_4fbf04da/vendor/bundle/ruby/2.6.0/gems/sass-3.7.4/lib/sass/tree/visitors/perform.rb:398:in `visit_prop' remote: /tmp/build_4fbf04da/vendor/bundle/ruby/2.6.0/gems/sass-3.7.4/lib/sass/tree/visitors/base.rb:36:in `visit' remote: /tmp/build_4fbf04da/vendor/bundle/ruby/2.6.0/gems/sass-3.7.4/lib/sass/tree/visitors/perform.rb:158:in `block in visit' remote: /tmp/build_4fbf04da/vendor/bundle/ruby/2.6.0/gems/sass-3.7.4/lib/sass/stack.rb:79:in `block in with_base' remote: /tmp/build_4fbf04da/vendor/bundle/ruby/2.6.0/gems/sass-3.7.4/lib/sass/stack.rb:135:in `with_frame' remote: /tmp/build_4fbf04da/vendor/bundle/ruby/2.6.0/gems/sass-3.7.4/lib/sass/stack.rb:79:in `with_base' remote: /tmp/build_4fbf04da/vendor/bundle/ruby/2.6.0/gems/sass-3.7.4/lib/sass/tree/visitors/perform.rb:158:in `visit' remote: /tmp/build_4fbf04da/vendor/bundle/ruby/2.6.0/gems/sass-3.7.4/lib/sass/tree/visitors/perform.rb:440:in `block (2 levels) in visit_rule' remote: /tmp/build_4fbf04da/vendor/bundle/ruby/2.6.0/gems/sass-3.7.4/lib/sass/tree/visitors/perform.rb:440:in `map' remote: /tmp/build_4fbf04da/vendor/bundle/ruby/2.6.0/gems/sass-3.7.4/lib/sass/tree/visitors/perform.rb:440:in `block in visit_rule' remote: /tmp/build_4fbf04da/vendor/bundle/ruby/2.6.0/gems/sass-3.7.4/lib/sass/tree/visitors/perform.rb:179:in `with_environment' remote: /tmp/build_4fbf04da/vendor/bundle/ruby/2.6.0/gems/sass-3.7.4/lib/sass/tree/visitors/perform.rb:438:in `visit_rule' remote: /tmp/build_4fbf04da/vendor/bundle/ruby/2.6.0/gems/sass-3.7.4/lib/sass/tree/visitors/base.rb:36:in `visit' remote: /tmp/build_4fbf04da/vendor/bundle/ruby/2.6.0/gems/sass-3.7.4/lib/sass/tree/visitors/perform.rb:158:in `block in visit' remote: /tmp/build_4fbf04da/vendor/bundle/ruby/2.6.0/gems/sass-3.7.4/lib/sass/stack.rb:79:in `block in with_base' (中略) remote: /tmp/build_4fbf04da/vendor/bundle/ruby/2.6.0/gems/sprockets-3.7.2/lib/sprockets/legacy.rb:105:in `block in logical_paths' remote: /tmp/build_4fbf04da/vendor/bundle/ruby/2.6.0/gems/sprockets-3.7.2/lib/sprockets/legacy.rb:104:in `each' remote: /tmp/build_4fbf04da/vendor/bundle/ruby/2.6.0/gems/sprockets-3.7.2/lib/sprockets/legacy.rb:104:in `logical_paths' remote: /tmp/build_4fbf04da/vendor/bundle/ruby/2.6.0/gems/sprockets-3.7.2/lib/sprockets/manifest.rb:140:in `find' remote: /tmp/build_4fbf04da/vendor/bundle/ruby/2.6.0/gems/sprockets-3.7.2/lib/sprockets/manifest.rb:186:in `compile' remote: /tmp/build_4fbf04da/vendor/bundle/ruby/2.6.0/gems/sprockets-rails-3.2.2/lib/sprockets/rails/task.rb:67:in `block (3 levels) in define' remote: /tmp/build_4fbf04da/vendor/bundle/ruby/2.6.0/gems/sprockets-3.7.2/lib/rake/sprocketstask.rb:147:in `with_logger' remote: /tmp/build_4fbf04da/vendor/bundle/ruby/2.6.0/gems/sprockets-rails-3.2.2/lib/sprockets/rails/task.rb:66:in `block (2 levels) in define' remote: Tasks: TOP => assets:precompile remote: (See full trace by running task with --trace) remote: ! remote: ! Precompiling assets failed. ```Rails: ローカルリポジトリのmasterブランチにマージし、% git push heroku master後のターミナルの出力 [バージョン] ruby2.6.5 Rails6.0.0(アプリ作成時の指定バージョン) gem 3.0.3/heroku 7.47.2/git 2.24.3 ### 試したこと CSSのscssのファイルが適用されていないことが原因だと考え、app/assets/application.cssのファイル名をapplication.css.scssに変更して再度プッシュしましたが、うまくいきませんでした。また、上記該当のファイルは自分のPCのRailsアプリケーション上で確認することができない(作成していない)です。 参考: [RailsでアプリをHerokuにあげる時のエラー各種](https://qiita.com/pokohide/items/017afa5be3b7dc200a8d) [NoMethodError: undefined method `[]' for nil:NilClass when pushing to Heroku ](https://stackoverflow.com/questions/32939496/nomethoderror-undefined-method-for-nilnilclass-when-pushing-to-heroku) [nil:NilClassの「NoMethodError」への対処方法](https://www.ryotaku.com/entry/2019/02/18/231458) ### お願い 一人では解決が難しいためアドバイスを頂けると有難いです。
URLは https://teratail.com/help/question-tips#questionTips3-7 の [リンク] で [リンク先の説明](http...) に修正してください。
ご意見ありがとうございます。修正しました。
/tmp/build_4fbf04da/vendor/bundle/ruby/2.6.0/gems/sass-3.7.4
ではないエラー行はありませんでしたか?
エラー行としてはないですね。警告文はありました。
①
remote: The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x86-mswin32, x64-mingw32, java. To add those platforms to the bundle, run `bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32 java`.
②
remote: DEPRECATION WARNING: Including LoggerSilence is deprecated and will be removed in Rails 6.1. Please use `ActiveSupport::LoggerSilence`
③
[3/4] Linking dependencies...
warning " > webpack-dev-server@3.11.0" has unmet peer dependency "webpack@^4.0.0 || ^5.0.0".
warning "webpack-dev-server > webpack-dev-middleware@3.7.2" has unmet peer dependency "webpack@^4.0.0".
すみません。heroku logsの中にありました。
2020-11-14T11:52:20.956715+00:00 app[web.1]: [ef363e9e-56f5-43ef-ad77-7fb469da6541] Started GET "/" for 106.154.139.206 at 2020-11-14 11:52:20 +0000
2020-11-14T11:52:20.957715+00:00 app[web.1]: [ef363e9e-56f5-43ef-ad77-7fb469da6541]
2020-11-14T11:52:20.957716+00:00 app[web.1]: [ef363e9e-56f5-43ef-ad77-7fb469da6541] ActionController::RoutingError (No route matches [GET] "/"):
ちなみに、VScodeのファイルでは、
[config/routes.rb]
Rails.application.routes.draw do
devise_for :users,
path_names: {
sign_up: ''
},
controllers: {
registrations: "users/registrations",
sessions: "users/sessions"
}
root "items#index"
resources :users
end
と記述しています。
そのエラーも気になりますが、質問にあるエラーとは違うような気がします。発生日時は一致してますか?
それと
assets:precompileはしていますか
発生日時は一致しています。また、一度assets:precompileした後に、再度herokuにプッシュしたのですが、出力結果に変化はありませんでした。
[config/application.rb]
config.assets.initialize_on_precompile = false
[ターミナル]
heroku run bundle exec rake assets:precompile RAILS_ENV=production -a [appname]
それと、undefined method `[]' for nil:NilClassエラーに対して、VScode上に上記エラー行の空の該当ファイルを作成しても出力に変化はなかったのですが、ローカルではなく、Heroku上のファイルを直接編集する手段はないでしょうか。sprockets-3.7.2,sass-3.7.4,sprockets-rails-3.2.2はgemfileに保存されています。
※環境変数が設定されていない可能性も考えたのですが、
% EDITOR="vi" bin/rails credentials:edit
で、credentials.yml.enc上のmaster.keyも確認したので設定は問題ないと思います。
回答1件
あなたの回答
tips
プレビュー