在使用 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
。