2011-05-26 56 views
4

我在Heroku上運行Rails 2.3.11應用程序。然而,耙任務不再在Heroku工作:Heroku使用錯誤版本的耙子(0.9.0而不是0.8.7)

rake aborted! 
You have already activated rake 0.9.0, but your Gemfile requires rake 0.8.7. Consider using bundle exec. 

耙本地工作的罰款。我指定耙0.8.7在我的Gemfile:

gem 'rake', '0.8.7' 

我Gemfile.lock的文件是我的混帳回購協議的一部分(不gitignored)。我檢查了我的Gemfile.lock尋找提到的0.9.0耙,但找不到任何。

看起來Heroku保留了0.9.0的rake副本,但我找不到擺脫它的方法。下面是完整的跟蹤:

$ heroku rake -T --trace 
rake aborted! 
You have already activated rake 0.9.0, but your Gemfile requires rake 0.8.7. Consider using bundle exec. 
/usr/ruby1.8.7/lib/ruby/gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:27:in `setup' 
/usr/ruby1.8.7/lib/ruby/gems/1.8/gems/bundler-1.0.7/lib/bundler/spec_set.rb:12:in `each' 
/usr/ruby1.8.7/lib/ruby/gems/1.8/gems/bundler-1.0.7/lib/bundler/spec_set.rb:12:in `each' 
/usr/ruby1.8.7/lib/ruby/gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:17:in `setup' 
/usr/ruby1.8.7/lib/ruby/gems/1.8/gems/bundler-1.0.7/lib/bundler.rb:100:in `setup' 
/app/config/../config/preinitializer.rb:16 
/app/config/boot.rb:28:in `load' 
/app/config/boot.rb:28:in `preinitialize' 
/app/config/boot.rb:10:in `boot!' 
/app/config/boot.rb:124 
/usr/ruby1.8.7/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require' 
/usr/ruby1.8.7/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require' 
/app/Rakefile:4 
/app/.bundle/gems/ruby/1.8/gems/rake-0.9.0/lib/rake/rake_module.rb:25:in `load' 
/app/.bundle/gems/ruby/1.8/gems/rake-0.9.0/lib/rake/rake_module.rb:25:in `load_rakefile' 
/app/.bundle/gems/ruby/1.8/gems/rake-0.9.0/lib/rake/application.rb:495:in `raw_load_rakefile' 
/app/.bundle/gems/ruby/1.8/gems/rake-0.9.0/lib/rake/application.rb:78:in `load_rakefile' 
/app/.bundle/gems/ruby/1.8/gems/rake-0.9.0/lib/rake/application.rb:129:in `standard_exception_handling' 
/app/.bundle/gems/ruby/1.8/gems/rake-0.9.0/lib/rake/application.rb:77:in `load_rakefile' 
/app/.bundle/gems/ruby/1.8/gems/rake-0.9.0/lib/rake/application.rb:61:in `run' 
/app/.bundle/gems/ruby/1.8/gems/rake-0.9.0/lib/rake/application.rb:129:in `standard_exception_handling' 
/app/.bundle/gems/ruby/1.8/gems/rake-0.9.0/lib/rake/application.rb:59:in `run' 
/app/.bundle/gems/ruby/1.8/gems/rake-0.9.0/bin/rake:31 
/usr/ruby1.8.7/bin/rake:19:in `load' 
/usr/ruby1.8.7/bin/rake:19 

它看起來像在以下提到的問題,但像他這樣的人終於實現了我寧可不創建一個新的應用程序:

Gem not uninstalling on Heroku

回答

3

問題來自我的:測試組中的spork gem。 Heroku的技術支持很有幫助,並將我引向Bundler。我發現this Bundler issue on GitHub,原來並不是Bundler的問題,但實際上是an issue in spork。出於某種原因,spork force rake被安裝,並且沒有指定版本限制,所以它只使用最新版本(現在爲0.9.0)。

我的解決方案是在Heroku中排除:test和:development groups,以防止spork被包含在我的包中(spork僅用於測試環境,但我繼續並排除:開發也是如此測量):

$ heroku config:add BUNDLE_WITHOUT="development:test" 

在Heroku上重新安裝我的軟件包後,我的耙子任務再次工作。

+0

你如何重新安裝你的捆綁在heroku上?我只是做了你的建議,並將我的應用程序重新推送到heroku,但是我的耙子仍然不起作用... – Alex 2011-06-29 23:07:09

+0

@Alex:確保您看到'檢測到未解析的依賴關係;安裝...'當你推動你的應用程序。否則,您的包不會被重新安裝。不過,我不確定是否有辦法強制捆綁軟件重新安裝,而無需更改Gemfile。 – 2011-07-02 22:37:25

+0

感謝Etienne,我在此期間聯繫了Heroku,他們清除了我的寶石,並且下次我將它重新正確地重新安裝並且它可以正常工作(在我添加了bundle_without選項後)。 – Alex 2011-07-04 02:42:15

0

嘗試要遵循的步驟安德烈給這個post

===編輯===

對不起,它沒有工作。我猜你只有一個選擇離開:send a ticket to Heroku staff

+0

不幸的是,這些指令在Heroku上不起作用,因爲沒有辦法(我知道)在普通機器上手動卸載gem。 – 2011-05-26 21:55:28

+0

嘗試[發送一張票](https://support.heroku.com/requests/new) – Lucas 2011-05-26 22:07:04

0

我不知道究竟在Heroku的內部,但給「Heroku的捆綁高管耙-T --trace」,這應該加載捆綁耙版本。

+1

不幸的是,你不能在Heroku上運行bundle exec。 – 2011-05-26 22:35:05

0

我通過安裝舊版Rake作爲寶石來解決這個問題。這樣我的應用程序就可以使用它可以使用的耙子版本。在我的gemfile中:

gem 'rake', '~> 0.8.7' 
+0

這通常是一個很好的解決方案,但在我的情況下,舊版本的rake(0.8.7)已經在我的Gemfile中指定了。問題與spork寶石有關。 – 2011-06-01 15:30:31

相關問題