私はこれで本当に悪い日を過ごしています: #rails-noob #githubsucks #herokufail #abouttosmashmylaptop. わかりました、気分が良くなりました。
Rails 3.2.12/ruby 1.9.3 を使用してアプリを作成しました。ローカルで動作しています-まったく問題はありません-github.comの問題がいくつかありますが、githubでローカルに保存しました(この質問Gitの重複を参照してください-パックが見つかりません)。そこで、github.com 経由ではなく、ローカルで Heroku にデプロイしようとしました。動作しているようです - 明らかな問題はありませんが、実際にアプリケーションを開こうとすると (つまり、Web サイトを参照すると)、悪名高い「申し訳ありませんが、問題が発生しました」というメッセージが表示されます。これが私がこれまでに試したことです:
- Heroku のステータス: 本番環境でも開発環境でも既知の問題はありません
- Heroku run rake db:migrate
- Heroku pg:reset (続いて #2)
- 「gem 'pg'」の確認は、本番用のgemfileにあります(ただし、開発用にはまだsqlite3があります)
- /config/production.rb で「config.assets.compile = false」を「true」に切り替えました
- 私はRails 3.2.1を使用しているので、cedarスタックにいることを確認しました
- また、「application.rb」ファイルでアセットを有効にしました – 「config.assets.enabled = true」</li>
Heroku のログなどを何度も確認しましたが、500 エラーがあることを除けば問題はありません。私が読んだことから、以前 (Rails 4.0 より前) にこれらのエラーを引き起こす Heroku の問題があった可能性があるようですが、いずれかへの参照を見つけることができないようです。固定されている、または b. それを修正する方法。
提案?
更新: culix の提案に従って、ログ レベルをオンにしようとしましたが、ログ出力が変更されないようです (タイム コードが削除されました)。
app[web.1]: 2013-08-11 07:30:40 +0000 で 124.148.153.24 の GET "/" を開始しました
app[web.1]: StaticPagesController#splash による HTML としての処理
app[web.1]: レイアウト/アプリケーション内で static_pages/splash.html.erb をレンダリング (2.6ms)
heroku[ルーター]: at=info method=GET path=/ host=genericappname.herokuapp.com fwd="124.148.153.24" dyno=web.1 connect=2ms service=1470ms status=500 bytes=643
app[web.1]: 1459 ミリ秒で 500 内部サーバー エラーを完了しました app[web.1]: ActionView::Template::Error (nil:NilClass の未定義のメソッド `[]'
app[web.1]: (/app/app/assets/stylesheets/application.css 内)):
アプリ [web.1]: 2:
アプリ [web.1]: 3:
app[web.1]: 4: <%= full_title(yield(:title)) %>
app[web.1]: 5: <%= stylesheet_link_tag "アプリケーション", :media => "すべて" %>
app[web.1]: 6: <%= javascript_include_tag "アプリケーション" %>
app[web.1]: 7: <%= csrf_meta_tags %>
app[web.1]: 8: <%= render 'layouts/shim' %>
アプリ [web.1]: アプリ/v
しかし、変更を Heroku に戻す際に、次の 2 つの問題に気付きました。
- gemfile で自分の Ruby バージョンを明確に宣言していませんでした (現在は完了しています)。と、
- プリコンパイルされていないアセットの問題 - 「nil:NilClass の未定義のメソッド '[]'」。Heroku のアドバイス ( https://devcenter.heroku.com/articles/rails-asset-pipeline ) に従って、コマンド ラインからアセットを手動でコンパイルしようとしましたが、喜びはありません - 同じ nil:NilClass エラーです。
関連する問題か、それともまったく新しい問題か?
更新 2: いくつかのコメント/質問への応答:
- culix、私は DevCenter を試しました (アップデート 1 の #2 を参照)。
- ログレベルは :debug に設定されていますが、間違っているのでしょうか? 学びながら学んでいます - 本番環境がロードされない場合、どうすればログ情報を取得できますか?
- NilClass に関しては、アプリは開発中で動作しているため、アセットやデータベースなど、本番環境でロードする必要があるものである必要がありますか? 上記で生成されたエラーを更新しました。以前にいくつかの重要な情報を削除した可能性があります。私はそれがapplication.cssにあるように見えます.Rails 3.2のブートストラップが本番環境の問題になる可能性があることを他の投稿が示唆しているようです。
- スラグとローカル コンパイルの両方を試しましたが、どちらも機能しません。
私を導くための Heroku エラー情報の欠如に苦しんでいるので、その点に関する指示も歓迎します。
更新 3: 'run rake assets:precompile' を実行した後、次の行に沿って、非推奨の警告が大量に表示されました。
vendor/plugins に Rails 2.3 スタイルのプラグインがあります。これらのプラグインのサポートは、Rails 4.0 で削除されます。それらを移動して、gemfile にバンドルします。
しかし、私の vendor/plugins フォルダは空ですか?
また、「rake assets:precompile --trace」を実行しました (新しいコマンドを学習しました!)。エラーが発生した場所で次のようになりました。
** assets:precompile:primary を実行
レーキが中止されました!
/app/app/assets/stylesheets/application.css はすでに必須です
/app/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2/lib/sprockets/base.rb:267:in `circular_call_protection'