Paquete de instalación interrumpida en ruby 2.0 upgrade
bundler ruby-on-rails-4 (4)
Acabo de actualizar a ruby 2.0 / rails 4.0 e intento ejecutar bundle install en un nuevo proyecto de rails. Cada vez que golpea algo que no está ya instalado, escupirá:
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.
Entonces entonces corro
gem install coffee-rails -v ''4.0.0.beta1''
Y se instala bien, y vuelvo a ejecutar la instalación del paquete y tengo que repetir esto cada vez que se ejecuta en una versión de gema que aún no he instalado. ¿Cuál es el problema aquí?
Pon esto en tu Gemfile y luego ejecuta bundle install.
group :assets do
gem ''coffee-rails'', github: ''rails/coffee-rails''
end
El ejecutable del bundle
es solo un script de shell, y tiene una línea shebang que apunta a un ejecutable de Ruby particular (o a /usr/bin/env ruby
). Parece que esa línea shebang apunta a una versión diferente de Ruby, no a la 2.0, y no a la que apunta la línea shebang en el ejecutable de tu gem
.
Ejecute esto para ver a qué apunta: head -1 $(which bundle)
Cualquier línea que te muestre, quítate el #!
prefijo y ejecute esa línea con el -v
para ver qué versión de Ruby es (si no es obvio). Entonces, si la línea de shebang era #!/usr/bin/ruby
entonces ejecuta /usr/bin/ruby -v
Si mi teoría es correcta, entonces obtendrás un número de versión no 2.0 allí.
Según lo que dijiste, tu ejecutable de gem
apunta al 2.0 Ruby, por lo que la solución es simplemente desinstalar y luego volver a instalar la gema bundler. Eso debería poner la línea de shebang Ruby 2.0 correcta en el bundle
ejecutable.
En mi caso, resultó que el paquete intentaba instalar gemas en una ubicación global en /usr/lib/ruby/gems/2.0.0, pero como no lo invoqué a través de sudo, terminó con un error de permiso. Quería instalar de todos modos el directorio de mi casa, así que resultó que puedo:
GEM_HOME=~/.gem/ruby/2.0.0/ bundle
y vivieron felices por siempre.
Esto lo resolvió para mí:
sudo gem update --system --no-user-install