неинициализированная константа Rake :: DSL в Ruby Gem - PullRequest
33 голосов
/ 07 июня 2011

Я работал над обновлением своего гема (whm_xml на https://github.com/ivanoats/whm_xml_api_ruby), чтобы он работал с ruby ​​1.9.2, последними rubygems, последним компоновщиком, последним rdoc, последним рейком. Он отлично работает в 1.8.7, но имеет ошибку «неинициализированная константа Rake :: DSL» только в 1.9.2. Я думал, что грабли 0.9.2 исправили это, но, возможно, нет? Я много читал о StackOverflow, но все еще застрял. Любые идеи о том, где искать?

ivan:~/Development/ruby/whm_xml_api_ruby [git:master+]  → bundle exec rake -T
(in /Users/ivan/Development/ruby/whm_xml_api_ruby)
rake aborted!
uninitialized constant Rake::DSL
/Users/ivan/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/rake.rb:2482:in `const_missing'
/Users/ivan/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.2/lib/rake/tasklib.rb:8:in `<class:TaskLib>'
/Users/ivan/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.2/lib/rake/tasklib.rb:6:in `<module:Rake>'
/Users/ivan/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.2/lib/rake/tasklib.rb:3:in `<top (required)>'
/Users/ivan/.rvm/gems/ruby-1.9.2-p180/gems/rdoc-3.6.1/lib/rdoc/task.rb:37:in `require'
/Users/ivan/.rvm/gems/ruby-1.9.2-p180/gems/rdoc-3.6.1/lib/rdoc/task.rb:37:in `<top (required)>'
/Users/ivan/Development/ruby/whm_xml_api_ruby/Rakefile:3:in `require'
/Users/ivan/Development/ruby/whm_xml_api_ruby/Rakefile:3:in `<top (required)>'
/Users/ivan/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/rake.rb:2373:in `load'
/Users/ivan/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/rake.rb:2373:in `raw_load_rakefile'
/Users/ivan/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/rake.rb:2007:in `block in load_rakefile'
/Users/ivan/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/rake.rb:2058:in    `standard_exception_handling'
/Users/ivan/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/rake.rb:2006:in `load_rakefile'
/Users/ivan/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/rake.rb:1991:in `run'
/Users/ivan/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.2/bin/rake:32:in `<top (required)>'
/Users/ivan/.rvm/gems/ruby-1.9.2-p180/bin/rake:19:in `load'
/Users/ivan/.rvm/gems/ruby-1.9.2-p180/bin/rake:19:in `<main>'

Ответы [ 4 ]

55 голосов
/ 07 июня 2011

Этот SO вопрос может вам помочь. Есть предложение добавить require 'rake/dsl_definition' выше require 'rake' в ваш Rakefile.

3 голосов
/ 16 июня 2011

Я дурачился с включенным Rake :: DSL и т. Д. И только что получил другие ошибки.

добавление

gem 'rake', '0.8.7'

в Gemfile, кажется, работает для меня

3 голосов
/ 07 июня 2011

Я думаю, что это произошло с выпуском рейка 0.9.0.Попробуйте добавить это в свой Gemfile: gem 'rake', '0.8.7'

Обновление

Вы можете попробовать добавить

include Rake::DSL if defined?(Rake::DSL)

в свое приложение;однажды это сработало для моего приложения на Rails.

1 голос
/ 08 июня 2011

У меня была та же проблема с 0.9.1, установил 0.9.2, и он работал, но команда db: migrate отправила сообщение. ПРЕДУПРЕЖДЕНИЕ: Глобальный доступ к методам Rake DSL устарел.Пожалуйста .... было решено добавить в файл rake модуль :: yourappname класс Приложение включает в себя конец Rake :: DSL и требует 'rake / dsl_definition' перед записью .. LoadTask

...