ruby - Bundler no está trabajando con rbenv, no pudo encontrar
sinatra (9)
Añadiendo esto
set :default_environment, {
''PATH'' => "$HOME/.rbenv/shims:$HOME/.rbenv/bin:$PATH"
}
deploy.rb funcionó para mí.
http://henriksjokvist.net/archive/2012/2/deploying-with-rbenv-and-capistrano/
Acabo de hacer el cambio de rvm a rbenv y estoy tratando de usar bundler para la gestión de gemas. Después de ejecutar bundle install
e intentar ejecutar una aplicación simple de sinatra ( ruby app.rb
), obtengo esto:
Could not find haml-3.1.4 in any of the sources
Run `bundle install` to install missing gems.
La ejecución de la bundle install
nuevamente no tuvo ningún efecto. También intenté la bundle update
según lo sugerido por otra respuesta a la pregunta.
Este es mi Gemfile:
source "http://rubygems.org"
gem "sinatra"
gem "haml"
Esto es lo bundle show
produce el bundle show
* bundler (1.0.22)
* haml (3.1.4)
* rack (1.4.1)
* rack-protection (1.2.0)
* sinatra (1.3.2)
* tilt (1.3.3)
Esto es lo que mi aplicación requiere:
require "rubygems"
require "bundler/setup"
require ''sinatra''
Estoy convencido de que este es un tipo de problema de ruta donde bundler y rbenv no están jugando. Intenté consultar la documentación de rbenv pero no pude encontrar nada.
Nota: En una aplicación de sinatra diferente obtengo lo siguiente cuando intento ejecutarlo:
Could not find addressable-2.2.7 in any of the sources
Run `bundle install` to install missing gems.
Información suplementaria
echo $PATH
/Users/uri/.rbenv/shims:/Users/uri/.rbenv/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin
which bundle
/Users/uri/.rbenv/shims/bundle
Actualizar
Si lo hago bundle install --system
funciona. Aunque no puedo ver esto como una solución viable.
Deberías intentar usar chruby . chruby es una alternativa ultraminimal (~ 80 líneas) a RVM / rbenv. A diferencia de rbenv, chruby no depende de cuñas y simplemente modifica PATH
, GEM_HOME
y GEM_PATH
.
Has corrido
rbenv rehash
Esto proporcionará cuñas para todos los binarios de rubí, incluidos los instalados por gemas.
Probé todas las cosas aquí, pero lo que hizo por mí fue descubrir que tenía un .bundler en el directorio de inicio de mi usuario por algún motivo. Esto estaba causando el extraño problema anterior, donde el comando ''which'' enumeraba correctamente el paquete en la ruta de las cuñas, pero al comprobar el paquete -v se mostraba la versión anterior del sistema, mientras que /Users/jerimiah/.rbenv/shims/bundle mostraba las últimas versiones. Eliminé .bundler en mi directorio de inicio, rehice, reinicié mi terminal y todo comenzó a funcionar.
Prueba este plugin de rbenv, hará que las cuñas estén al tanto de las rutas del bundler
Solo un recordatorio de que rbenv no es compatible con rvm, no funcionan bien. Para su cordura, desinstale rvm si desea usar rbenv. Del rbenv README:
Nota de compatibilidad: rbenv es incompatible con rvm. Las cosas parecerán funcionar hasta que intentes instalar una gema. ¡El problema es que rvm anula el comando gem con una función de shell! Elimine cualquier referencia a rvm antes de usar rbenv.
Afortunadamente, Wayne (creador de rvm) proporciona un remove rvm fácilmente usando:
rvm implode
Como un uso regular o:
rvmsudo rvm implode
Para limpiar todo el sistema de rvm.
Te sugiero que uses la gema ''capistrano-rbenv'' ( https://github.com/yyuu/capistrano-rbenv )
asegúrese de tener "rbenv" y una versión de ruby (ej. 1.9.3) instalada en el servidor remoto
en su config / deploy.rb (archivo capistrano)
require ''capistrano-rbenv''
en tu Gemfile:
gem ''capistrano-rbenv'', ''1.0.1''
Eso es. para depurar si funciona, solo ejecuta:
$ cap shell cap> which ruby ** [out :: 10.103.13.74] /root/.rbenv/shims/ruby cap> ruby -v ** [out :: 10.103.13.74] ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-linux]
Tuve un problema similar cuando cambié de usar rvm a rbenv. Encontré que mi paquete mostraba una lista diferente de gemas que mi comando de lista de gemas. Primero verifica qué rutas usan tu bundler y tu gema. Para bundler utiliza el comando show
y selecciona cualquier gema.
$ bundle show ffi
/my/project/path/vendor/ruby/1.9.1/gems/ffi-1.1.5
y mi comando gem environment
(en parte)
$ gem environment
RubyGems Environment:
- RUBYGEMS VERSION: 1.8.23
- RUBY VERSION: 1.9.2 (2011-07-09 patchlevel 290) [x86_64-darwin10.8.0]
- INSTALLATION DIRECTORY: /Users/rolf/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1
Aquí pude ver que mi gema apuntaba a la ruta de acceso de rbenv correcta, pero mi paquete está apuntando a la ruta del proveedor de mi proyecto.
Ejecutar el siguiente comando debería solucionar el problema de la ruta del paquete:
$ bundle install --system
La ruta de Bundler ahora debería estar apuntando a la ruta rbenv.
$ bundle show ffi
/Users/rolf/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/ffi-1.1.5
También encontré que cuando ejecutaba el comando rvm implode
para desinstalar rvm, todavía quedaban los siguientes archivos que necesitaba cambiar para eliminar las rutas de rvm:
~/.profile
~/.bashrc
~/.zshrc
Si todavía existe la ruta ~/.rvm
, tendrá que eliminar esto.
Tendrá que abrir una nueva sesión de terminal después de cambiar estos archivos. Finalmente, después de todo, finalmente obtuve mi paquete y mi gema en sincronía.
Yo estaba teniendo el mismo problema. Una sugerencia fue que el rbenv exec bundle exec command
funcionó y que rbenv exec bundle install --path vendor/bundle
funcionó, pero sus equivalentes prefijados fallaron.
Limpié mi ~/.rbenv
, ~/.gem
Gemfile.lock
y vendor/bundle
algunas veces tratando de comenzar de nuevo. Una vez que se limpiaron estos, intenté lo siguiente:
rbenv install 1.9.3-p194
rbenv rehash # for paranoia''s sake
rbenv global 1.9.3-p194
gem env # to check that everything was pointing at 1.9 and not the system
gem install --no-ri --no-rdoc bundler
rbenv rehash # necessary to load up the bundle executable
bundle --path=vendor/bundle
¡Y funcionó!
Creo que lo importante, ya que lo intenté varias veces, es eliminar el archivo .gem de su directorio personal. Parece ponerse en el camino.