Mam skrypt ruby, który łączy się z wiadrem Amazon S3 i pobiera najnowszą kopię zapasową produkcji. Przetestowałem skrypt (który jest bardzo prosty) i działa dobrze.Praca Cron nie może załadować gem
Jednak, gdy zaplanuję uruchomienie tego skryptu jako zadania cron, wydaje się nie działać, gdy ładuje się klejnot Amazon (aws-s3).
Pierwszych kilka wierszy mojego skryptu wygląda następująco:
#!/usr/bin/env ruby
require 'aws/s3'
Jak powiedziałem, kiedy uruchomić ten skrypt ręcznie, to działa dobrze. Gdy uruchomię go za pośrednictwem zaplanowanego zadania cron, to się nie powiedzie, gdy próbuje załadować gem:
`require ': Nie ma takiego pliku do załadowania - AWS/s3 (LoadError)
crontab dla tego skryptu wygląda następująco:
0 3 * * * ~/Downloader/download.rb > ~/Downloader/output.log 2>&1
I początkowo pomyślałem, że może to być spowodowane cron działa jako inny użytkownik, ale kiedy zrobić „whoami” na początku mojego skryptu ruby on mówi mi, że to działa jako ten sam użytkownik, z którego zawsze korzystam.
Zrobiłem również init pakietu i dodałem klejnot do mojego gemfile, ale to nie wydaje się mieć żadnego wpływu.
Dlaczego cron nie może załadować klejnotu? Używam Ubuntu.
Okazuje się, że muszę zainstalować rubygems w tej powłoce. To pomogło mi go wyśledzić. –