【问题标题】:Getting through Capistrano configuration with Whenever gem使用 When gem 完成 Capistrano 配置
【发布时间】:2014-12-29 16:31:40
【问题描述】:

我在每次 gem 的 schedule.rb 文件中设置了一个非常简单的方法

every 10.minutes do
   rake "update_models"
end

我现在想要完成的只是将 Capistrano 配置为通过调用自动创建 crontab

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

whenever -i

但是我没有成功完成冗长的配置过程。我的 Capfile 有以下内容

require "whenever/capistrano"

我的 deploy.rb 文件有以下内容:

namespace :deploy do
  task :update_crontab do
    run "cd /Users/affinities/Desktop/my_app && bundle exec whenever --update-crontab --set environment=development"
  end
end

我只是想在我启动服务器时让 when gem 启动它的 schedule.rb 文件。有人可以一步一步地安装所需的最少 Capistrano 吗?当我运行“rails server”时,我希望更新 crontab。我现在只是在开发环境中尝试。

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4 capistrano whenever


    【解决方案1】:

    我不确定,为什么你认为 capistrano 应该在 rails server 命令上运行你的任务。 Capistrano 用于部署目的,与您本地的 rails server 启动无关。通过包括

    require "whenever/capistrano"
    

    Capfile 中的这一行,您告诉 capistrano 在每个 部署 上重写 crontab。它还将使用在此变量set :rails_env, 'environment' 中的config/deploy/x.rb 中设置的环境。所以require 行就是你所需要的。而您的 run 命令(以及相应的任务)毫无意义:

    run "cd /Users/affinities/Desktop/my_app && bundle exec whenever --update-crontab --set environment=development"
    

    【讨论】:

    • 好的,我想这回答了我的问题...... rails 服务器不是部署,所以对于运行 Capistrano 的本地服务器来说,基本上什么都不做,对吗?我能够使用 Rufus-scheduler 解决我的问题,它就像一个魅力!
    • @affinities23 你可能应该阅读一些关于部署的文章。但简而言之,capistrano 用于将您的代码从存储库(例如 github)传递到远程服务器,并且通过要求无论何时/capistrano,在部署后它还将重写该远程服务器上的 crontab。
    猜你喜欢
    • 1970-01-01
    • 2013-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-06
    • 2019-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多