Ruby on rails RubyonRails和Rake问题:未初始化的常量Rake::DSL

Ruby on rails RubyonRails和Rake问题:未初始化的常量Rake::DSL,ruby-on-rails,rake,Ruby On Rails,Rake,我遇到了一个非常令人沮丧的问题:愚蠢 问题是如何产生的: $ rails new test_app $ rails generate scaffold new_scaffold field1:string field2:text 这两个都很好,但当我这么做的时候 $ rake db:migrate 我得到以下错误 (in /home/mikhail/test_app) rake aborted! uninitialized constant Rake::DSL /usr/lib/ruby/1

我遇到了一个非常令人沮丧的问题:愚蠢

问题是如何产生的:

$ rails new test_app
$ rails generate scaffold new_scaffold field1:string field2:text
这两个都很好,但当我这么做的时候

$ rake db:migrate
我得到以下错误

(in /home/mikhail/test_app)
rake aborted!
uninitialized constant Rake::DSL
/usr/lib/ruby/1.9.1/rake.rb:2482:in `const_missing'
/usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/tasklib.rb:8:in `<class:TaskLib>'
/usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/tasklib.rb:6:in `<module:Rake>'
/usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/tasklib.rb:3:in `<top (required)>'
/usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/rdoctask.rb:20:in `require'
/usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/rdoctask.rb:20:in `<top (required)>'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks/documentation.rake:1:in `require'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks/documentation.rake:1:in `<top (required)>'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks.rb:15:in `load'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks.rb:15:in `block in <top (required)>'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks.rb:6:in `each'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks.rb:6:in `<top (required)>'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/application.rb:214:in `require'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/application.rb:214:in `initialize_tasks'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/application.rb:139:in `load_tasks'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/application.rb:77:in `method_missing'
/home/mikhail/test_app/Rakefile:7:in `<top (required)>'
/usr/lib/ruby/1.9.1/rake.rb:2373:in `load'
/usr/lib/ruby/1.9.1/rake.rb:2373:in `raw_load_rakefile'
/usr/lib/ruby/1.9.1/rake.rb:2007:in `block in load_rakefile'
/usr/lib/ruby/1.9.1/rake.rb:2058:in `standard_exception_handling'
/usr/lib/ruby/1.9.1/rake.rb:2006:in `load_rakefile'
/usr/lib/ruby/1.9.1/rake.rb:1991:in `run'
/usr/bin/rake:31:in `<main>'
(在/home/mikhail/test_应用程序中)
雷克流产了!
未初始化的常量Rake::DSL
/usr/lib/ruby/1.9.1/rake.rb:2482:in'const_missing'
/usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/tasklib.rb:8:in`'
/usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/tasklib.rb:6:in`'
/usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/tasklib.rb:3:in`'
/usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/rdoctask.rb:20:in'require'
/usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/rdoctask.rb:20:in`'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks/documentation.rake:1:in'require'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks/documentation.rake:1:in`'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks.rb:15:in'load'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks.rb:15:in'block-in'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks.rb:6:in'each'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks.rb:6:in`'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/application.rb:214:in'require'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/application.rb:214:in'initialize_tasks'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/application.rb:139:in'load_tasks'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/application.rb:77:in'method_missing'
/home/mikhail/test_app/Rakefile:7:in`'
/usr/lib/ruby/1.9.1/rake.rb:2373:in'load'
/usr/lib/ruby/1.9.1/rake.rb:2373:in'raw_load_rakefile'
/usr/lib/ruby/1.9.1/rake.rb:2007:in'block in load_rakefile'
/usr/lib/ruby/1.9.1/rake.rb:2058:在“标准异常处理”中
/usr/lib/ruby/1.9.1/rake.rb:2006:in'load_rakefile'
/usr/lib/ruby/1.9.1/rake.rb:1991:in'run'
/usr/bin/rake:31:in`'
我在互联网上查找过类似/相同的错误,人们都有。只是似乎从来没有人能解决这个问题


如何解决此问题?

我也有同样的问题,必须使用rake 0.8.7 gem,而不是之前的0.9.0。Rake.9.0破坏了Rails和其他一些东西,您需要:

gem "rake", "0.8.7"

在您的GEM文件中。

Rails 3.1.rc1已更新。对于您自己的Rakefile,您可以在调用load_任务之前添加此项

module ::YourApplicationName
  class Application
    include Rake::DSL
  end
end

module ::RakeFileUtils
  extend Rake::FileUtilsExt
end

更新:还注意到这里已经给出了答案:

如果不使用Bundler:

sudo gem install rake -v 0.8.7
sudo gem uninstall rake

然后选择卸载0.9.0。

我是Windows XP用户,我也有同样的问题

我在gem文件中输入gem“rake”、“0.8.7”,然后从命令窗口键入以下内容

bundle update rake

这解决了我的问题。

我在上一个答案之后做了一些研究(对不起,我必须在之前做)

所有问题都通过Rake gem 0.9.2解决。。我遵循以下步骤:

  • 我安装了
    gem安装rake-v=0.9.2
    (我安装了0.9.1 gem)
  • gem卸载rake-v=0.9.1删除了0.9.1
  • 使用
    捆绑更新更新更新
  • 然后,
    db:migrate
    显示了一个警告,
    warning:rakedsl方法的全局访问被弃用。请……

    通过在Rake文件中添加以下内容,解决了这个问题

    module ::YourApplicationName  
      class Application
        include Rake::DSL
      end
    end
    
  • 我使用了@databyte建议的
    module::RakeFileUtils extend-Rake::FileUtilsExtend
    选项


这意味着Rake gem 0.9.2运行良好

我需要做的就是使用:

gem install rake

我已经有了0.9.2版,只需要安装。

与上面的Branstar相同-谢谢Branstar

  • 操作系统:Windows Vista
  • 级别:RubyonRails的全新功能
  • 我已经安装了Ruby 1.9.2
我按照指示去做

在“rakedb:migrate”部分之前,所有的工作都在进行中,该部分给了我与原始帖子相同的输出

我跑:

gem install rake
我又跑了一遍:

rake db:migrate
然后我就可以启动RubyonRails服务器,并将一切准备就绪


再次感谢Branstar:-)

阅读Railstutorial(演示应用程序)的第2章时遇到了这个问题。我尝试了这里列出的所有其他答案,但在我这样做之前无法让它工作:

把这个放在你的耙子上面需要“耙子”:

require 'rake/dsl_definition'
通过

我还重新提交并将所有文件推送到Github和Heroku

我同情你(米哈伊尔夫),这真的令人沮丧。我已经疯了差不多一整天了。我甚至卸载了Ruby及其所有相关文件并关闭了我的电脑,但我仍然遇到同样的问题

我从错误消息中得到的是Rake 0.9.2的问题。它似乎没有完全安装好。所以我不得不重新安装
gem安装rake-v=0.9.2

我不确定是否安装了rake–v0.9.1。因此,为了确保安全,我尝试使用
gem uninstall rake-v=0.9.1
删除旧版本。但它向我显示了错误消息

ERROR:  While executing gem ... (Gem::InstallError)
    cannot uninstall, check `gem list -d rake`
好的,所以我检查了我电脑上的所有Rake目录,发现我只有Rake 0.9.2。 然后,为了检查一切是否正常,我使用
rakedb:migrate
进行了迁移。它成功了:)


我想我没有Rake0.9.1,因为我清理了Ruby(-在Windows7系统上)和所有gems。与此同时,Rake 0.9.2没有完全安装。

我通过以下步骤解决了相同的问题:

在文件中:

gem 'rake', '0.9.2'
然后在控制台上运行以下命令:

sudo bundle update rake
然后将以下行添加到Rakefile:

require 'rake/dsl_definition'
include Rake::DSL

重新安装rake gem,它应该可以正常工作:

gem uninstall rake -v=0.9.2 
gem install rake -v=0.9.2
如果没有,请在gem文件中指定版本“0.8.7”。

使用卸载“gem卸载rake”对我有效,我安装了两个版本,所以我重新安装了

“rake db:create”,以确保数据库存在 然后“rake db:migrate”来完成交易

  • 转到您的项目路径
  • module Rake
      module DSL
      end
    end
    
    $ gem install rake -v 0.8.7
    $ gem uninstall rake -v 0.9.2.2
    
    $ bundle exec rake db:migrate
    
    bundle exec rake db:migrate