your with specified specific mac how but ruby bundler

ruby - with - ¿Bundler y binstubs equivocados?



set ruby version with rbenv (5)

Este error puede surgir cuando actualizas tu ruby ​​pero no las gemas relacionadas.

Para comprobar si este es su caso, intente crear una nueva aplicación de rieles en un nuevo directorio vacío (para asegurarse de que RVM no esté cargando automáticamente ningún gemset)

make /tmp/test && cd test && rails new test

Si esto falla, indicando que no puede encontrar los "rieles" adecuados, simplemente ejecute

gem update

y sobrescribe cualquier riel conflictivo.

Ejecuto rails s o bundle exec rails s y recibo esta advertencia:

Bundler is using a binstub that was created for a different gem. This is deprecated, in future versions you may need to `bundle binstub rails` to work around a system/bundle conflict.

¿Qué significa esto? Al mirar alrededor del sitio de bundler, mi comprensión de binstubs es que puedes establecer ejecutables para ellos, así que en lugar de ejecutar bundle exec blabla puedes hacer bin/blabla . Entonces, ¿este error dice que mi bundler no está configurado en el binstub correcto?

Cuando ejecuto los bundle binstub rails obtengo esta salida

rails has no executables, but you may want one from a gem it depends on. railties has: rails bundler has: bundle, bundler

No entiendo lo que mi sistema está tratando de decirme, y no está rompiendo nada, pero tengo la corazonada de que esto podría convertirse en un problema mayor si no lo soluciono.

ruby 2.0.0p247

que ruby

/Users/evan/.rvm/rubies/ruby-2.0.0-p247/bin/ruby

que paquete

/Users/evan/.rvm/gems/ruby-2.0.0-p247/bin/bundler

Rails 4.0.2

Editar:

Entonces, si ejecuto los comandos en el mensaje nag:

bundle config --delete bin # Turn off Bundler''s stub generator rake rails:update:bin # Use the new Rails 4 executables

Terminé obteniendo errores de uninitialized constant Bundler con los comandos bundle exec y la única forma que encontré para corregir eso es volver a ejecutar bundle install --binstubs que devuelve el mensaje de queja al comienzo de esta publicación.


Lo que funcionó para mí fue

rm -rf bin/*

A continuación, abra una nueva sesión de terminal y

bundle exec spring binstub --all


Pude arreglar esto mirando el historial de commit para bin/rails usando git log -p bin/rails

El contenido actual que produce errores es:

#!/usr/bin/env ruby # # This file was generated by Bundler. # # The application ''rails'' is installed as part of a gem, and # this file is here to facilitate running it. # require ''pathname'' ENV[''BUNDLE_GEMFILE''] ||= File.expand_path("../../Gemfile", Pathname.new(__FILE__).realpath) require ''rubygems'' require ''bundler/setup'' load Gem.bin_path(''railties'', ''rails'')

El contenido original sin errores fue:

#!/usr/bin/env ruby APP_PATH = File.expand_path(''../../config/application'', __FILE__) require_relative ''../config/boot'' require ''rails/commands''

Cuando restauré el contenido original de bin / rails, el mensaje de advertencia desapareció. Los intentos anteriores habían devuelto errores de uninitialized constant Bundler en todos los comandos de bundle exec , pero ahora funcionan. Vale la pena señalar que el contenido original parece ser exactamente lo que los rails new blabla generan en los raíles 4.0.x.

Aún así, me gustaría saber por qué el primer bloque de código causa problemas porque es exactamente lo que la bundle install --binstubs genera bundle install --binstubs .

Editar: resulta que esta solución no funciona. Apunte esta corrección a un servidor de etapas heroku y a errores de heroku en el inicio: todos los comandos bin/rails lanzan Bundler uninitialized constant Bundler y heroku se inicia con el bin/rails server ..... así que esto no es realmente una solución.

Edit2:

Si agrego estas dos líneas al segundo bloque (el contenido original bin / rails), todos los comandos bin/rails vuelven a funcionar:

require ''rubygems'' require ''bundler/setup''

Creo que la segunda línea es lo que corrige los errores del bundler que estaba teniendo.

Curiosamente, cuando traté de editar el primer bloque de código en esta publicación para intentar depurar qué línea estaba lanzando la advertencia, cualquier cambio que realicé provocó el fallo de todos los comandos de los rails , sin información, excepto por la nota molesta en el OP. extraño.

bin/rails finales que solucionaron mi problema:

#!/usr/bin/env ruby APP_PATH = File.expand_path(''../../config/application'', __FILE__) require_relative ''../config/boot'' require ''rubygems'' require ''bundler/setup'' require ''rails/commands''

¡Cualquier idea adicional de las personas que encuentren esto sería bienvenida!


Solución en mi caso: - Otras soluciones no funcionaron para mí.

En su directorio Rails:

mv /usr/bin/rails /usr/bin/rails.old bundle config --delete bin rm -rf bin # for rails 4.x: rake rails:update:bin # for rails 3.x: bundle install --binstubs # if you''re using rbenv rbenv rehash rm -rf ~/.rbenv/plugins/{rbenv-bundle-exec,rbenv-gemset,bundler}

También asegúrese de agregar bin / rails a la ruta como:

PATH=./bin:$PATH

Buena suerte.


gem uninstall bundler gem install bundler

Desinstalando todas mis versiones de Bundler, y luego instalando la última versión, lo solucioné por mí. Tenía varias versiones de bundler instaladas, así que cuando ejecuté bundle exec rails s creo que se usó el Bundler incorrecto, dándome el mensaje de advertencia.

Es posible que necesite generar nuevos stubs después de reinstalar Bundler, pero no era necesario.