Rake 0.9.1导致rake:db:migrate to yield deprecation问题,不能降级到0.8.7

时间:2011-06-09 15:18:55

标签: ruby-on-rails rake version dsl deprecated

我最近在我的Gemfile上运行了一个bundle install,并尝试rake:db:migrate。此迁移不起作用,并输出:

WARNING: Global access to Rake DSL methods is deprecated.  Please include
    ...  Rake::DSL into classes and modules which use the Rake DSL methods.
WARNING: DSL method SampleApp::Application#task called at /Users/joshuaballoch/.rvm/gems/ruby-1.9.2-p180@rails3tutorial3/gems/railties-3.0.3/lib/rails/application.rb:214:in `initialize_tasks'

我在另一篇文章中读到我应该卸载0.9.1,但由于某些原因我卸载后需要0.9.1的一些gem,所以我不知道如何解决这个问题。有什么建议吗?

我的宝石文件是:

source 'http://rubygems.org'

gem 'rails', '3.0.3'



gem 'sqlite3-ruby', '1.3.2', :require => 'sqlite3'
gem 'gravatar_image_tag', '1.0.0.pre2'
gem 'will_paginate', '3.0.pre2'



group :development do
    gem 'rspec-rails', '2.3.0'
    gem 'annotate-models', '1.0.4'
    gem 'faker', '0.3.1'
end

group :test do
    gem 'rspec', '2.3.0'
    gem 'webrat', '0.7.1'
    gem 'factory_girl_rails', '1.0'
end

2 个答案:

答案 0 :(得分:3)

您是否尝试过这样运行:bundle exec rake db:migrate

bundle exec命令在捆绑包定义的环境中运行您的请求,因此如果您的全局宝石不同,这可能会有所帮助。

如果没有,您可以将gem "rake", "0.8.7"添加到您的gem文件bundle install,然后再试一次。你仍然应该满足你的其他依赖,因为你没有删除0.9.1,只是要求bundle exec使用不同的版本。

答案 1 :(得分:1)

Rails 3.0.8昨天发布,包括"Fixing Rake 0.9.x integration"。值得一试。