2014-04-19 4 views
31

Ich betreibe rails s oder bundle exec rails s und ich bekomme diese Warnung:Bundler und falsche Binstubs?

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. 

Was bedeutet das? Wenn ich mich in der Bundler-Site umschaue, bin ich der Meinung, dass du ausführbare Dateien für sie festlegen kannst. Anstatt also bundle exec blabla auszuführen, kannst du einfach bin/blabla ausführen. Also dieser Fehler sagt mein bundler ist nicht auf den richtigen binstub gesetzt?

Wenn ich laufen die bundle binstub rails bekomme ich diese Ausgabe

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

Ich verstehe nicht, was mein System mir zu sagen versucht, und es ist nicht etwas zu zerbrechen, aber ich habe das Gefühl, diese in einen größeren verwandeln könnte Problem, wenn ich das beheben es nicht

ruby 2.0.0p247 

die

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

Rubin whic h bundler

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

Rails 4.0.2

Edit:

Also, wenn ich laufen die Befehle in der Gaul Nachricht:

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

ich am Ende immer uninitialized constant Bundler Fehler mit bundle exec Befehle und der einzige Weg, den ich gefunden habe, um das zu beheben, ist es, bundle install --binstubs, die die NAG-Nachricht am Anfang dieses Beitrags zurückbringt, erneut auszuführen.

+0

Gleiches Problem hier. Bundler 1.6.2, Rails 4.0.3, rbenv 0.4.0 –

+0

Gerade aktualisiert zu Rails 4.0.5 und es gibt mir immer noch das Problem Nag. Erhalten Sie die gleichen Bündelfehler, die ich am Ende des Posts bemerkt habe, wenn Sie die vorgeschlagenen Befehle ausführen? – user2936314

+0

Einfache Lösung: http: // stackoverflow.com/a/27460085/115363 –

Antwort

25

Was war für mich gearbeitet

rm -rf bin/*

Dann eine neue Terminal-Sitzung öffnen und

bundle exec spring binstub --all

+0

Das funktionierte auch für mich. –

+21

Ich musste 'Bündel Exec Rake Rails ausführen: Update: bin' nach dem Löschen bin/* –

+3

Ich benutze Spring. Keine von denen arbeitete für mich. Aber 'Bündel binstub rspec-core' hat funktioniert. Ich bin so verwirrt. So viele binstub Optionen. –

-1

Ich konnte dies für bin/rails bei der Commit Geschichte von der Suche beheben git log -p bin/rails mit

Der Strom, Fehler p Inhalt roducing ist:

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

Das Original, nicht-Fehlerinhalt war:

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

Wenn ich die Original-bin/Schienen Inhalt wiederhergestellt, verschwand die Warnmeldung. Vorherige Versuche hatten uninitialized constant Bundler Fehler auf allen bundle exec Befehlen zurückgegeben, aber jetzt funktionieren sie. Es ist erwähnenswert, dass der ursprüngliche Inhalt genau zu sein scheint, was rails new blabla in Rails 4.0.x generiert.

Noch möchte ich wissen, warum der erste Codeblock Probleme verursacht, weil es genau das ist, was bundle install --binstubs erzeugt.

Edit: stellt sich heraus, dass diese Lösung nicht funktioniert.Dieses Update wurde auf einen Heroku-Staging-Server und Heroku-Fehler beim Start gebracht: Alle bin/rails Befehle werfen uninitialized constant Bundler und Heroku startet mit , so dass dies nicht wirklich eine Lösung ist.

Edit2:

Wenn ich diese beiden Leitungen mit dem zweiten Block (die Original-bin/Schienen Inhalt) hinzufügen, werden alle bin/rails Befehle funktionieren wieder:

require 'rubygems' 
require 'bundler/setup' 

Meine Vermutung ist, dass die zweite Leitung ist das, was die Bündelfehler behebt, die ich hatte.

Interessanterweise, als ich versuchte, den ersten Block des Codes in diesem Beitrag zu bearbeiten, um die Warnung zu versuchen und zu debuggen, welche Linie wirft, jede Veränderung, die ich verursachte alle rails Befehle zum Scheitern gemacht, ohne dass Informationen mit Ausnahme des Gaul Note in die Operation. seltsam.

Schluss bin/rails, dass mein Problem behoben:

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

Jede zusätzliche Einsicht von Menschen, die dies willkommen wäre finden!

8

Lösung in meinem Fall: - Andere Lösungen funktionierte nicht für mich.


In Rails-Verzeichnis:

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} 

auch sicher sein, dass ist/Schienen auf den Pfad wie hinzugefügt werden:

PATH=./bin:$PATH 

Viel Glück.

+2

Dies ist das einzige, was für mich funktionierte. Es war wichtig, den letzten Befehl auszuführen: 'PATH =./Bin: $ PATH' Ich ging weiter und machte diese Änderung auch an meinem bash_profile. Scheint nicht die beste Lösung, aber es wird die lästige Nachricht los. – newUserNameHere

+1

@newUserNameHier bin ich froh, dass es dein Problem gelöst hat. –

+0

Die mit diesen Methoden erstellten Binstubs "beseitigen den Fehler" auf Kosten des Geschwindigkeitsvorteils bei der Verwendung von Federbinstubs. Ist es nicht wert. –

1

Dieser Fehler kann auftreten, wenn Sie Ihren Rubin, aber nicht die zugehörigen Edelsteine ​​aktualisieren.

Um zu überprüfen, ob dies der Fall ist, versuchen, eine neue Rails-Anwendung in einem neuen leeren Verzeichnis zu machen (um sicherzustellen, dass RVM keine gemset ist selbstladende)

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

Wenn diese Angabe nicht, dass es nicht finden kann, eine geeignete "Schienen", dann einfach

laufen und überschreiben alle Konflikt Schienen.

1
gem uninstall bundler 
gem install bundler 

Alle meine Versionen von Bundler deinstallieren, und dann installieren Sie die neueste Version repariert es für mich. Ich hatte mehrere Versionen von Bundler installiert, also als ich lief bundle exec rails s Ich denke, dass der falsche Bundler verwendet wurde, gab mir die Warnmeldung.

Möglicherweise müssen Sie nach Neuinstallation Bundler neue Stubs generieren, aber ich musste nicht.