Custom-Daemon mit Rails 3
Ich versuche, erstellen Sie einen benutzerdefinierten Dienst, der lädt die Rails-Umgebung.
Meine Umgebung ist wie folgt:
ruby-1.9.2-p180
rails 3.0.5
Habe ich Folgendes:
Installierten daemons, die gem
Installiert daemon_generator plugin hier gefunden:
https://github.com/dougal/daemon_generator
Erzeugte daemon: rails generate daemon Zuhörer
All dies funktionierte gut. Wenn ich den daemon, es funktioniert.
Allerdings, sobald ich versuche, den Zugriff auf eine active record-Objekt wie der Versuch, ein Benutzer abgerufen, es explodiert.
*** below you find the most recent exception thrown, this will be likely (but not certainly) the exception that made the application exit abnormally ***
#<NameError: method `recognize' not defined in Rack::Mount::RouteSet>
*** below you find all exception objects found in memory, some of them may have been thrown in your application, others may just be in memory because they are standard exceptions ***
#<NoMemoryError: failed to allocate memory>
#<SystemStackError: stack level too deep>
#<fatal: exception reentered>
#<NoMethodError: undefined method `eq' for nil:NilClass>
#<NameError: method `recognize' not defined in Rack::Mount::RouteSet>
Irgendwelche Gedanken, wie man einen Daemon, der Lasten bis Rails 3.0.5?
- Ich bin mit dem gleichen Fehler hier. Ich kann auch nicht den Lauf der daemon ist. Ich bin mit ree-1.8.7-2011.03. Sorry, keine Hilfe.
- Ich bin immer der gleiche Fehler mit rvm ruby-1.9.2-p136-und Schienen 3.0.7. Hast du jemals eine Lösung finden?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bevorzuge ich roll meine eigenen Schienen daemon Controller. Hier ist ein einfaches Beispiel, das funktioniert für die meisten Fälle:
Skript/daemon
daemons/your_daemon_script.rb
Können Sie Ihre dämonenmasken, indem die folgenden Befehle:
Dieser es mir ermöglicht einfaches hinzufügen von neuen Dämonen und ich kann einfach laden Sie Schienen in jedem Skript, wenn nötig.
Hatte ich eine Menge Probleme damit bekommen daemon_generator arbeiten. Ich habe mein daemon arbeiten durch das überspringen der daemon_generator alle zusammen und nur mit Hilfe der Dämonen gem (v1.1.3).
in urserver_control.rb (in root ruby app-Verzeichnis):
in urserver.rb:
Können Sie testen, indem Sie mit dem server direkt
ruby urserver.rb
oderruby urserver_controller run
Und dann nach der Arbeit starten und stoppen der Steuerung
ruby urserver_control.rb {start | stop | run }
Blick auf den code in https://github.com/dougal/daemon_generator/blob/master/lib/generators/daemon/templates/script.rb es scheint, Sie laden sich die Dinge in der falschen Reihenfolge...
Blick auf meine delayed_job-daemon-Skript und config.ru Sie laden config/environment.rb (die wiederum lädt die Anwendung.rb und initialisiert die app)
Also, eine mögliche Lösung wäre zum Bearbeiten des generierten Skripts und stellen Sie es benötigen nur 'config/environment.rb'
Habe ich versucht, dieses:
und es ergab keine Fehler... (habe Versucht beide Rails 3.0.3 und 3.0.5)
Hatte ich Probleme, läuft als daemon auf meinem Testserver (Schienen 3.0.7, ruby 1.8.7, Beifahrer-3.0.0). Weder
erfordern-Datei.dirname(DATEI) + "/../../config/application"
Schienen.- Anwendung.require_environment!
noch
erfordern-Datei.dirname(DATEI) + "/../config/environment"
Gearbeitet.
Ich es behoben durch Neuinstallation des standard config.ru im rails-root (das hatte ich de-installiert zu integrieren w PKW... nicht wissen jetzt, wie bekomme ich Dämonen & Beifahrer zusammen zu arbeiten jetzt ...)