【问题标题】:whenever gem not working, Rails 4每当宝石不工作时,Rails 4
【发布时间】:2015-08-31 07:12:10
【问题描述】:

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

我已按照指南的建议安装了 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>'

【问题讨论】:

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


    【解决方案1】:

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

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

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

    $ whenever --update-crontab
    $ whenever
    

    现在,无论何时使用ENV=DEVELOPMENT 列出您的任务,您都应该看到。

    【讨论】:

    • 我添加了 ':output => 'log/cron.log' 现在我得到了这个 /bin/bash: bundle: command not found in cron.log
    • 您可以尝试从命令提示符运行“捆绑更新”吗?
    【解决方案2】:

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

    env :PATH, ENV['PATH']
    

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

    env :GEM_PATH, ENV['GEM_PATH']
    

    【讨论】:

    • 谢谢,但仍有一些问题。还用一些错误消息更新了我的问题。
    • 当我想通过 SSH 使用 rails 命令时,我必须执行这个命令' source ruby​​venv/ror/2.1/bin/activate'
    • 似乎找不到捆绑 gem,尝试使用 gem install bundler 并阅读表单 here
    • 谢谢,但我已经安装了 bundler 。 gem list bundler 返回 bundler (1.8.2)
    【解决方案3】:

    解决方案:

    我将Whenever更改为Rufus-scheduler。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-09
      • 2011-07-07
      • 2017-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多