2014-04-19 5 views
31

corro rails s o bundle exec rails s e ottengo questo avvertimento:Bundler e binstub errati?

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. 

Cosa significa? Dall'osservare il sito di bundler, la mia comprensione dei binstub è che è possibile impostare loro degli eseguibili, quindi invece di eseguire bundle exec blabla è sufficiente fare bin/blabla. Quindi questo errore sta dicendo che il mio bundler non è impostato sul binstub giusto?

Quando eseguo il bundle binstub rails ottengo questo output

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

non capisco che cosa il mio sistema sta cercando di dirmi, e non è rompere nulla, ma ho la sensazione questo potrebbe trasformarsi in una più grande problema se non risolvere il problema

ruby 2.0.0p247 

che rubino

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

whic h bundler

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

Rails 4.0.2

Edit:

Quindi, se corro i comandi nel messaggio nag:

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

io alla fine ottenere uninitialized constant Bundler errori con bundle exec comandi e l'unico modo che ho trovato per risolvere è quello di rieseguire bundle install --binstubs che riporta il messaggio nag all'inizio di questo post.

+0

Lo stesso problema qui. Bundler 1.6.2, Rails 4.0.3, rbenv 0.4.0 –

+0

Appena aggiornato sui binari 4.0.5, mi dà ancora fastidio. Hai gli stessi errori di bundler che ho notato alla fine del post se esegui i comandi suggeriti? – user2936314

+0

Correzione facile: http: // StackOverflow.it/a/27460085/115363 –

risposta

25

Che cosa ha funzionato per me era

rm -rf bin/*

quindi aprire una nuova sessione di terminale e

bundle exec spring binstub --all

+0

Questo ha funzionato anche per me. –

+21

Ho dovuto eseguire 'bundle exec rake rails: update: bin' dopo l'eliminazione di bin/* –

+3

Sto usando Spring. Nessuno dei due ha funzionato per me. Ma 'bundle binstub rspec-core' ha funzionato. Sono così confuso. Così tante opzioni binstub. –

-1

sono stato in grado di risolvere questo problema, cercando in storia impegnarsi per bin/rails utilizzando git log -p bin/rails

La corrente, errore p roducing contenuto è:

#!/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') 

Il contenuto originale, non errore era:

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

Quando ho ripristinato l'originale bin/rotaie contenuti, il messaggio di avviso è scomparso. I tentativi precedenti avevano restituito errori uninitialized constant Bundler su tutti i comandi bundle exec, ma ora funzionano. Vale la pena notare che il contenuto originale sembra essere esattamente quello che genera rails new blabla nelle barre 4.0.x.

Ancora, vorrei sapere perché il primo blocco di codice causa problemi perché è esattamente ciò che genera bundle install --binstubs.

Modifica: risulta che questa soluzione non funziona.Spinta questa correzione a un server di gestione temporanea heroku e errori heroku all'avvio: tutti i comandi bin/rails generano uninitialized constant Bundler e heroku si avvia con bin/rails server ..... quindi non è proprio una soluzione.

Edit2:

Se posso aggiungere queste due righe al secondo blocco (il bidone originale/rotaie contenuto), tutti i comandi bin/rails stanno lavorando di nuovo:

require 'rubygems' 
require 'bundler/setup' 

La mia ipotesi è che la seconda linea è ciò che corregge gli errori di bundler che stavo avendo. È interessante notare che, quando ho provato a modificare il primo blocco di codice in questo post per provare a eseguire il debug su quale riga è stata lanciata l'avvertenza, qualsiasi modifica apportata ha causato tutti i comandi rails in errore, senza alcuna informazione ad eccezione della nota di nag in l'OP. strano.

finale bin/rails che risolto il mio 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' 

Tutta la comprensione supplementare da parte di persone che trovano questo sarebbe il benvenuto!

8

soluzione nel mio caso: - Altre soluzioni non ha funzionato per me.


Nella directory di 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} 

anche essere sicuri che bin/rotaie viene aggiunto al percorso simile:

PATH=./bin:$PATH 

Buona fortuna.

+2

Questa è l'unica cosa che ha funzionato per me. Doveva essere importante eseguire l'ultimo comando: "PATH =./Bin: $ PATH" Sono andato avanti e ho apportato questa modifica al mio bash_profile. Non sembra la soluzione migliore ma elimina il fastidioso messaggio. – newUserNameHere

+1

@newUserNameHere sono contento che abbia risolto il tuo problema. –

+0

I binstub creati utilizzando questi metodi "sbarazzarsi dell'errore" al costo di perdere il vantaggio di velocità utilizzando i binstub a molla. Non ne vale la pena. –

1

Questo errore può verificarsi quando si aggiorna il rubino ma non le gemme correlate.

Per verificare se questo è il vostro caso, provare a fare una nuova applicazione Rails in una nuova directory vuota (per essere sicuri RVM non è auto-caricamento alcun GemSET)

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

caso di esito negativo affermando che non può trovare un adeguato 'rotaie', poi semplicemente eseguire

gem update 

e sovrascrivono qualsiasi rotaie contrastanti.

1
gem uninstall bundler 
gem install bundler 

Disinstallare tutte le mie versioni di Bundler, e quindi installare l'ultima versione ha risolto il tutto per me. Avevo installato più versioni di bundler, quindi quando ho eseguito bundle exec rails s penso che sia stato usato il Bundler sbagliato, dandomi il messaggio di avviso.

Potrebbe essere necessario generare nuovi stub dopo aver reinstallato Bundler, ma non è necessario.