2011-08-09 161 views
0

我有这个红宝石轨道项目,我想做db:migrate。但我得到的唯一的耙子选项是“重新加载耙子任务”,所以当我点击它时,它给了我这个错误。耙宝石问题

[rake --tasks] rake aborted! 
uninitialized constant Rake::DSL 
/usr/lib/ruby/1.8/rake.rb:2503:in `const_missing' 
/var/lib/gems/1.8/gems/rake-0.9.2/lib/rake/tasklib.rb:8 
/var/lib/gems/1.8/gems/rdoc-3.9.1/lib/rdoc/task.rb:37:in `require' 
/var/lib/gems/1.8/gems/rdoc-3.9.1/lib/rdoc/task.rb:37 
/var/lib/gems/1.8/gems/railties-3.0.9/lib/rails/tasks/documentation.rake:2:in `require' 
/var/lib/gems/1.8/gems/railties-3.0.9/lib/rails/tasks/documentation.rake:2 
/var/lib/gems/1.8/gems/railties-3.0.9/lib/rails/tasks.rb:15:in `load' 
/var/lib/gems/1.8/gems/railties-3.0.9/lib/rails/tasks.rb:15 
/var/lib/gems/1.8/gems/railties-3.0.9/lib/rails/tasks.rb:6:in `each' 
/var/lib/gems/1.8/gems/railties-3.0.9/lib/rails/tasks.rb:6 
/var/lib/gems/1.8/gems/railties-3.0.9/lib/rails/application.rb:215:in `require' 
/var/lib/gems/1.8/gems/railties-3.0.9/lib/rails/application.rb:215:in `initialize_tasks' 
/var/lib/gems/1.8/gems/railties-3.0.9/lib/rails/application.rb:139:in `load_tasks' 
/var/lib/gems/1.8/gems/railties-3.0.9/lib/rails/application.rb:77:in `send' 
/var/lib/gems/1.8/gems/railties-3.0.9/lib/rails/application.rb:77:in `method_missing' 
/home/laptop/RubymineProjects/auth/Rakefile:7 
/usr/lib/ruby/1.8/rake.rb:2383:in `load' 
/usr/lib/ruby/1.8/rake.rb:2383:in `raw_load_rakefile' 
/usr/lib/ruby/1.8/rake.rb:2017:in `load_rakefile' 
/usr/lib/ruby/1.8/rake.rb:2068:in `standard_exception_handling' 
/usr/lib/ruby/1.8/rake.rb:2016:in `load_rakefile' 
/usr/lib/ruby/1.8/rake.rb:2000:in `run' 
/usr/lib/ruby/1.8/rake.rb:2068:in `standard_exception_handling' 
/usr/lib/ruby/1.8/rake.rb:1998:in `run' 
/usr/bin/rake:28 

谢谢,迈克尔。

+0

在这里看到类似的(也许是相同的)问题: http://stackoverflow.com/questions/6085610/ruby-on-rails-and-rake-problems-uninitialized-constant-rakedsl – Casper

回答

3

这是一个常见问题。只要按照下列步骤操作:

gem install rake -v=0.9.2(如果你有0.9.1宝石)

gem uninstall rake -v=0.9.1(如果你有0.9.1宝石)

在你的记录看,我看你有没有这样rake-0.9.2我想你可以跳过上面的两个步骤。

bundle update

然后,运行db:migrate会给你这样的错误:WARNING: Global access to Rake DSL methods is deprecated

来解决,这一点,你只需要这两行添加到您的Rakefile

require 'rake/dsl_definition'

顶部

include Rake::DSL

之后它应该工作得很好!

1

您应该在您的Gemfile中专门添加Rake version> = 0.9.1! 某些Rails 3版本存在一个错误,当您使用较旧的Rake版本时,会看到类似这样的奇怪错误。

在你的Gemfile:

gem 'rake' , '>= 0.9.2' 

我会还建议你专门创建一个新的宝石为您的应用程序,例如

rvm gemset create yourproject 
rvm gemset use yourproject 

或:

rvm gemset use yourproject --default 

新宝石,你可能要加上“创业板安装耙”手动,然后运行“包安装”

除了使用单独的宝石使用你的Gemfile是让你的项目中的宝石版本保持稳定并与其他项目分离的最佳方式。