每当宝石不工作时,Rails 4

时间:2015-06-15 17:16:03

标签: ruby-on-rails ruby ruby-on-rails-3 cron whenever

我正在使用Whenever gem在我的网站上安排一些工作。 目前我正致力于开发环境。

我有指导建议的宝石。

schedule.rb

 every 2.minutes do

  rake "vip_recomend:give"
 end

在lib / tasks / vip_recomend.rake

   namespace :vip_recomend do
      desc "Give vip recomend to ads that are in waiting list"

      task give: :environment do

        girls = Girl.all
           girls.each do |girl|               
               BlacklistMailer.blacklisted(girl).deliver                    
           end  

           user = User.first
            UserMailer.password_reset(user).deliver

      end   
    end

然后我尝试了这些命令:

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

whenever --update-crontab

什么都没发生。

然后我检查cron是否用我的东西更新:

crontab -l

输出:

# Begin Whenever generated tasks for: /home/my_host/blogs/config/schedule.rb
* * * * * /bin/bash -l -c 'cd /home/my_host/blogs && RAILS_ENV=development bundle exec rake vip_recomend:give --silent >> /log/cron_log.log 2>&1'

# End Whenever generated tasks for: /home/my_host/blogs/config/schedule.rb

当我尝试从控制台运行rake任务时,它可以工作。

对此有何帮助? 感谢。

更新1

在schedule.rb中我有这个

env :PATH, ENV['PATH']

在cron错误日志中,我收到此消息。

/opt/alt/ruby21/lib64/ruby/2.1.0/rubygems/dependency.rb:298:in `to_specs': Could not find 'bundler' (>= 0) among 8 total gem(s) (Gem::LoadError)
    from /opt/alt/ruby21/lib64/ruby/2.1.0/rubygems/dependency.rb:309:in `to_spec'
    from /opt/alt/ruby21/lib64/ruby/2.1.0/rubygems/core_ext/kernel_gem.rb:53:in `gem'
    from /home/individualki/rubyvenv/ror/2.1/bin/bundle:22:in `<main>'

3 个答案:

答案 0 :(得分:3)

尝试使用以下格式在schedule.rb中使用指定的环境编写作业:

every 2.minutes do
  rake "vip_recomend:give", :environment => 'development'
end

然后转到命令提示符,并从应用程序目录中尝试以下操作:

$ whenever --update-crontab
$ whenever

您应该看到,只要现在使用ENV=DEVELOPMENT列出您的任务。

答案 1 :(得分:1)

PATH 问题可能是,通过将以下内容放在schedule.rb的顶部,确保正确的捆绑路径

env :PATH, ENV['PATH']

或尝试添加以下内容,如果上面一个不起作用。

env :GEM_PATH, ENV['GEM_PATH']

答案 2 :(得分:1)

<强> SOLUTION:

我随时改为Rufus-scheduler。

在此之前,我尝试了每种可能的解决方案来解决我的问题。 我认为问题出在我在共享主机上的Ruby安装中,但我没有时间去研究它。