Wie erkennt man die Rails-Umgebung innerhalb von wann immer?
Diese Frage wird wohl nur Sinn machen, wenn man weiß, dass die Wann immer Juwel für die Erstellung cron Arbeitsplätze.
Für meine app, die ich verwenden möchten whenever
in allen Umgebungen, einschließlich testen und Entwicklung.
Meine schedule.rb
sieht wie folgt aus:
set :output, {
:error => "#{path}/log/error.log",
:standard => "#{path}/log/cron.log"
}
set :environment, Rails.env.to_sym
every 5.minutes do
rake 'db:activity:synchronize'
end
aber es scheitert an Rails.env.to_sym
(und der gleichen steht für RAILS_ENV
):
/home/marius/.rvm/gems/ruby-1.9.2-p290@uxolo/gems/whenever-0.6.8/lib/whenever/job_list.rb:21:in `eval': uninitialized constant Whenever::JobList::Rails (NameError)
from /home/marius/.rvm/gems/ruby-1.9.2-p290@uxolo/gems/whenever-0.6.8/lib/whenever/job_list.rb:21:in `eval'
from /home/marius/.rvm/gems/ruby-1.9.2-p290@uxolo/gems/whenever-0.6.8/lib/whenever/job_list.rb:21:in `initialize'
from /home/marius/.rvm/gems/ruby-1.9.2-p290@uxolo/gems/whenever-0.6.8/lib/whenever.rb:15:in `new'
from /home/marius/.rvm/gems/ruby-1.9.2-p290@uxolo/gems/whenever-0.6.8/lib/whenever.rb:15:in `cron'
from /home/marius/.rvm/gems/ruby-1.9.2-p290@uxolo/gems/whenever-0.6.8/lib/whenever/command_line.rb:41:in `run'
from /home/marius/.rvm/gems/ruby-1.9.2-p290@uxolo/gems/whenever-0.6.8/lib/whenever/command_line.rb:8:in `execute'
from /home/marius/.rvm/gems/ruby-1.9.2-p290@uxolo/gems/whenever-0.6.8/bin/whenever:38:in `<top (required)>'
from /home/marius/.rvm/gems/ruby-1.9.2-p290@uxolo/bin/whenever:19:in `load'
from /home/marius/.rvm/gems/ruby-1.9.2-p290@uxolo/bin/whenever:19:in `<main>'
So, meine Frage im Grunde läuft:
- Wie erhalte ich Zugriff auf die aktuelle Umgebung, oder
- Was soll ich tun, zu verwenden
whenever
in alle Umgebungen?
InformationsquelleAutor der Frage Marius Butuc | 2011-08-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Fehlermeldung deutet darauf hin, dass Schienen nicht definiert ist. ich.e der Rahmen ist nicht geladen, wenn Sie die Frage stellen, was Umwelt ist, die Schienen mit.
In der Tat aus der Betrachtung der code für die, Wann immer es sieht aus wie Schienen ist kein Erfordernis (D. H. Sie installieren und ausführen können, Wenn ohne Reling auch auf Ihrem system installiert haben). Daher gibt es keine Möglichkeit für, Wann auch immer betrachten Ihre rails-Umgebung (soweit ich das sagen kann)
InformationsquelleAutor der Antwort Chris Bailey
Zumindest in der neueren version, Wann immer es möglich ist, die Umwelt mit
@environment
. Zum Beispiel, wenn Sie wollen, Wann nur zu erzeugen, cron-Einträge für einige Arbeitsplätze in der Produktion:InformationsquelleAutor der Antwort Mattias Wadman
Als empfohlen von der gem Autordie Lösung ist pass in der aktuellen Umgebung als eine variable:
Und Chris Bailey hat Recht:
Whenever
sich nicht laden der Rails-Umgebung.InformationsquelleAutor der Antwort Marius Butuc
Einer variation der ersten Antwort auf eine ähnliche Frage für mich gearbeitet. Hinzufügen
oben
schedule.rb
und Sie werden in der Lage sein zu rufen Schienen.env Zugriff auf die aktuelle Rails-Umgebung.Hinweis: die oben angegebenen Pfad wäre anders, wenn Ihr
environment.rb
Datei nicht im/app/config
InformationsquelleAutor der Antwort JCoster22
Ich nahm die Umsetzung der
Rails.env
fand ich hier (durch klicken auf "Quelle"), und verwendet zur Initialisierung der::Rails
Modul, das am Anfang desconfig/schedule.rb
Dies schafft die
Rails
Modul, und macht aus seinem Umfeld zurück, was Sie geliefert--set environment=...
imwhenever
Befehlszeile, wie der script-Autor suggeriert.Jedoch Wann setzt die
@environment
auf die Produktion von Standard -so dass diese große "oder" möglicherweise nicht sehr nützlich.Nun die
Rails.env
rufen Sie in der Wenn-Skript funktionieren würde. Was war wichtig in meinem Fall, er arbeitete auch in anderen scripts, die ich inschedule.rb
wie die, die geladenapplication.yml
.P. S. Die
eval
Aufruf wird verwendet, um den Zugang@environment
erhältlich in den Anwendungsbereich derschedule.rb
Skript aus dem inneren der definition eines Moduls.InformationsquelleAutor der Antwort P Shved