如何在 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 服务器中执行这些 whenever
和 whenever -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 中访问 rails 助手和嵌入资产 javascript 文件中的 ruby?