为什么对Rake DSL方法的全局访问是不可取的?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (18)

我正在阅读RubyonRails 3教程,并在命令行上输入以下内容:

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 DemoApp::Application#task called at /Users/imac/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/railties-3.0.7/lib/rails/application.rb:215:in `initialize_tasks'

怎么回事?

提问于
用户回答回答于

将以下内容放入您的Gemfile中

gem "rake", "0.8.7"

你可能会看到

rake aborted!
You have already activated Rake 0.9.1 ...

我的目录里还有一份Rake 0.9.1的副本,所以我把它删除了。

您可以通过运行以下命令“删除”Rake 0.9.1:

gem uninstall rake -v=0.9.1

如果安装了多个版本的GEM,系统会提示您选择一个版本。

在0.9.1被清除后,我运行

bundle update rake

终于可以创建我的数据库文件了。我在用rake db:create,但它应该适用于rake db:migrate也一样。

用户回答回答于

在上述用户的情况下,在DemoApp::Application.load_tasks

扫码关注云+社区