1

私はこれで本当に悪い日を過ごしています: #rails-noob #githubsucks #herokufail #abouttosmashmylaptop. わかりました、気分が良くなりました。

Rails 3.2.12/ruby 1.9.3 を使用してアプリを作成しました。ローカルで動作しています-まったく問題はありません-github.comの問題がいくつかありますが、githubでローカルに保存しました(この質問Gitの重複を参照してください-パックが見つかりません)。そこで、github.com 経由ではなく、ローカルで Heroku にデプロイしようとしました。動作しているようです - 明らかな問題はありませんが、実際にアプリケーションを開こうとすると (つまり、Web サイトを参照すると)、悪名高い「申し訳ありませんが、問題が発生しました」というメッセージが表示されます。これが私がこれまでに試したことです:

  1. Heroku のステータス: 本番環境でも開発環境でも既知の問題はありません
  2. Heroku run rake db:migrate
  3. Heroku pg:reset (続いて #2)
  4. 「gem 'pg'」の確認は、本番用のgemfileにあります(ただし、開発用にはまだsqlite3があります)
  5. /config/production.rb で「config.assets.compile = false」を「true」に切り替えました
  6. 私はRails 3.2.1を使用しているので、cedarスタックにいることを確認しました
  7. また、「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 つの問題に気付きました。

  1. gemfile で自分の Ruby バージョンを明確に宣言していませんでした (現在は完了しています)。と、
  2. プリコンパイルされていないアセットの問題 - 「nil:NilClass の未定義のメソッド '[]'」。Heroku のアドバイス ( https://devcenter.heroku.com/articles/rails-asset-pipeline ) に従って、コマンド ラインからアセットを手動でコンパイルしようとしましたが、喜びはありません - 同じ nil:NilClass エラーです。

関連する問題か、それともまったく新しい問題か?

更新 2: いくつかのコメント/質問への応答:

  1. culix、私は DevCenter を試しました (アップデート 1 の #2 を参照)。
  2. ログレベルは :debug に設定されていますが、間違っているのでしょうか? 学びながら学んでいます - 本番環境がロードされない場合、どうすればログ情報を取得できますか?
  3. NilClass に関しては、アプリは開発中で動作しているため、アセットやデータベースなど、本番環境でロードする必要があるものである必要がありますか? 上記で生成されたエラーを更新しました。以前にいくつかの重要な情報を削除した可能性があります。私はそれがapplication.cssにあるように見えます.Rails 3.2のブートストラップが本番環境の問題になる可能性があることを他の投稿が示唆しているようです。
  4. スラグとローカル コンパイルの両方を試しましたが、どちらも機能しません。

私を導くための 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'

4

2 に答える 2

1

わかりました、他の誰かが同様の問題を抱えている場合に備えて、自分の質問に答えます。最終的に、アセット パイプラインに関連するいくつかの問題が発生しました。config.assets.precompile += %w( various file extensions)application.rb ファイルの行のどこかに、この質問に対する回答 ( bootstrap-sass: Undefined variable: "$baseLineHeight" ) に従って、行にワイルドカード演算子 (*) をいくつか入れます。これらを削除したら、開発中にアセットを再度プリコンパイルし ( $ RAILS_ENV=development rake assets:precompile)、git にプッシュし、次に heroku にプッシュしました。

途中で、Webrick からの大量の警告/エラーに関する問題も発生しました。gemfile で Webrick のバージョンを指定することで、これを解決しました。

group :development do
   gem 'webrick', '~> 1.3.1'
end

私のようにアセットとデプロイメントに不慣れな場合は、RoR ( http://guides.rubyonrails.org/asset_pipeline.html ) と Heroku ( https://devcenter.heroku.com/articles/rails- ) の両方を読む価値があります。 asset-pipeline ) はアセット パイプラインのガイドであり、Ryan Bate のスクリーンキャスト #278 と #341 もご覧ください。

于 2013-08-26T02:02:12.737 に答える
0

なぜアセットのエラーだと思いますか?

あなたは ActionView::Template::Error を持っています。それをデバッグしてみてください。そこでは、nil オブジェクトまたは smthg で配列を呼び出します。

PS 移行に合格しましたか?

heroku run rake db:migrate
于 2013-08-11T08:26:46.523 に答える