Not able to test cron job in development using Whenever gem in rails 3

242 views
Skip to first unread message

Ankur Kumar

unread,
May 28, 2014, 12:49:21 AM5/28/14
to rubyonra...@googlegroups.com

I did the following to implement cron jobs in rails 3 using a "runner" instead of a rake task.

Step 1: I have whenever gem installed and scheduler.rb has following:


  set :environment, 'development'
  set :output, {
 :error    => "/log/error.log",
 :standard => "/log/cron.log" 
  }

  every 1.minute do
  runner "Cron.sendAutomaticsSMS()"
  end

Step 2:

Cron file: lib/cron.rb


    class Cron < ActiveRecord::Base

      def **sendAutomaticsSMS**()
         ----some code here ---
      end
    end

Step 3:


    whenever --update-crontab --set environment=development 

This updates crontab file.

Step 4:

Checked contents of crontab file using:


    crontab -e  

It opens cron tab file which has details of cron job method to be invoked:



    # Begin Whenever generated tasks for: store

    # End Whenever generated tasks for: store

    # Begin Whenever generated tasks for: /code/rails_projects/new/bhk/bigbhk-     dev/config/schedule.rb
    * * * * * /bin/bash -l -c 'cd <*RAILS_APP_PROJECT_LOCATION*> && script/rails runner -e development '\''**Cron.sendAutomaticsSMS()**'\'' >$

    # End Whenever generated tasks for: /code/rails_projects/new/bhk/bigbhk-dev/

Step 5:

Running cron job:


    $sudo service cron restart

    cron stop/waiting
    cron start/running, process 4027

This does not do anything. I wait for operation as defined in sendAutomaticsSMS() method to execute but the cron doesn't even enter this method.

I don't see any error in log/development.log and there is no log/cron.log in my rails app.

Posted this question on Stackoverflow as well.

Thanks.
--
Regards,
Ankur

Ankur Kumar

unread,
May 29, 2014, 1:55:59 AM5/29/14
to rubyonra...@googlegroups.com

Any help on this will be greatly appreciated! Thanks. 

--
Regards,
Ankur 

Matt Jones

unread,
May 29, 2014, 12:06:38 PM5/29/14
to rubyonra...@googlegroups.com
You'll want to find where your cron logs to:


And post any errors you find in there.

A first guess is that the environment cron is setting up for your task isn't the same as the one you use for development; are you using RVM or rbenv? Gemsets?

--Matt Jones 

Ankur Kumar

unread,
May 30, 2014, 11:47:18 AM5/30/14
to rubyonra...@googlegroups.com

Thanks Matt for your reply! Unfortunately, I don't see any log file in suggested locations the blog referred to:

/var/log/cron/var/log/messages and /var/log/syslog

There is no tail trace my development log file generates.

I am using RVM and bundler for gems. I found similar issue for Rails 4 here but it is unanswered: 


I think whenever is a heavily used rails gem and other developers on this forum who have used this gem can help debugging this problem as well. I hope I followed all the steps for integration. 

Thanks.
--
Regards,
Ankur 

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-ta...@googlegroups.com.
To post to this group, send email to rubyonra...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/c3e897e3-874e-49da-80c1-e1c7809fb720%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Ankur Kumar

unread,
Jun 7, 2014, 5:58:09 PM6/7/14
to rubyonra...@googlegroups.com

I have not been able to resolve this issue. Tried defining a relative path for log location in scheduler.rb file, but it didn't help. I don't see any log file after restarting cron job using: sudo service cron restart and the job as defined in Cron.sendAutomaticsSMS() is not executed. 

*************
RAILS_ROOT/config/scheduler.rb

set :environment, 'development'

log_dir = File.expand_path("../log/", __FILE__)
set :output, {
  :error    => File.join(log_dir, "error.log"),
  :standard => File.join(log_dir, "cron.log") 
}

every 1.minute do
  runner "Cron.sendAutomaticsSMS()"
end
*************

Please help me with this.

Thanks. 

--
Regards,
Ankur 

Reply all
Reply to author
Forward
0 new messages