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解决。。我遵循以下步骤:
- 我安装了
(我安装了0.9.1 gem)gem安装rake-v=0.9.2
- 用
gem卸载rake-v=0.9.1删除了0.9.1
- 使用
捆绑更新更新更新
- 然后,
显示了一个警告,db:migrate
通过在Rake文件中添加以下内容,解决了这个问题warning:rakedsl方法的全局访问被弃用。请……
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
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