5

我根据本教程创建了一个 gem/engine:

http://www.themodestrubyist.com/2010/03/05/rails-3-plugins---part-2---writing-an-engine/

但是,尝试在新创建的应用程序中使用 gem 时出现错误。我在尝试访问应用程序时收到“路由错误 - nil:NilClass 的未定义方法 `sub'”。

我在日志文件中唯一能看到的是同样的错误。没有堆栈跟踪/调试跟踪,因此很难弄清楚错误来自哪里。理想情况下,我希望“从 gem”中查看堆栈跟踪,但似乎 rails 不会调试源自应用程序外部的错误?

我正在使用 rvm、ruby 1.9.2、rails 3.0.1。

这是我在 gem 中的 config/routes.rb 文件,尽管我不认为这是调试消息所暗示的路由错误。

Rails.application.routes.draw do
    resources :pictures, :controller => 'morph/pictures'
end

有什么建议么?

4

2 回答 2

15

如果你取消注释

Rails.backtrace_cleaner.remove_silencers!

其中config/initializers/backtrace_silencers.rb将显示更完整的堆栈跟踪。它对我有用。

于 2011-11-30T11:05:43.953 回答
2

您的控制台中有回溯吗?

如果您找不到任何额外的输出,那么您可以在应用程序开头附近的某处放置一个“调试器”语句,并单步执行源代码,直到出现错误。

你也可以对 gem/plugin 源代码做同样的事情。

编辑:看来作者在文章底部有一个演示代码的链接。这也可能有用。

于 2011-02-15T16:05:26.653 回答