2013-04-07 79 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 

,快乐地生活。