2013-04-07 73 views
12

剛剛升級到ruby 2.0/rails 4.0,並試圖在新的rails項目上運行bundle install。當它擊中,這不是已經安裝的東西,它會吐出:Bundle install ruby​​ 2.0升級破解

Installing coffee-rails (4.0.0.beta1) 
Errno::ENOENT: No such file or directory - /usr/lib/ruby/gems/2.0.0/build_info/coffee-rails-4.0.0.beta1.info 
An error occurred while installing coffee-rails (4.0.0.beta1), and Bundler cannot continue. 
Make sure that `gem install coffee-rails -v '4.0.0.beta1'` succeeds before bundling. 

於是我再運行

gem install coffee-rails -v '4.0.0.beta1' 

,並將其安裝罰款,我重新運行包安裝並有重複這一過程,每次它運行到一個寶石版本,我還沒有安裝。這裏有什麼問題?

+0

什麼是您的Gemfile看起來像。 – 2013-04-08 00:05:29

+0

無論默認的gemfile是用於新的rails項目嗎? – 2013-04-08 02:13:04

+0

Bundler的版本是什麼? – 2013-04-08 08:05:37

回答

0

把它放在你的Gemfile中,然後運行bundle install。

group :assets do 
    gem 'coffee-rails', github: 'rails/coffee-rails' 
end 
+0

這個寶石只是一個例子,它發生在我沒有安裝的任何寶石上。 – 2013-04-08 02:11:10

+0

在Rails 4中,不再有資產組。 – MarkoHiel 2013-11-08 14:33:33

4

bundle可執行僅僅是一個外殼腳本,並且它具有將指向一個特定的Ruby可執行文件(或/usr/bin/env ruby)一個shebang行。這聽起來像是shebang行指向一個不同版本的Ruby,而不是2.0版本,而不是你的可執行文件中的shebang行指向的版本。

運行這個,看看它的指向:head -1 $(which bundle)

無論線,顯示你,剝去#!前綴和運行與-v交換機網上看到它是紅寶石的版本(如果不是很明顯)。所以如果shebang線是#!/usr/bin/ruby然後運行/usr/bin/ruby -v如果我的理論是正確的,那麼你會得到一個非2.0的版本號。

根據你說的,你的gem可執行文件指向2.0 Ruby,所以這裏的解決方法就是卸載並重新安裝捆綁軟件gem。那應該把正確的Ruby 2.0 shebang行放到bundle可執行文件中。

8

在我的情況下,事實證明bundle試圖將gem安裝到/usr/lib/ruby/gems/2.0.0的全局位置,但由於我沒有通過sudo調用它,它以權限錯誤結束。我想安裝到我的主目錄無論如何所以事實證明,我可以這樣做:

GEM_HOME=~/.gem/ruby/2.0.0/ bundle 

,快樂地生活。