Пакетная установка сломана на обновление рубина 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
.
Ответ 3
Это решило это для меня:
sudo gem update --system --no-user-install
источник: https://bbs.archlinux.org/viewtopic.php?id=138650
Ответ 4
Поместите это в свой Gemfile, а затем запустите установку пакета.
group :assets do
gem 'coffee-rails', github: 'rails/coffee-rails'
end