2010-03-15 16 views
5

Używam crontabu, który wykonuje zadanie rake. Dostaję następujący błąd (z MAILTO z crontab):Crontab + rails3 + bundler

rake aborted! 
no such file to load -- bundler 
/Users/Mendel/Sites/misnooit/Rakefile:4 
(See full trace by running task with --trace)

Używam RVM z:
Ruby Ruby 1.9.1p378
Rails Rails 3.0.0.beta
$ GEM_HOME : /Users/Mendel/.rvm/gems/ruby-1.9.1-p378
Bundler: Bundler (0.9.11)

błąd jest dość oczywista, ale nie jestem w stanie go naprawić. Czy jest ktoś o większej wiedzy na ten temat? Z góry dziękuję.

+0

czy jesteś pewien, że twój użytkownik załadował twoją konfigurację rvm? – shingara

+0

Myślę, że jestem, ale czy możesz mi pokazać, jak byś to zrobił? Może robię coś nie tak. – user288764

Odpowiedz

1

Po prostu zgaduję: czy domyślną ruby ​​jest Ruby 1.9.1p378?

Myślę, że to nie jest tak, że można po prostu wykonać rvm --defaults "ruby-1.9.1-p378" Jeśli to nie pomoże, czy na pewno zainstalowano bundler, gdy używany był Ruby 1.9?

Ponadto, w twoim środowisku testowym/produkcyjnym, możesz chcieć uruchomić crona u innego użytkownika niż ty. Sugeruję więc zainstalowanie rvm jako "root" i skonfigurowanie (nadal jako root) domyślnej maszyny RVM, która będzie domyślna dla wszystkich użytkowników systemu. Oczywiście można to zmienić dla każdego użytkownika.

1

miałem dobre doświadczenia przy użyciu http://github.com/javan/whenever

używa DSL Ruby zarządzać zadań crona i obsługuje ustawienie całą magię środowiska.

every 3.hours do 
    runner "MyModel.some_process" 
    rake "my:rake:task" 
end 
1

mieć swój uruchomić polecenie z --trace zapewnił, aby upewnić się, że nie jest czymś oczywistym w poleceniu natarcia, ale co można zrobić, to łańcuch polecenia crontab

rvm 1.9.1;rake do_whatever_task 

w ten sposób, że ładuje środowisko ruby ​​za każdym razem przed uruchomieniem prowizji.

6

Po prostu tego doświadczyłem. Problem polegał na tym, że instancje rake i ruby, których używam, zostały zbudowane lokalnie i zainstalowane na/usr/local/bin. Istnieją inne wersje w/usr/bin (musisz sprawdzić, co zainstalowałem używając apt-get w przeszłości ...).

Tak, w moim pliku crontab ustawić ścieżkę korzystając

PATH =/usr/local/bin:/usr/bin:/bin

(widziałam ją jako PATH =/usr/bin:/bin w nieudanych e-mailach crontab)

i to działa.

0

Miałem podobny problem w ten weekend, stwierdziłem, że mój Gem Rake został zaktualizowany do 0.90, potrzebujesz rake 0.8.7. To rozwiązało problem po mojej stronie.