耙子流产! Heroku上未初始化的常量Rake :: DSL
当试图在Heroku上rake db:migrate
时。 我收到以下错误。
rake aborted! uninitialized constant Rake::DSL
从我收集的内容来看,这似乎是Rake 0.9.2的一个错误。 如果我在本地执行“gem list”,则只安装Rake(0.8.7)。
我已经尝试将“gem’rake’,’0.8.7’”添加到我的gem文件并运行bundle install但是后来我收到以下错误。
You have requested: rake = 0.8.7 The bundle currently has rake locked at 0.9.2. Try running `bundle update rake`
如果我运行bundle update rake
,它会恢复到0.9.2,我回到了我开始的地方。
我错过了一些明显的东西吗?
您应该使用bundle exec运行命令以确保获得正确的依赖项。 所以运行:
bundle exec rake db:migrate
有关更详细的post,请参阅Yehuda Katz博客文章http://yehudakatz.com/2011/05/30/gem-versioning-and-bundler-doing-it-right/
如果你仍然有问题,似乎有其他几个人有同样的问题如何解决Heroku上未初始化的常量Rake :: DSL问题? 他们通过在他们的Rakefile中添加以下内容来解决:
require 'rake/dsl_definition' require 'rake'
我在做“heroku rake db:migrate”时遇到了这个错误。
在/app
:
rake aborted! uninitialized constant Rake::DSL /usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:2482:in `const_missing' .... ... .... .. etc...
我通过添加来修复它
require 'rake/dsl_definition'
在RakeFile然后键入
bundle update rake git add . git commit -m "Change RakeFile" git push heroku heroku rake db:migrate
这个解决了我的问题。 我没有在我的gem文件中添加gem 'rake', '0.8.7'
,我的gem列表显示rake(0.9.2,0.8.7)。
我有一篇关于此的博文, 你已经激活了Rake 0.9.2 。 有两种方法可以做到这一点:
只使用旧版本的Rake:
使用$ gem list
查看您当前的Rake版本。 查看您拥有的Rake版本并将其全部删除,除0.8.7
。 您可以使用gem uninstall rake -v=0.9.1
或您需要删除的任何版本删除gems。
或者只是在您的Rake文件中添加一个衬垫:
除非你必须使用旧版本的Rake,否则更容易将这行require 'rake/dsl_definition'
到你的Rails的应用程序Rakefile中。
require File.expand_path('../config/application', __FILE__) require 'rake/dsl_definition' require 'rake'
我用它来解决这个问题,而不删除任何gem。 此方法将强制您的应用使用Rake 0.8.7,这比0.9+更稳定。 在指定要使用的Rake版本之后,必须运行bundle update rake
命令,这样你的gemfile.lock
文件就与你的gem文件保持同步(如果你跳过这一步,Heroku将不会让你推送你的代码!)
在您的gem文件中指定要使用的Rake版本:
"rake", "0.8.7"
然后做:
bundle update rake
如果这仍然不适合你,那么:
sudo gem uninstall rake
与富人的答案一样 (解决这个问题而不删除任何gem),但是对步骤1进行了更正,还有一些额外的步骤:
-
在gem文件中指定:
gem 'rake', '0.8.7'
-
bundle install
(Bundler文档说改变你的gem文件后总是’捆绑安装’) -
git commit -am "Fixed heroku rake problem by specifying rake 0.8.7 in Gemfile"
-
git push heroku
-
heroku rake db:migrate
没有第3步和第4步,我得到了同样的错误。
- 如何在Heroku上阻止或过滤IP地址?
- heroku运行db:migrate因rake中止而失败
- Heroku安装sqlite3,即使它不是依赖
- 在heroku上运行rails app,无法在/ public文件夹中看到静态页面
- Ruby On Rails Heroku db:migrate Aborted!
- 密钥就在那里,但我仍然得到`fetch’:找不到密钥:“S3_BUCKET_NAME”(KeyError)
- ExecJS :: RuntimeError:SyntaxError:意外的标记:operator(>)(行:22342,col:24,pos:826182)
- Heroku:您要查找的页面不存在
- 如何在heroku上重定向域?