Rails 3.2 を使用してローカルで開発しているときに、次のエラー メッセージが定期的に表示されます。
In order to use #url_for, you must include routing helpers explicitly. For instance, `include Rails.application.routes.url_helpers
このエラーは、非常に単純なlink_to
呼び出しでビューからスローされます。これらのルーティング ヘルパーは自動的に含まれており、このようなエラーはスローされません。エラーが発生している場所ではないと思いますが、完全を期すためにエラーダンプの例を投稿します。
Completed 500 Internal Server Error in 233ms
ActionView::Template::Error (In order to use #url_for, you must include routing helpers explicitly. For instance, `include Rails.application.routes.url_helpers):
1: <%= form_tag products_path do %>
app/views/layouts/_search_banner.html.erb:1:in `_app_views_layouts__search_banner_html_erb___3528929561490713150_70155778060240'
app/views/pages/new.html.erb:1:in `_app_views_pages_new_html_erb__29715639072237790_70155789748980'
表示される前に、すべてのページを適切に表示できます。表示された後、正常にロードされたばかりの同じページが同じエラーで失敗します。エラーが表示されたら、それを修正する唯一の方法は、ローカルの Rails サーバーを終了して再起動することです。サーバーを再起動するとすぐにエラーが消え、すべて正常に動作するようになります。
また、このエラーは自分のコンピューターでローカルにのみ表示されます。コードは Heroku にデプロイされており、このエラーは数か月のデプロイで表示されておらず、同じコードを操作している他のチーム メンバーはエラーを確認していません。編集:同じコードを操作している他のチーム メンバーにも同じエラーが表示されます。
このエラーは、明らかな原因がないのにどこからともなく現れることもありますが、私が気づいた傾向がいくつかあります。別のエラーの直後に表示されることがよくあります。また、Rails サーバーがページをロードせずにしばらくアイドル状態になっている場合にも表示される可能性が高くなります。
編集:詳細情報 Rails バージョン: 3.2.13 Ruby バージョン: 2.0.0
完全なスタック トレースはここにあります
アクションでエラーをスローするコードを記述し、そのアクションにリクエストを送信してから、アプリケーション内の他のページにアクセスしようとすることで、エラーを発生させました。興味深いことに、私が使用しようとした最初のエラーはゼロによる除算であり、エラーは発生しませんでした。次に、Array[] エラーの未定義メソッドを作成しました。その結果、ここで説明するエラーが発生しました。
編集: Rails 2.3 スタイルのプラグインの非推奨の警告 Heroku にデプロイすると、次のエラーが表示されます。
DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins!
Support for these plugins will be removed in Rails 4.0.
Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb.
See the release notes for more on this: http://weblog.rubyonrails.org/2012/1/4/rails-3-2-0-rc2-has-been-released.
(called from <top (required)> at /tmp/build_175439d1-f385-43bd-bf52-ebcae817e70b/Rakefile:7)
このエラーは、Rakefile の行でスローされますMyApp::Application.load_tasks
。vendor/plugin
ディレクトリにファイルがありません。