Skonfiguruj Crontab do pracy z Cucumber

0

Próbuję skonfigurować crontab do pracy z ogórkiem. Do tej pory udało mi się uzyskać crontab do wykonania polecenia ruby, ale nie do polecenia ogórka.

Oto, co mam w crontab:

          • ~ / test.sh & gt; ~ / out.log 2 & gt; err.log

Jeśli zrobię to w test.sh, działa dobrze:

/ Absolute-path-to-ruby ~ / test.rb

Jeśli jednak zrobię to w test.sh, nie powiodło się:

/ Absolute-path-to-cucumber ~ / test.feature

To właśnie drukuje w pliku err.log:

nie ma takiego pliku do załadowania - kapibara / ogórek (LoadError)

Jeśli jednak uruchomię test.sh (/ Absolute-path-to-cucumber ~ / test.feature) w terminalu, to nie ma problemu.


Tak więc myślę, że cron i terminal nie używają tej samej wersji ruby ​​(stąd problem ze środowiskiem).

Kiedy zrobiłem $ ruby ​​-rpp -e 'pp ENV' w terminalu, dał mi to:

"_" = & gt; "/ Użytkownicy / nazwa / .rvm / rubies / ruby-1.9.3-p392 / bin / ruby"

Kiedy wykonałem to samo polecenie w cron, dał mi to w pliku dziennika:

„_” = & gt; „/ usr / bin / ruby”

Wygląda więc na to, że cron używa systemu ruby ​​(1.8.7), podczas gdy terminal używa ruby ​​użytkownika (1.9.3). Próbowałem wszystkiego, co mogłem znaleźć, aby cron użył ruby ​​1.9.3, ale jak dotąd nie mam szczęścia.

Czy jakikolwiek organ dałby mi jakąkolwiek wskazówkę lub wskazówkę, jak postępować dalej? Dziękuję za pomoc.

user222776
źródło

Odpowiedzi:

0

Domyślna ścieżka crona to /usr/bin:/bin a domyślną powłoką jest /bin/sh. Nie odczytuje żadnych plików konfiguracyjnych, takich jak .bash_profile.

Czy możesz po prostu dodać . ~/.rvm/scripts/rvm do skryptu?

Lub bash -lc uruchamia powłokę logowania, która odczytuje pliki konfiguracyjne, takie jak .bash_profile.

* * * * * bash -lc '~/test.sh > ~/out.log 2> ~/err.log'
Lri
źródło