2016-04-19 4 views
2

Ich habe einen Cron-Job in meinem Schedule.RB eingerichtet, die nur eine benutzerdefinierte Rake-Datei ausführt. Hier ist meine schedule.rb:Immer wenn Gem für Cron Job verwendet falsche veraltete Version von Bundler

set :environment , :development 
    every 2.minutes do 
    rake "runpy" , :output => {:error => "/home/aditya9509/Desktop/rubystack-2.0.0-33/projects/myApp/log/error.log" , :standard => "/home/aditya9509/Desktop/rubystack-2.0.0-33/projects/myApp/log/cron.log"} 
    end 

Beachten Sie, dass runpy eine benutzerdefinierte Rake-Datei und es funktioniert gut, wenn von dem Terminal lief mit dem Befehl:

rake runpy 

Ich habe festgelegt Standardausgabe cron. log und Fehlerausgang error.log Wenn die cron-Job ausgeführt wird, gibt es keine Fehler in error.log gedruckt, aber die folgenden in cron .log:

In Gemfile: 
rails (= 4.2.4) depends on 
    bundler (< 2.0, >= 1.3.0) 

    Current Bundler version: 
    bundler (1.0.15) 

So überprüfte ich die aktuellen Bundl er Version den Befehl

bundler --version 

verwendet, die Ausgänge

Bundler version 1.11.2 

Außerdem dachte ich, ich würde für die Liste der verfügbaren Bündler überprüfen, so dass ich die 1.0.15 Version von cron verwendet deinstallieren kann, so dass Es verwendet automatisch die Version 1.11.2. Ich lief den folgenden Befehl ein:

gem list | grep "bundler" 

Zu meiner Überraschung, die 1.0.15 Version von cron verwendet wurde, ist auf meinem System installiert. Hier war die Ausgabe des obigen Befehls:

bundler (1.11.2, 1.3.6) 
hoe-bundler (1.2.0) 

Wissen Sie, was vor sich geht? Ich bin mir nicht sicher, welche Informationen relevant sind, also lassen Sie mich wissen, ich werde meine Frage entsprechend aktualisieren. Ich benutze das wann immer Juwel, um einen Cron-Job einzurichten.

Antwort

0

Cron läuft nicht in einer interaktiven Shell und lädt daher .bashrc nicht. Wenn Sie RVM oder rbenv oder ähnliches verwenden, ist es wahrscheinlich, dass cron System Ruby verwendet, anstatt des letzten Ruby, das Sie selbst installiert haben.

Um dies zu testen, versuchen Sie which ruby oder ruby -v von Cron ausführen. Ist es so, wie du es erwartest?

Wenn nicht, versuchen Sie einen Shebang an der Spitze Ihrer Datei bin/rails, um Rails in die richtige Ruby-Version zu zwingen. Zum Beispiel wenn Sie verwenden Rubin 2.2.4:

An der Spitze ist/Schienen

#!/Users/<username>/.rvm/rubies/ruby-2.2.4/bin/ruby 

Offensichtlich Ersatz Welchen Weg auch immer Sie für Ruby verwenden.