此终端命令重新启动我的heroku应用程序:

heroku restart

有没有办法运行一个脚本,每小时运行一次这个命令并重新启动我的应用程序?

推荐答案

实际上,我只是需要为我的应用程序解决这个问题,并在上面写了一篇文章,其中包含了更多细节.基本上,您现在需要heroku api gem,因为heroku gem已被CLI取代.然后你需要一个rake任务,几个配置变量和heroku调度器插件(除了最短的dyno时间外,其他都是免费的).

rake任务如下所示:

namespace :heroku do
  desc 'restarts all the heroku dynos so we can control when they restart'
  task :restart do
    Heroku::API.
      new(username: ENV['HEROKU_USERNAME'], password: ENV['HEROKU_PASSWORD']).
      post_ps_restart(ENV['HEROKU_APP_NAME'])
  end
end

您还可以将其设置为使用API令牌,而不是将用户名和密码放入配置中.只有当你不想让你的共同贡献者/同事知道你的密码或你在Heroku上的主帐户密码时,这才重要.

heroku config:set HEROKU_USERNAME=[username] HEROKU_PASSWORD=[password] HEROKU_APP_NAME=[app_name] -a [app_name]

现在,继续部署和测试:

git push [heroku_remote_name] [feature_branch]:master
heroku run rake heroku:restart -a [app_name]

最后,我们需要设置任务以按计划运行它.我 Select 了免费的Heroku cron插件:

heroku addons:add scheduler:standard -a [app_name]
heroku addons:open scheduler -a [app_name]

这将打开浏览器中的调度程序UI,您可以创建一个调度工作程序,以便随时运行rake任务.我们每天只需要一次,我们 Select 在当天的第一个计划作业(job)之前运行它.

我的原始帖子使用了糟糕的CSS(见下面的更新2):

https://web.archive.org/web/20150612091315/http://engineering.korrelate.com/2013/08/21/restart-heroku-dynos-on-your-terms/

UPDATE

我将任务的名称从"内爆"改为"重启",以便更清楚地了解正在发生的事情.内爆是一个有趣的名字,但在其他方面几乎毫无用处.

UPDATE2

显然我的公司删除了这篇博文.我在这里添加了更多代码,并更新了链接,但CSS看起来像是狗扔的.抱歉.

Ruby-on-rails相关问答推荐

Gemfile需要较新版本的依赖项

Django模型在关系更新时更新相关对象

如何使用 Rails 语义记录器记录整个请求(标头、正文等)

微软安全链接在页面加载前解锁用户

为什么有时会出现类型错误没有将 StringIO 隐式转换为 String?Ruby /导轨

Ruby 3 动态关键字参数

线程如何在 Web 应用程序中工作?

Rails - Comment.count没有改变1

如何从设计中删除/禁用注册

Devise + Omniauth - 如何传递额外的参数?

rails 3:将链接显示为按钮?

在 Nokogiri 中获取属性值以提取链接 URL

渲染:动作和渲染:模板之间的区别

Rails ActiveRecord 查询日期范围

在 Rails 中,如何处理多个选中的复选框,只需拆分 , 或?

机械师 vs FactoryGirl - 优点和缺点

使 rails 控制台输出更漂亮一点

在 Devise on Rails beta 3 中创建管理员用户

Rails: Sprockets::Rails::Helper::AssetNotPrecompiled 在开发中

测试和规格有什么区别?