ruby sinatra bundler rbenv

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.



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 )

  1. asegúrese de tener "rbenv" y una versión de ruby ​​(ej. 1.9.3) instalada en el servidor remoto

  2. en su config / deploy.rb (archivo capistrano)

    require ''capistrano-rbenv''

  3. en tu Gemfile:

    gem ''capistrano-rbenv'', ''1.0.1''

  4. 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.