12

刚刚升级到 ruby​​ 2.0/rails 4.0 并尝试在新的 rails 项目上运行 bundle install 。每当它碰到尚未安装的东西时,它就会吐出:

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'

它安装得很好,我重新运行 bundle install 并且每次运行到我尚未安装的 gem 版本时都必须重复此操作。这里有什么问题?

4

4 回答 4

8

在我的情况下,原来 bundle 试图将 gems 安装到 /usr/lib/ruby/gems/2.0.0 的全局位置,但由于我没有通过 sudo 调用它,所以最终出现权限错误。无论如何,我想安装到我的主目录,所以事实证明我可以这样做:

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

并从此过上幸福的生活。

于 2013-07-10T19:44:32.020 回答
4

可执行文件只是一个 shell 脚本,bundle它有一个 shebang 行,它将指向一个特定的 Ruby 可执行文件(或 to /usr/bin/env ruby)。听起来 shebang 行指向的是不同版本的 Ruby,而不是 2.0 版本,也不是gem可执行文件中的 shebang 行所指向的那个。

运行它以查看它指向的内容:head -1 $(which bundle)

无论显示什么行,去掉#!前缀并使用开关运行该行-v以查看它是哪个版本的 Ruby(如果不明显)。#!/usr/bin/ruby因此,如果随后运行shebang 行/usr/bin/ruby -v 如果我的理论是正确的,那么您将在那里获得非 2.0 版本号。

根据您所说的,您的gem可执行文件指向 2.0 Ruby,因此这里的解决方法是卸载然后重新安装捆绑器 gem。这应该将正确的 Ruby 2.0 shebang 行放入您的bundle可执行文件中。

于 2013-04-16T02:04:46.800 回答
3

这为我解决了它:

sudo gem update --system --no-user-install

来源:https ://bbs.archlinux.org/viewtopic.php?id=138650

于 2013-07-22T02:02:48.250 回答
0

把它放在你的 Gemfile 中,然后运行 ​​bundle install。

group :assets do
  gem 'coffee-rails', github: 'rails/coffee-rails'
end
于 2013-04-08T00:07:17.197 回答