Пакетная установка сломана на обновление рубина 2.0

Просто обновлен до ruby ​​2.0/rails 4.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'

И он устанавливается отлично, и я запускаю пакетную установку и должен повторять это за каждый раз, когда он запускается в версию gem, которую я еще не установил. В чем проблема?

Ответ 1

В моем случае оказалось, что пакет пытался установить драгоценные камни в глобальное местоположение в /usr/lib/ruby/gems/ 2.0.0, но так как я не вызывал его через sudo, это заканчивалось ошибкой разрешения. Я хотел установить в свой домашний каталог, так что оказалось, что я могу сделать:

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

и жить долго и счастливо.

Ответ 2

Исполняемый файл bundle представляет собой оболочку script, и она имеет строку shebang, которая будет указывать на конкретный исполняемый файл Ruby (или на /usr/bin/env ruby). Похоже, что строка shebang указывает на другую версию Ruby, а не на версию 2.0, а не на ту, на которую указывает строка shebang в вашем исполняемом файле gem.

Запустите это, чтобы увидеть, на что он указывает: head -1 $(which bundle)

В любой строке, которая показывает вам, отмените префикс #! и запустите эту строку с помощью переключателя -v, чтобы посмотреть, какая версия Ruby (если это не очевидно). Итак, если строка shebang была #!/usr/bin/ruby, тогда запустите /usr/bin/ruby -v Если моя теория верна, вы получите там номер версии 2.0.

Основываясь на том, что вы сказали, ваш исполняемый файл gem указывает на 2.0 Ruby, поэтому исправление здесь заключается в том, чтобы просто удалить, а затем переустановить драгоценный камень поставщика. Это должно помещать правильную строку Ruby 2.0 shebang в ваш исполняемый файл bundle.

Ответ 4

Поместите это в свой Gemfile, а затем запустите установку пакета.

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