标签: whenever

heroku上的自定义时钟进程

我刚刚在一个典型的'nix服务器上继承了Rails项目.决定将它移动到客户端的heroku,由我来完成后台进程.目前,它使用Whenever来安排每日事件(电子邮件等)并在启动时启动延迟的作业队列.

Heroku提供了一个使用发条的自定义时钟进程文档的示例,我可以通过这个示例随时使用吗?我可能遇到的任何陷阱?我是否需要创建一个单独的工作人员dyno?

使用发条的Ruby中的预定作业和自定义时钟进程

ruby-on-rails heroku whenever

6
推荐指数
1
解决办法
3693
查看次数

每当Cron与服务器上的多个项目

我在rails应用程序中随时使用并使用capistrano进行部署.

麻烦的是,因为我只将它用于一个项目没有问题,但是当我在同一服务器上使用更多项目时,每次部署我的项目时,我都会销毁并重新创建cron文件.我需要每个项目都更新它或附加新指令,以便在同一台服务器上共存.

我只是部署

deploy.rb

set :whenever_command, "bundle exec whenever"
require "whenever/capistrano"
...
after "deploy:create_symlink", "deploy:update_crontab"
....
Run Code Online (Sandbox Code Playgroud)

有人可以教我怎么办?

deployment capistrano ruby-on-rails whenever whenever-capistrano

5
推荐指数
1
解决办法
535
查看次数

使用rails runner的未定义方法

无论什么时候我都在使用gem,而且我无法让我的跑步者指令正常工作.

我收到这个错误:

/Users/bl0b/.rvm/gems/ruby-1.9.3-p125/gems/railties-3.2.11/lib/rails/commands/runner.rb:53:in `eval': undefined method `run' for #<Class:0x007f97d88744a8> (NoMethodError)
    from (eval):1:in `<top (required)>'
    from /Users/bl0b/.rvm/gems/ruby-1.9.3-p125/gems/railties-3.2.11/lib/rails/commands/runner.rb:53:in `eval'
    from /Users/bl0b/.rvm/gems/ruby-1.9.3-p125/gems/railties-3.2.11/lib/rails/commands/runner.rb:53:in `<top (required)>'
    from /Users/bl0b/.rvm/gems/ruby-1.9.3-p125/gems/railties-3.2.11/lib/rails/commands.rb:64:in `require'
    from /Users/bl0b/.rvm/gems/ruby-1.9.3-p125/gems/railties-3.2.11/lib/rails/commands.rb:64:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'
Run Code Online (Sandbox Code Playgroud)

我的代码中包含以下代码shedule.rb:

set :environment, 'development' 

     every 1.minutes do
       runner "Crawler.run", :output => '/Users/bl0b/Projects/crawler/cron.log'  
     end
Run Code Online (Sandbox Code Playgroud)

在我的app/models/crawler.rb我有以下代码:

class Crawler < ActiveRecord::Base

  def run
    puts "toto"
  end

end
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails runner whenever ruby-on-rails-3

5
推荐指数
1
解决办法
3167
查看次数

无法在rails 3中使用cronjob

我参考https://github.com/javan/whenever,按照所有步骤进行操作

在schedule.rb中

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

every 1.minute do
   runner "User.weekly_update"
end
Run Code Online (Sandbox Code Playgroud)

在gemfile中

gem 'whenever', :require => false
Run Code Online (Sandbox Code Playgroud)

输出一些命令

localhost:〜/ project $ when -i

[write] crontab file updated
Run Code Online (Sandbox Code Playgroud)

localhost:〜/ project $ crontab -l

# Begin Whenever generated tasks for: /home/bacancy/project/config/schedule.rb
* * * * * /bin/bash -l -c 'cd /home/bacancy/project && script/rails runner -e     production '\''User.weekly_update'\'' >> /log/cron.log 2>> /log/error.log'

# End Whenever generated tasks for: /home/bacancy/project/config/schedule.rb …
Run Code Online (Sandbox Code Playgroud)

cron ruby-on-rails crontab whenever ruby-on-rails-3

5
推荐指数
1
解决办法
2240
查看次数

Rails:在开发环境中测试Cron Jobs

我有一个名为'reports'的自定义环境,它设置为命中从属数据库.我正在尝试使用Whenever gem 配置一些cron作业,并希望在部署之前在开发中测试它们.有没有办法在开发中测试cron作业?无论如何我可以在本地安排它们然后启动我的报告服务器,看看它们是否运行?谢谢!

ruby cron ruby-on-rails whenever

5
推荐指数
1
解决办法
1419
查看次数

sidekiq +每当+独角兽未初始化的恒定ClassWorker生产环境

我使用Rails 4,sidekiq 2.13.1,每当cron脚本每2分钟运行一次.在第一次执行期间没有错误但是所有下一次都会出错.我只在生产环境中遇到此错误.我的工作人员位于app/workers中.我通过在application.rb中跟随字符串来包含它:

