【问题标题】:uninitialized constant Rake::DSL in Ruby GemRuby Gem 中未初始化的常量 Rake::DSL
【发布时间】:2011-09-10 05:50:50
【问题描述】:

我一直在努力更新我的 gem(whm_xml at https://github.com/ivanoats/whm_xml_api_ruby),使其能够与 ruby​​ 1.9.2、最新的 ruby​​gems、最新的捆绑程序、最新的 rdoc、最新的 rake 一起使用。它在 1.8.7 中运行良好,但仅在 1.9.2 中出现“未初始化的常量 Rake::DSL”错误。我认为 rake 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>'

【问题讨论】:

    标签: ruby rubygems rake gem


    【解决方案1】:

    我搞砸了 include Rake::DSL 等,但遇到了其他错误。

    添加

    gem '耙子','0.8.7'

    到 Gemfile 似乎对我有用

    【讨论】:

      【解决方案2】:

      我在使用 0.9.1 时遇到了同样的问题,安装了 0.9.2 并且它可以工作,但是 db:migrate 命令发送了一条消息警告:不推荐使用对 Rake DSL 方法的全局访问。请.... 解决了添加到 rake 文件 模块 ::yourappname 类应用 包括 Rake::DSL 结尾 结尾 和 需要'rake/dsl_definition' 在 ..LoadTask 条目之前

      【讨论】:

        【解决方案3】:

        我认为这是 rake 0.9.0 版本中发生的事情。尝试将其放入您的 Gemfile:gem 'rake', '0.8.7'

        更新

        你可以试试添加

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

        到您的应用程序;它曾一度适用于我的 Rails 应用程序。

        【讨论】:

        • 是的,没错。 rake 0.9.2 应该纠正这个问题。另外,如果可能的话,我希望我的 gem 可以使用所有最新版本。
        • 抱歉,我浏览了您的答案,但没有意识到您对此有所了解。我更新了答案以尝试不同的方法。
        【解决方案4】:

        This SO Question 可能会帮助你。建议在您的Rakefile 中在require 'rake' 上方添加require 'rake/dsl_definition'。

        【讨论】:

          猜你喜欢
          • 2011-08-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多