Ruby on rails Rake-gem问题

Ruby on rails Rake-gem问题,ruby-on-rails,ruby,ruby-on-rails-3,rake,Ruby On Rails,Ruby,Ruby On Rails 3,Rake,我有一个RubyonRails项目,我想做db:migrate。但是我得到的唯一rake选项是“重新加载rake任务”,所以当我点击它时,它会给我这个错误 [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

我有一个RubyonRails项目,我想做db:migrate。但是我得到的唯一rake选项是“重新加载rake任务”,所以当我点击它时,它会给我这个错误

[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

谢谢,迈克尔。

这是一个常见问题。只需遵循以下步骤:

gem安装rake-v=0.9.2
(如果您有0.9.1 gem)

gem卸载rake-v=0.9.1
(如果您有0.9.1 gem)

查看日志,我发现您有
rake-0.9.2
,因此我认为您可以跳过上面的两个步骤

bundle更新

然后,运行
db:migrate
将出现如下错误:
警告:不推荐对Rake DSL方法进行全局访问

要解决这个问题,只需将这两行添加到
Rakefile的顶部即可

需要“rake/dsl\u定义”

包括Rake::DSL


在那之后,它应该工作得很好

这是一个常见问题。只需遵循以下步骤:

gem安装rake-v=0.9.2
(如果您有0.9.1 gem)

gem卸载rake-v=0.9.1
(如果您有0.9.1 gem)

查看日志,我发现您有
rake-0.9.2
,因此我认为您可以跳过上面的两个步骤

bundle更新

然后,运行
db:migrate
将出现如下错误:
警告:不推荐对Rake DSL方法进行全局访问

要解决这个问题,只需将这两行添加到
Rakefile的顶部即可

需要“rake/dsl\u定义”

包括Rake::DSL


在那之后,它应该工作得很好

您应该在GEM文件中特别添加Rake版本>=0.9.1! 在一些Rails 3版本中存在一个bug,当您使用较旧的Rake版本时,您会看到类似这样的奇怪错误

在您的文件中:

gem 'rake' , '>= 0.9.2'
我还建议您专门为您的应用程序创建一个新的gemset,例如

rvm gemset create yourproject
rvm gemset use yourproject
或:

对于新的gemset,您可能需要手动添加“gem安装rake”,然后运行“bundle安装”


除了使用Gemfile之外,使用单独的gemset是保持项目中gem版本稳定并与其他项目分离的最佳方法。

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

在您的文件中:

gem 'rake' , '>= 0.9.2'
我还建议您专门为您的应用程序创建一个新的gemset,例如

rvm gemset create yourproject
rvm gemset use yourproject
或:

对于新的gemset,您可能需要手动添加“gem安装rake”,然后运行“bundle安装”

除了使用Gemfile之外,使用单独的gemset是保持项目中gem版本稳定并与其他项目分离的最佳方法。

类似(可能相同)问题请参见此处:类似(可能相同)问题请参见此处: