【问题标题】:Unable to run the rails generator for Draper无法为 Draper 运行 rails 生成器
【发布时间】:2013-01-02 11:41:45
【问题描述】:

我使用的是 Ruby 1.9.3 和 Rails 3.0.11。我最近安装了 Draper(0.12.0) gem,但我无法运行它的生成器。当我尝试在 Post 模型上运行生成器时出现以下错误:-

rails generate decorator Post
/home/mohnish/.rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.0.11/lib/active_support/whiny_nil.rb:48:in `method_missing': undefined method `config' for nil:NilClass (NoMethodError)
    from /home/mohnish/.rvm/gems/ruby-1.9.3-p194/gems/draper-0.12.0/lib/draper/railtie.rb:6:in `block in <class:Railtie>'
    from /home/mohnish/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.0.11/lib/rails/railtie.rb:189:in `call'
    from /home/mohnish/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.0.11/lib/rails/railtie.rb:189:in `each'
    from /home/mohnish/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.0.11/lib/rails/railtie.rb:189:in `load_generators'
    from /home/mohnish/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.0.11/lib/rails/application.rb:147:in `block in load_generators'
    from /home/mohnish/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.0.11/lib/rails/application/railties.rb:11:in `each'
    from /home/mohnish/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.0.11/lib/rails/application/railties.rb:11:in `all'
    from /home/mohnish/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.0.11/lib/rails/application.rb:147:in `load_generators'
    from /home/mohnish/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.0.11/lib/rails/generators.rb:319:in `load_generators_from_railties!'
    from /home/mohnish/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.0.11/lib/rails/generators.rb:278:in `lookup'
    from /home/mohnish/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.0.11/lib/rails/generators.rb:141:in `find_by_namespace'
    from /home/mohnish/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.0.11/lib/rails/generators.rb:161:in `invoke'
    from /home/mohnish/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.0.11/lib/rails/commands/generate.rb:10:in `<top (required)>'
    from /home/mohnish/.rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.0.11/lib/active_support/dependencies.rb:239:in `require'
    from /home/mohnish/.rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.0.11/lib/active_support/dependencies.rb:239:in `block in require'
    from /home/mohnish/.rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.0.11/lib/active_support/dependencies.rb:225:in `block in load_dependency'
    from /home/mohnish/.rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.0.11/lib/active_support/dependencies.rb:593:in `new_constants_in'
    from /home/mohnish/.rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.0.11/lib/active_support/dependencies.rb:225:in `load_dependency'
    from /home/mohnish/.rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.0.11/lib/active_support/dependencies.rb:239:in `require'
    from /home/mohnish/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.0.11/lib/rails/commands.rb:17:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'

任何关于如何调试的输入都会非常有帮助。

谢谢。

【问题讨论】:

    标签: ruby-on-rails-3 decorator ruby-1.9.3 draper


    【解决方案1】:

    问题是 v0.12.0 中的这一部分(您正在使用的那个)https://github.com/drapergem/draper/blob/v0.12.0/lib/draper/railtie.rb#L5-L8

    当我查看主分支时,他们将代码更改为:https://github.com/drapergem/draper/blob/master/lib/draper/railtie.rb#L5-L10

    您应该将您的 draper gem 升级到最新版本,看看错误是否仍然存在。

    【讨论】:

    • 谢谢,这工作(我使用了最新的 gem)。我只是想知道一件事..您究竟是如何在所有可能引发错误的文件中调试它的错误的 。另外,您指的是导致上述问题的 Rails 版本的该文件的第 6 行正确 wrt 错误,对吗?
    • 您可以从您发布的堆栈跟踪中看到这一点。 method_missing 错误通常意味着某些代码已损坏,因此无法执行。这就是我首先检查堆栈跟踪的最顶层的方式。如果您从上到下处理堆栈跟踪,您将从:/home/mohnish/.rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.0.11/lib/active_support/whiny_nil 开始。 rb:48 这是来自 rails 的补丁,通常不是问题本身。下一行是 draper gem:冒号后面的“/draper/railtie.rb:6”可以看到行号。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-11
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 2012-08-21
    相关资源
    最近更新 更多