config.eager_load_paths += %W(#{config.root}/app/workers) 
Run Code Online (Sandbox Code Playgroud)

错误:

2013-08-15T12:34:05Z 31102 TID-oh1d0 WARN: {"retry"=>true, "queue"=>"default", "class"=>"AllGlobalWorker", "args"=>[], "jid"=>"c8f5827813277c890b4a621e", "enqueued_at"=>1376570045.3903732}
2013-08-15T12:34:05Z 31102 TID-oh1d0 WARN: uninitialized constant AllGlobalWorker
2013-08-15T12:34:05Z 31102 TID-oh1d0 /home/shared/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/inflector/methods.rb:226:in `const_get'
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?谢谢.

ruby cron whenever sidekiq

5
推荐指数
1
解决办法
760
查看次数

每当gem时都运行rails,仅在满足特定条件时运行命令。

我们在我们的项目中使用带轨道的宝石。我了解我们可以使用每当gem这样的时间来调度命令。

every 1.day, :at => '6:00 am' do
  command "echo 'hello'"
end
Run Code Online (Sandbox Code Playgroud)

但是我的问题是我只想在满足某些条件时才执行此命令。这样的事情。

every 1.day, :at => '6:00 am' do
 if User.any_new_user? 
  command "echo 'hello'"
 end
end
Run Code Online (Sandbox Code Playgroud)

我们如何通过everyth和rails实现这一目标?我能想到的一种可能的解决方案是,我为此创建一个跑步者并检查那里的状况。

every 1.day, :at => '6:00 am' do
  runner "User.say_conditional_hello"
end
Run Code Online (Sandbox Code Playgroud)

在我的用户模型中:

def self.say_conditional_hello
    `echo "Hello"`
end  
Run Code Online (Sandbox Code Playgroud)

关于此方法或任何新方法的任何建议将非常有帮助。

提前致谢!。

cron ruby-on-rails whenever

5
推荐指数
1
解决办法
395
查看次数

rails + sideqik ...如何在特定的日期和时间执行任务

我在Rails应用程序中使用https://github.com/mperham/sidekiq gem在特定的日期和时间安排任务。例如:在约会安排时间之前10分钟发送约会提醒。

class TextWorker
include Sidekiq::Worker

    def perform(appointer_id)
        number = Usermodel.find_by_id(appointer_id).contact
        Message.create(:from =>  email, 
                           :to =>   number,
                               :body => 'Thank you...Your appointment is at 10/1/2015 Sun, at 12pm')
    end

end
Run Code Online (Sandbox Code Playgroud)

并在约会控制器中在此处调用它:

class Appointments_controller

def create
    TextWorker.delay_until(10/20/2014, 13:40).perform_async(@user_contact)
end
Run Code Online (Sandbox Code Playgroud)

delay_until不适用于特定的日期/时间:

还有其他方法可以在sideqik中的特定日期/时间执行任务吗?如果是这样怎么办?请

cron datetime whenever ruby-on-rails-3 sidekiq

5
推荐指数
1
解决办法
1269
查看次数

Cron作业使用Whenever VM,Docker和Dokku

我在Ubuntu 14.04上的Docker容器中有一个Ruby on Rails应用程序.我使用Dokku设置部署,但我不确定如何让我的cron作业正常工作.

目前我正在使用every gem,它允许我做一些简单的事情:

every 5.minutes do
  runner 'MyModel.run_something'
end
Run Code Online (Sandbox Code Playgroud)

问题是我认为每次使用git push dokku master它部署时都会重置容器并将其设置回默认设置,从而删除所有我的cron时间表.

所以我想也许cron调度需要在容器外部而在VM级别.

无论我做什么,我目前都没有看到任何cron工作正在运行.这是当我crontab -l在ssh'd 时运行时发生的事情:

root@dashboard:~# crontab -l
no crontab for root
Run Code Online (Sandbox Code Playgroud)

我对容器虚拟化很陌生,所以如果我跳过了关键部分,我很抱歉,但我很难过.

cron ruby-on-rails whenever docker dokku

5
推荐指数
1
解决办法
3754
查看次数

除了应用程序之外,如何在单独的不同 docker 容器中运行 sidekiq

除了应用程序之外,如何在单独的不同 docker 容器中运行 sidekiq。我们在任何时候使用 sidekiq 作业,但这些作业在所有 Web 容器中都被触发

  1. 我们如何设置 web 容器(rails 应用程序)和 sidekiq 工作器以水平扩展(最好作为单独的容器)。
  2. 我们应该如何管理数据库迁移,因为 sidekiq、ui 容器使用相同的图像
  3. 我正在尝试使用以下代码段,这是正确的还是应该有所不同?
version: '3.8'

services:
  foo-db:
    image: postgres:$POSTGRES_VERSION
    container_name: foo-db-container
    restart: unless-stopped
    env_file: .env
    volumes:
      - /var/lib/postgresql/data
    networks:
      - $FOO_NETWORK

  foo-redis:
    image: redis:$REDIS_VERSION
    container_name: foo-redis-container
    init: true
    sysctls:
      net.core.somaxconn: 511
    env_file: .env
    volumes:
      - /var/lib/redis/data
    networks:
      - $FOO_NETWORK

  foo-sidekiq:
    depends_on:
      - foo-db
      - foo-redis
    build: ./foo-ui
    command: bundle exec sidekiq
    env_file: .env
    volumes:
      - /var/lib/redis/data
    networks:
      - $FOO_NETWORK

  foo-service:
    build: foo-service
    # image: gcr.io/foo/foo-service:latest …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails whenever sidekiq docker docker-compose

5
推荐指数
1
解决办法
1337
查看次数