2012-06-10 5 views
8

Mam okresowe zadanie, które musi zostać wykonane raz na minutę (za pomocą delayed_job). Chciałbym, aby Railsy automatycznie ustawiały się w kolejce zaraz po załadowaniu, jeśli jedno takie zadanie nie jest już obecne w systemie.Po uruchomieniu kodu po załadowaniu Railsa?

Co jest dobrym miejscem do uruchomienia kodu pod koniec całego procesu startowego Rails? Ktoś zasugerował config/environments/development.rb (lub inne środowisko), ale delayed_job daje mi problemy z ActiveRecord, kiedy stawiam w kolejce zadania z tego miejsca.

Konsultowałem się z http://guides.rubyonrails.org/initialization.html i nie wydaje się, aby było jasne miejsce dla tego rodzaju kodu.

Czy tego rodzaju konfiguracja po wdrożeniu może być wykonywana na zewnątrz kodu mojej aplikacji, być może za pomocą prowizji lub w inny sposób? Jakieś sugestie?

Dziękujemy!

+0

Cron zadanie? (15 znaków) –

Odpowiedz

8

Jeśli chodzi o http://guides.rubyonrails.org/initialization.html, przepraszamy, ciężko pracujemy nad jego przepisaniem. Dla twojego problemu, spróbuję z config.after_initialize w twoim application.rb

def after_initialize(&block) 
    ActiveSupport.on_load(:after_initialize, :yield => true, &block) 
end 
2

Masz dwie opcje naprawdę

1) dodać go do katalogu initializers i to powinno być OK.

2) dodać na samym końcu environment.rb, to jest mniej czyste, ale będzie to miało takie rzeczy inicjalizatorów gotowych w tym momencie; p więc jeśli 1) nie powiedzie się z powodu problemów AR zrobić 2)