Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Capistrano/Bundler/Vendored Whenever - "Uninitialized Constant Whenever::JobList::Rails" #144

Closed
coneybeare opened this issue May 31, 2011 · 7 comments

Comments

@coneybeare
Copy link

I have seen similar errors to this marked as resolved in the current version, so I thought I would post as I am using the current version and am still seeing issues with this

 * executing `whenever:update_crontab'
 * executing "cd /home/my_user/my.server.com/apps/my_rails_app/current && bundle exec whenever --update-crontab my_rails_app --set environment=staging"
   servers: ["my.server.com"]
   [my.server.com] executing command
** [out :: my.server.com] /home/my_user/my.server.com/apps/my_rails_app/shared/bundle/ruby/1.8/gems/whenever-0.6.8/lib/whenever/job_list.rb:21:in `initialize': (eval):48:in `initialize': uninitialized constant Whenever::JobList::Rails (NameError)
** [out :: my.server.com] from /home/my_user/my.server.com/apps/my_rails_app/shared/bundle/ruby/1.8/gems/whenever-0.6.8/lib/whenever.rb:15:in `eval'
** [out :: my.server.com] from /home/my_user/my.server.com/apps/my_rails_app/shared/bundle/ruby/1.8/gems/whenever-0.6.8/lib/whenever/job_list.rb:21:in `initialize'
** [out :: my.server.com] from /home/my_user/my.server.com/apps/my_rails_app/shared/bundle/ruby/1.8/gems/whenever-0.6.8/lib/whenever.rb:15:in `new'
** [out :: my.server.com] from /home/my_user/my.server.com/apps/my_rails_app/shared/bundle/ruby/1.8/gems/whenever-0.6.8/lib/whenever.rb:15:in `cron'
** [out :: my.server.com] from /home/my_user/my.server.com/apps/my_rails_app/shared/bundle/ruby/1.8/gems/whenever-0.6.8/lib/whenever/command_line.rb:56:in `whenever_cron'
** [out :: my.server.com] from /home/my_user/my.server.com/apps/my_rails_app/shared/bundle/ruby/1.8/gems/whenever-0.6.8/lib/whenever/command_line.rb:106:in `updated_crontab'
** [out :: my.server.com] from /home/my_user/my.server.com/apps/my_rails_app/shared/bundle/ruby/1.8/gems/whenever-0.6.8/lib/whenever/command_line.rb:37:in `run'
** [out :: my.server.com] from /home/my_user/my.server.com/apps/my_rails_app/shared/bundle/ruby/1.8/gems/whenever-0.6.8/lib/whenever/command_line.rb:8:in `execute'
** [out :: my.server.com] from /home/my_user/my.server.com/apps/my_rails_app/shared/bundle/ruby/1.8/gems/whenever-0.6.8/bin/whenever:38
** [out :: my.server.com] from /home/my_user/my.server.com/apps/my_rails_app/shared/bundle/ruby/1.8/bin/whenever:19:in `load'
** [out :: my.server.com] from /home/my_user/my.server.com/apps/my_rails_app/shared/bundle/ruby/1.8/bin/whenever:19

My versions:

$ which gem
/home/my_user/.rvm/rubies/ruby-1.9.2-p180/bin/gem
$ gem -v
1.6.2
$ which bundle
/home/my_user/.rvm/gems/ruby-1.9.2-p180@my_rails_app/bin/bundle
$ bundle -v
Bundler version 1.0.14
$ which whenever
/home/my_user/.rvm/gems/ruby-1.9.2-p180@my_rails_app/bin/whenever
$ whenever -v
Whenever v0.6.8

Deploy.rb

set :whenever_command, "bundle exec whenever"
set :whenever_environment, defer { stage }
require "whenever/capistrano"

Am I doing something wrong or is this a bug with Whenever?

@javan
Copy link
Owner

javan commented May 31, 2011

Does your schedule.rb file call a method on Rails? Keep in mind whenever doesn't load your Rails env.

@coneybeare
Copy link
Author

Yes :) I am trying to make certain cron tasks only run in certain environments, so I place chunks of code in "if Rails.env == 'staging'" etc…

Is there a supported way of doing this :)

@javan
Copy link
Owner

javan commented May 31, 2011

Since you're --set environment=staging you can can use the environment variable in your schedule.rb: if environment == 'staging'

@coneybeare
Copy link
Author

worked great. Thanks for the lightspeed support.

@mhuggins
Copy link

mhuggins commented Dec 3, 2011

Similarly, how can I do the same in schedule.rb without referencing the Rails object?

set :output, Rails.root.join('log', 'cron.log')

Edit: I should mention that I don't even know what the default value is since it doesn't seem to be mentioned anywhere...perhaps I don't even need to specify an :output value.

@javan
Copy link
Owner

javan commented Dec 3, 2011

You can use Whenever.path to determine the root directory.

@mhuggins
Copy link

mhuggins commented Dec 3, 2011

Thanks! Ended up doing this as the completed line in case anyone else is looking for the same:

set :output, File.join(Whenever.path, "log", "cron.log")

cinic added a commit to cinic/postfix_monitor that referenced this issue Feb 14, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants