我们大量部署了大约十几台服务器.我们想使用Whenever gem,但我无法想办法说出cron作业应该继续使用哪台机器!我们只希望这些作业在我们执行后台作业的服务器上运行.
有没有办法指定这个?
我知道这个帖子:rails的cron工作:最佳实践?,但没有提到ActiveJob.我使用ActiveJob做的动机是因为它内置在Rails中,这里是它的文档的摘录:
"这些工作可以是定期清理,计费和邮寄等所有工作."
如何在Rails ActiveJob中创建日常工作(类似cron)?由于我没有看到在其文档中运行定期计划作业的示例.
或者我应该坚持使用whenever
宝石?
我正在尝试设置一个应该每天执行2次的Whenever工作,恰好是上午11点和晚上11点.有没有办法只用一个块做到这一点?我的意思是这样的:
every :day, :at => ['11am','11pm'] do
runner "Task"
end
Run Code Online (Sandbox Code Playgroud) 我正在使用gem来做crone工作,但是当我运行它时:
cd ~/my_project
whenever
Run Code Online (Sandbox Code Playgroud)
我收到错误
/home/tomi/.rvm/gems/ruby-2.0.0-rc1@my_projcet/bundler/gems/rails-d1904aff6f04/activesupport/lib/active_support/core_ext/range/include_range.rb:16:in `each': can't iterate from Time (TypeError)
Run Code Online (Sandbox Code Playgroud)
我在跑
ruby-2.0.0-rc1和rails 3.2.12
delayed_job位于http://github.com/collectiveidea/delayed_job
delayed_job能否执行cron任务?比如每天凌晨1点运行一个脚本.或者每1小时运行一次脚本.
如果没有,有什么合适的宝石可以做到这一点?是否可以使用浏览器远程监控,并记录成功和错误?
我正在使用"随时"的宝石并通过以下方式使其工作:
whenever --set environment=production --update-crontab theCronJob
Run Code Online (Sandbox Code Playgroud)
我正在使用的间隔时间是2分钟,因为我还在试图解决它.但是,现在我每隔2分钟在终端窗口收到一封邮件.我猜cron运行并让我知道它.如何阻止我的cron运行?这些消息开始堆积起来.
谢谢
用户订阅包含最后视频的电子邮件,但他们还设置何时收到这些电子邮件.
Subscription(user_id, frequency, day, time, time_zone)
user_id | frequency | day | time | time_zone
1 | daily | null | 16:00 | GMT
2 | weekly | friday | 11:00 | UTC
3 | weekly | monday | 18:00 | EST
Run Code Online (Sandbox Code Playgroud)
我们如何以用户在其时区选择的确切时间和频率发送电子邮件,而不会搞砸(例如发送双重电子邮件或丢失时间)
唯一的频率是每日和每周,如果每天,那么这一天是空的.
我使用redis作为数据库,让我知道如何以正确的方式做到这一点!
在schedule.rb文件中,语句:
require "#{RAILS_ROOT}/config/environment.rb"
every "10 10 2 * * *" do
command "mysqldump -u #{@db_username} -p#{@db_password} --single-transaction #{@db_name} > #{@backup_Path}/#{@db_name}.sql 2> log/error_crontab.log"
end
Run Code Online (Sandbox Code Playgroud)
当我尝试从终端执行每当cmd时,收到以下错误:
config/schedule.rb:48:in `initialize': uninitialized constant Whenever::JobList::RAILS_ROOT (NameError)
from /usr/local/lib/ruby/gems/1.9.1/gems/whenever-0.7.0/lib/whenever/job_list.rb:19:in `instance_eval'
from /usr/local/lib/ruby/gems/1.9.1/gems/whenever-0.7.0/lib/whenever/job_list.rb:19:in `initialize'
from /usr/local/lib/ruby/gems/1.9.1/gems/whenever-0.7.0/lib/whenever.rb:16:in `new'
from /usr/local/lib/ruby/gems/1.9.1/gems/whenever-0.7.0/lib/whenever.rb:16:in `cron'
from /usr/local/lib/ruby/gems/1.9.1/gems/whenever-0.7.0/lib/whenever/command_line.rb:40:in `run'
from /usr/local/lib/ruby/gems/1.9.1/gems/whenever-0.7.0/lib/whenever/command_line.rb:7:in `execute'
from /usr/local/lib/ruby/gems/1.9.1/gems/whenever-0.7.0/bin/whenever:38:in `<top (required)>'
from /usr/local/bin/whenever:19:in `load'
from /usr/local/bin/whenever:19:in `<main>'
Run Code Online (Sandbox Code Playgroud)
我正在使用require语句从表单中获取动态值以安排作业.请帮忙解决这个问题?
注意:我已经看到了以下stackoverflow查询: 如何在内部检测Rails环境
遵循此线程获取动态值,但面临require语句的问题. Rails - 每当宝石 - 动态值
谢谢,Sudhir CN
是否可以使用cron(通过when gem)直接在可安装的引擎模型上运行任务.我认为cron无法从主应用程序启动,因为可安装引擎应该是隔离的.
我可以在普通的rails应用程序中使用它并且它工作得很好,但我需要以引擎方式运行任务.
谢谢
我有一个 Rails 导入作业,它通过每当 gem 作为 cron 作业设置运行。它一直正常运行,直到我最近更新了该应用程序。现在,当 cron 作业尝试运行时,我们在日志中看到以下错误。如果我手动运行该任务,它将正确运行导入。
/usr/local/lib/ruby/2.6.0/bundler/spec_set.rb:91:in `block in materialize': Could not find rake-13.0.1 in any of the sources (Bundler::GemNotFound)
from /usr/local/lib/ruby/2.6.0/bundler/spec_set.rb:85:in `map!'
from /usr/local/lib/ruby/2.6.0/bundler/spec_set.rb:85:in `materialize'
from /usr/local/lib/ruby/2.6.0/bundler/definition.rb:170:in `specs'
from /usr/local/lib/ruby/2.6.0/bundler/definition.rb:237:in `specs_for'
from /usr/local/lib/ruby/2.6.0/bundler/definition.rb:226:in `requested_specs'
from /usr/local/lib/ruby/2.6.0/bundler/runtime.rb:108:in `block in definition_method'
from /usr/local/lib/ruby/2.6.0/bundler/runtime.rb:20:in `setup'
from /usr/local/lib/ruby/2.6.0/bundler.rb:107:in `setup'
from /usr/local/lib/ruby/2.6.0/bundler/setup.rb:20:in `<top (required)>'
from /usr/local/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:130:in `require'
from /usr/local/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:130:in `rescue in require'
from /usr/local/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:34:in `require'
from /usr/local/bundle/gems/spring-2.1.0/lib/spring/commands.rb:33:in `<module:Spring>'
from /usr/local/bundle/gems/spring-2.1.0/lib/spring/commands.rb:4:in `<top (required)>'
from /usr/local/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
from /usr/local/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
from /usr/local/bundle/gems/spring-2.1.0/lib/spring/server.rb:9:in `<top …
Run Code Online (Sandbox Code Playgroud)