Nach dem Upgrade Schienen unseres Teams Anwendung auf 4,2, wie die Release-Info erwähnt, ist die Standard - IP rails server
bindet geändert , um localhost
aus 0.0.0.0
.
Wir entwickeln mit Vagrant und möchten, dass der Entwicklungsserver direkt vom Browser auf dem Host-Computer aus zugänglich ist.
Anstatt rails s -b 0.0.0.0
von nun an jedes Mal zu tippen, frage ich mich, ob es eine elegantere Lösung gibt, damit wir etw so einfach verwenden können, wie rails s
den Server zu starten. Vielleicht:
- In einer Konfigurationsdatei wird
rails s
gelesen, wo ich die Standardbindungs-IP ändern kann (ohne sie zu verwenden-c
). - Port vorwärts mit Vagabund (versucht, aber fehlgeschlagen, siehe Problem unten)
- Ein Affen-Patch für das Rack, der die Standard-Bindungs-IP ändert
Das eigentliche Ziel dahinter ist, dass das Upgrade in unserem Team reibungslos verläuft und die Panne vermieden wird, dass die Benutzer ihren Rails-Server aufgrund des fehlenden -b 0.0.0.0
Teils ständig neu starten müssen .
Ich habe versucht, eine vagabundierende Portweiterleitung durchzuführen, bekomme sie aber immer noch, Connection Refused
wenn ich sie localhost:3000
auf dem Host-Computer besuche . Die zwei Konfigurationslinien, die ich ausprobiert habe, waren:
config.vm.network "forwarded_port", guest: 3000, host: 3000
config.vm.network "forwarded_port", guest: 3000, guest_ip: '127.0.0.1', host: 3000
In den offiziellen Dokumenten wurden keine relevanten Anweisungen gefunden. Jede Hilfe wird geschätzt.
quelle
HOST=0.0.0.0
Variable fest, und der Rails-Entwicklungsserver verwendet diesen Wert automatisch.Antworten:
Ich habe hier das gleiche Problem und habe heute eine bessere Lösung gefunden. Hängen Sie diesen Code einfach an Ihre config / boot.rb an und er sollte mit vagrant funktionieren.
ps: Es basiert auf: dieser Antwort
quelle
Sie können foreman verwenden , um a
Procfile
mit Ihren benutzerdefinierten Befehlen auszuführen:Starten Sie nun Ihre Rails-Anwendung mit:
Das Gute an Foreman ist, dass Sie dem Procfile andere Anwendungen hinzufügen können (z. B. Sidekiq, Mailcatcher).
Das Schlechte an Foreman ist, dass Sie Ihr Team trainieren müssen, um
foreman start
statt zu laufenrails s
.quelle
foreman s
wird auch funktionieren - kann ein einfacher Übergang von seinrails s
.Habe das gleiche Problem getroffen. Gefunden das Blog Make Rails 4.2 Server hört auf alle Schnittstellen .
Fügen Sie config / boot.rb Folgendes hinzu
quelle
Wenn Sie die Standardoptionen aktivieren, schlagen
config/boot.rb
alle Befehlsattribute für Rake und Rails fehl (Beispiel:rake -T
oderrails g model user
)! Fügen Sie dies also an diebin/rails
After-Zeile an,require_relative '../config/boot'
und der Code wird nur für den Befehl Rails Server ausgeführt:Die
bin/rails
Datei sieht folgendermaßen aus:quelle
Für Rails 5.1.7 mit Puma 3.12.1 funktioniert die ausgewählte Antwort nicht, aber ich habe dies erreicht, indem ich meiner
config/puma.rb
Datei Folgendes hinzugefügt habe :Ich habe dies durch Überprüfen der DSL-Datei festgestellt . Es wird
instance_eval
für diese Datei verwendet, daher gibt es wahrscheinlich andere Möglichkeiten, dies zu tun, aber dies schien mir die vernünftigste zu sein.quelle
Hier ist eine einfachere Lösung, die ich verwende. Ich mag / brauche bereits dotenv und puma -heroku . Wenn die Verwendung dieser nicht für Sie funktioniert, ist dies möglicherweise nicht für Sie.
/config/puma.rb
Gemfile
.env
Jetzt kann ich sowohl Entwickler als auch Produktion mit starten
rails s
.quelle
Wechseln Sie zu Puma und geben Sie
port
anconfig/puma.rb
, z.Anscheinend wird es für den angegebenen Port an 0.0.0.0 gebunden: https://github.com/puma/puma/issues/896
quelle
Wenn Sie Docker oder ein anderes Tool zum Verwalten der Umgebungsvariablen verwenden, können Sie die
HOST
Umgebungsvariable auf die IP festlegen , die Sie zum Binden benötigen.Beispiel:
HOST=0.0.0.0
Fügen Sie es der
docker.env
Datei hinzu, wenn Sie Docker oder.env
Foreman verwenden.quelle
Bei Rails 5 mit Puma funktioniert die ausgewählte Antwort nicht. Möglicherweise erhalten Sie einen solchen Fehler:
cannot load such file -- rails/commands/server
Für die richtige Lösung fügen Sie Folgendes hinzu
config/puma.rb
:quelle