【问题标题】:Problems running rake db:migrate in a Ruby on Rails app在 Ruby on Rails 应用程序中运行 rake db:migrate 的问题
【发布时间】:2012-04-22 23:40:26
【问题描述】:

我正在尝试在我的 Ruby on Rails 应用程序中运行 rake db:migrate。

但是,它给了我一个“未初始化的常量”异常。从谷歌搜索来看,解决方案似乎是更新 rake 版本。所以我更改了我的 gemfile 并运行了包更新。

但是,异常仍在发生...我想是因为我没有更新正确的 rake 库。

我该如何解决这个问题?我如何也可以为其他路径更新 rake,或者通过捆绑内容专门运行 rake?

My-Comp:my_project username$ bundle show rake
/Library/Ruby/Gems/1.8/gems/rake-0.9.2.2
My-Comp:my_project username$ which rake
/usr/bin/rake
My-Comp:my_project username$ rake -V
rake, version 0.8.7

(See - they are not the same!)

My-Comp:my_project username$ rake db:migrate --trace
(in /Users/username/projects/my_project)
rake aborted!
uninitialized constant Rake::DSL
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rake.rb:2503:in `const_missing'
/Library/Ruby/Gems/1.8/gems/rake-0.9.2.2/lib/rake/tasklib.rb:8
/Library/Ruby/Gems/1.8/gems/rdoc-3.12/lib/rdoc/task.rb:37:in `require'
/Library/Ruby/Gems/1.8/gems/rdoc-3.12/lib/rdoc/task.rb:37
/Library/Ruby/Gems/1.8/gems/railties-3.2.3/lib/rails/tasks/documentation.rake:2:in `require'
/Library/Ruby/Gems/1.8/gems/railties-3.2.3/lib/rails/tasks/documentation.rake:2
/Library/Ruby/Gems/1.8/gems/railties-3.2.3/lib/rails/tasks.rb:15:in `load'
/Library/Ruby/Gems/1.8/gems/railties-3.2.3/lib/rails/tasks.rb:15
/Library/Ruby/Gems/1.8/gems/railties-3.2.3/lib/rails/tasks.rb:6:in `each'
/Library/Ruby/Gems/1.8/gems/railties-3.2.3/lib/rails/tasks.rb:6
/Library/Ruby/Gems/1.8/gems/railties-3.2.3/lib/rails/application.rb:289:in `require'
/Library/Ruby/Gems/1.8/gems/railties-3.2.3/lib/rails/application.rb:289:in `initialize_tasks'
/Library/Ruby/Gems/1.8/gems/railties-3.2.3/lib/rails/railtie.rb:184:in `instance_exec'
/Library/Ruby/Gems/1.8/gems/railties-3.2.3/lib/rails/railtie.rb:184:in `load_tasks'
/Library/Ruby/Gems/1.8/gems/railties-3.2.3/lib/rails/railtie.rb:184:in `each'
/Library/Ruby/Gems/1.8/gems/railties-3.2.3/lib/rails/railtie.rb:184:in `load_tasks'
/Library/Ruby/Gems/1.8/gems/railties-3.2.3/lib/rails/engine.rb:424:in `load_tasks'
/Library/Ruby/Gems/1.8/gems/railties-3.2.3/lib/rails/application.rb:145:in `load_tasks'
/Library/Ruby/Gems/1.8/gems/railties-3.2.3/lib/rails/railtie/configurable.rb:30:in `send'
/Library/Ruby/Gems/1.8/gems/railties-3.2.3/lib/rails/railtie/configurable.rb:30:in `method_missing'
/Users/username/projects/my_project/Rakefile:7
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rake.rb:2383:in `load'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rake.rb:2383:in `raw_load_rakefile'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rake.rb:2017:in `load_rakefile'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rake.rb:2068:in `standard_exception_handling'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rake.rb:2016:in `load_rakefile'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rake.rb:2000:in `run'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rake.rb:2068:in `standard_exception_handling'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rake.rb:1998:in `run'
/usr/bin/rake:31

【问题讨论】:

  • 您的 Gemfile 中有什么?您应该指定所需的 rake 版本并运行 bundle install。另外,您运行的是哪个版本的 Ruby?

标签: ruby-on-rails rake dbmigrate


【解决方案1】:

试试这个命令:

bundle exec rake db:migrate

bundle exec 在你的 gemfile 的上下文中执行一个命令。

【讨论】:

  • 好的,我认为这行得通。我如何也更新其他 rake?我尝试了 gem update rake ,它只是说没有更新。 (我宁愿有一个工作 rake 而不是一直运行 exec!)
  • 'Other rake too' - 你的意思是在其他项目中?您应该在这些项目的 gemfile 中分配 rake 版本。
  • 不,我不是指其他项目。我的意思是我不太了解版本管理,所以我想我有两个版本的 rake。一个是 /Library/Ruby/Gems/1.8/gems/rake-0.9.2.2 另一个是 /usr/bin/rake。 /usr/bin/rake 是 0.8.7,我也需要升级它,但不知道如何升级。或者我需要它以便“rake”执行 gem rake 而不是另一个。 (看看我粘贴在答案中的输出)
  • 你应该安装 ruby​​gems 并让这个 ruby​​ 的打包系统来解决这类问题。捆绑器将解析项目上下文中的依赖关系。
  • 我将这两行添加到我的 Rakefile 中,现在它似乎可以工作了(带有警告,关于一对已经初始化的 CONSTANTS: require 'rake/dsl_definition' require 'rake'
猜你喜欢
  • 2016-03-08
  • 1970-01-01
  • 2012-11-23
  • 1970-01-01
  • 2016-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-28
相关资源
最近更新 更多