如何在 ruby​​ on rails 的亚马逊 aws 服务器中使用 gem 执行 rake 任务?

Posted

技术标签:

【中文标题】如何在 ruby​​ on rails 的亚马逊 aws 服务器中使用 gem 执行 rake 任务?【英文标题】:how to execute rake tasks using whenever gem, in amazon aws server in ruby on rails? 【发布时间】:2016-01-08 06:36:59 【问题描述】:

在我的 Rails 应用程序中,我正在使用无论何时 gem 执行 rake 任务。在开发环境中一切正常,这是以下代码。

 set :environment, "development"
 set :output, :error => "log/cron_error_log.log", :standard => "log/cron_log.log"

 every :day, :at => '12:10pm' do
  runner "Employee.assign_shift_policies"
 end 

并在终端中创建一个 crontab 并通过使用 gem iam 运行以下命令来运行该 cron 选项卡文件。

 whenever
 whenever -w 

并且任务正在正确执行。并且这些 rake 任务的输出正确地附加到以下日志文​​件中。

 log/cron_error_log.log
 log/cron_log.log

在开发中一切正常。如何在 amazon aws beanstalk 服务器中运行这些后台作业,意味着如何在 amazon aws 服务器中执行这些 wheneverwhenever -w 命令以生成 crontab 并使用弹性 beanstalk 在 aws 服务器中执行这些作业?

现在,我正在使用任何时候-elasticbeanstalk gem。我在eb-activity.log 文件中收到以下错误。

Command execution failed: Activity failed. (ElasticBeanstalk::ActivityFatalError)
caused by: /var/app/ondeck/vendor/bundle/gems/whenever-elasticbeanstalk-1.1.6/bin/create_cron_leader:10:in `join': no implicit conversion of nil into String (TypeError)
  from /var/app/ondeck/vendor/bundle/gems/whenever-elasticbeanstalk-1.1.6/bin/create_cron_leader:10:in `<top (required)>'
  from /var/app/ondeck/vendor/bundle/bin/create_cron_leader:23:in `load'
  from /var/app/ondeck/vendor/bundle/bin/create_cron_leader:23:in `<main>'
   (ElasticBeanstalk::ExternalInvocationError)

【问题讨论】:

【参考方案1】:

你有一颗可以做你需要的宝石:

https://github.com/dignoe/whenever-elasticbeanstalk

【讨论】:

但是这个 gem 不是更新的。有什么替代品吗?

以上是关于如何在 ruby​​ on rails 的亚马逊 aws 服务器中使用 gem 执行 rake 任务?的主要内容,如果未能解决你的问题,请参考以下文章

Ruby on Rails 使用 API 从亚马逊购买商品?

ruby on rails如何安装

如何在 ruby​​ on rails 中访问 rails 助手和嵌入资产 javascript 文件中的 ruby​​?

如何在 ruby​​ on rails 4 中创建高级搜索

如何在 ruby​​ on rails 中命名外键?

如何在 ruby​​ on rails 中结合救援多个异常?