gpt4 book ai didi

ruby-on-rails - 每当 gem on aws opsworks

转载 作者:行者123 更新时间:2023-12-01 09:58:14 24 4
gpt4 key购买 nike

有没有人有在 aws opsworks 上使用 whenever gem 的经验/成功?有好的食谱吗?我可以将该食谱放在单独的层上并将一个实例与该附加层相关联吗?或者有更好的方法吗?谢谢!!!

编辑:

我们最终做了一些不同的事情......

代码:

不能真正贴出真正的代码,但是是这样的:

在 deploy/before_migrate.rb 中:

[:schedule].each do |config_name|
Chef::Log.info("Processing config for #{config_name}")
begin
template "#{release_path}/config/#{config_name}.rb" do |_config_file|
variables(
config_name => node[:deploy][:APP_NAME][:config_files][config_name]
)
local true
source "#{release_path}/config/#{config_name}.rb.erb"
end
rescue => e
Chef::Log.error e
raise "Error processing config for #{config_name}: #{e}"
end
end

在 deploy/after_restart.rb 中:

execute 'start whenever' do
cwd release_path
user node[:deploy][:APP_NAME][:user] || 'deploy'
command 'bundle exec whenever -i APP_NAME'
end

在 config/schedule.rb.erb 中:

 <% schedule = @schedule || {} %>

set :job_template, "bash -l -c 'export PATH=/usr/local/bin:${PATH} && :job'"
job_type :runner, 'cd :path && bundle exec rails runner -e :environment ":task" :output'
job_type :five_runner, 'cd :path && timeout 300 bundle exec rails runner -e :environment ":task" :output'
set :output, 'log/five_minute_job.log'
every 5.minutes, at: <%= schedule[:five_minute_job_minute] || 0 %> do
five_runner 'Model.method'
end

最佳答案

我们在我们的 repo 协议(protocol)中有一本随时使用的食谱,非常欢迎您在这里使用:https://github.com/freerunningtech/frt-opsworks-cookbooks .我假设您熟悉将自定义说明书添加到您的 opsworks 堆栈。

我们通常在其自己的层上运行它,该层还包括应用程序部署所需的 Rails 说明书(而不是应用程序服务器):

  • 配置:rails::configure
  • 部署:随时部署::rails
  • 取消部署:deploy::rails-undeploy

但是,我们通常也将此实例部署为应用服务器,这意味着我们最终也会从我们正在使用的盒子中为请求提供服务。

有一个“问题”,您必须在 schedule.rb 顶部的环境中设置您的路径,如下所示:

env :PATH, ENV['PATH']

关于ruby-on-rails - 每当 gem on aws opsworks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21101223/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com