【问题标题】:rake db:migrate failsrake db:迁移失败
【发布时间】:2012-02-24 12:54:41
【问题描述】:

我正在创建一个简单的用户表,当我运行 rake db:migrate 时,它​​出现在 create_table(:users) 但是我同时收到以下警告。我尝试再次运行 rake db:migrate ,然后在此页面上出现第二个错误。如何检查表是否已创建,以及如何防止出现此警告/错误?

错误1

    WARNING: 'require 'rake/rdoctask'' is deprecated.  Please use 'require 'rdoc/task' (in RDoc 2.4.2+)' instead.
    at /Users/anderskitson/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/rake-0.9.2.2/lib/rake/rdoctask.rb
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/anderskitson/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/railties-3.0.1/lib/rails/application.rb:214:in `initialize_tasks'

错误 2

rake aborted!
undefined local variable or method `d' for main:Object

这就是我使用 --trace 得到的结果

/Users/anderskitson/rails_project/demo_app/Rakefile:1:in `<top (required)>'
/Users/anderskitson/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/rake-0.9.2.2/lib/rake/rake_module.rb:25:in `load'
/Users/anderskitson/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/rake-0.9.2.2/lib/rake/rake_module.rb:25:in `load_rakefile'
/Users/anderskitson/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/rake-0.9.2.2/lib/rake/application.rb:501:in `raw_load_rakefile'
/Users/anderskitson/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/rake-0.9.2.2/lib/rake/application.rb:82:in `block in load_rakefile'
/Users/anderskitson/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
/Users/anderskitson/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/rake-0.9.2.2/lib/rake/application.rb:81:in `load_rakefile'
/Users/anderskitson/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/rake-0.9.2.2/lib/rake/application.rb:65:in `block in run'
/Users/anderskitson/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
/Users/anderskitson/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/rake-0.9.2.2/lib/rake/application.rb:63:in `run'
/Users/anderskitson/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/rake-0.9.2.2/bin/rake:33:in `<top (required)>'
/Users/anderskitson/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/bin/rake:19:in `load'
/Users/anderskitson/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/bin/rake:19:in `<main>'

我跑了

rails 生成脚手架用户名:字符串电子邮件:字符串

然后我跑了

rake db:migrate

我的 rake 文件看起来像

d# Add your own tasks in files placed in lib/tasks ending in .rake,
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.

require File.expand_path('../config/application', __FILE__)
require 'rake'


DemoApp::Application.load_tasks

【问题讨论】:

  • 您能否将有问题的迁移添加到您的问题中。
  • 对不起,我不明白你的意思
  • 为您尝试运行的迁移添加代码。

标签: ruby-on-rails database rake data-migration


【解决方案1】:

删除 Rakefile 中的第一个字符 d

d# Add your own tasks in files placed in lib/tasks ending in .rake,

您会认出这一行,因为它是您粘贴的错误消息中指向的行号,并且您可以判断这是该行的错误部分,因为它正是错误消息告诉您的字母'不识别。

【讨论】:

  • 解决了我一半的问题。我的数据库成功创建,但我仍然收到所有警告消息,为什么会这样。
【解决方案2】:

这取决于您当前使用的 Rails 版本,但我建议生成一个新的 Rails 应用程序并复制生成的 Rakefile 以确保您是最新的。那里可能有一个require "rake/rdoctask" 需要更改。

也就是说,此警告可能不会导致迁移失败。

使用--trace 再次运行它以获取完整的堆栈跟踪。

【讨论】:

  • 我添加了 --trace 的输出
猜你喜欢
  • 1970-01-01
  • 2011-08-05
  • 1970-01-01
  • 2012-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-01
相关资源
最近更新 更多