Не удалось запустить генератор рельсов для Draper

Я использую Ruby 1.9.3 и Rails 3.0.11. Недавно я установил гем Draper(0.12.0), но не могу запустить его генераторы. Я получаю следующую ошибку, когда пытаюсь запустить генератор на модели 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>'

Любые входные данные о том, как я могу отладить это, были бы действительно полезны.

Спасибо.


person boddhisattva    schedule 02.01.2013    source источник


Ответы (1)


Проблема заключается в этом разделе в v0.12.0 (тот, который вы используете) https://github.com/drapergem/draper/blob/v0.12.0/lib/draper/railtie.rb#L5-L8

Когда я смотрю на ветку master, код меняется на следующий: https://github.com/drapergem/draper/blob/master/lib/draper/railtie.rb#L5-L10

Вам следует обновить гем draper до последней версии и посмотреть, возникает ли ошибка по-прежнему.

person Yves Senn    schedule 02.01.2013
comment
Спасибо, это сработало (я использовал последний драгоценный камень). Мне просто любопытно узнать одну вещь ... как именно вы смогли отладить, что из всех файлов, которые могли вызвать ошибку «draper / lib / draper / railtie.rb», был именно тот файл, в котором происходят некоторые вещи. неправильно . Кроме того, вы имеете в виду строку 6 этого файла с ошибкой версии Rails, которая вызывает вышеуказанную проблему, верно? - person boddhisattva; 02.01.2013
comment
Вы можете видеть это из трассировки стека, которую вы опубликовали. Ошибка 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/railtie.rb:6 после двоеточия вы можете увидеть номер строки. - person Yves Senn; 02.01.2013