2016-04-15 13 views
0

verwenden. In meiner Rails-Anwendung möchte ich die Modellfunktion immer dann verwenden, wenn sie gem. Meine schedule.rb Datei wie,Legen Sie den rubinroten Pfad für die Modellfunktion fest, wenn Sie in den Schienen

set :environment, 'development' 
set :output, "#{path}/log/cron.log" 
set :job_template, "bash -l -c ':job'" 
job_type :runner, "cd :path && bin/rails runner -e :environment ':task' :output" 

every 2.minutes do 
    runner "Book.jobrun" 
end 

every 2.minutes do 
    command "echo 'rink4'" 
end 

Und book.rb Modell wie,

self.jobrun 
    Rails.logger.info "cronjob is running" 
end 

Aber wenn ich laufen cronjob, in cron.log Datei zeigt,

bin/rails:3: undefined method `require_relative' for main:Object (NoMethodError) 

Wie Ich muss den rubinroten Pfad oder den rails Pfad einstellen?

Antwort

0

Versuchen Sie which ruby von Cron laufen. Ist es so, wie du es erwartest? Wenn nicht, ist cron standardmäßig auf System Ruby voreingestellt, welches in Ihrem Fall wahrscheinlich Version 1.8.7 ist und nicht die require_relative Funktion hat.

Überprüfen Sie, welche ruby ​​ausführbaren Sie mit which ruby verwenden. Und benutze dies im Shebang oben auf deiner Mülleimer/Rails. zum Beispiel

ist/Schienen

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