Edited at

Herokuへ定期的にアクセスしてスリープさせないアプリ「heroku patroller」を作りました。

More than 3 years have passed since last update.


※ この情報は今は使えません。

Herokuの無料版は1日に6時間は必ずスリープするようになりました。

参考

http://sideci.hatenablog.com/entry/2015/05/08/094043

なのであー昔はこんなことができたんだなーとか、

ポーリングってこうやってやるんだなーとか、

Railsの勉強位の認識で見ていただければと思います。


はじめに

HerokuのRailsアプリは一定時間アクセスが無いとスリープしてしまいます(確か30分)。

そこでスリープをさせないために定期的に登録したURLにアクセスするWebアプリを作りました。

ソースコードのURLはこちら↓で

https://github.com/yoshioota/heroku-patroller

このページのDeploy to Herokuボタンを押していただければあなたのHeroku Appliとしてデプロイが可能となってます。

http://www.eigotype.com/ で使うために作りました!

英語を学習している方はぜひこちらもお試しいただければと、

※ New Relic のping機能でも同じことはできるんですけどね、つい。


開発環境

rails 4.2.0

ruby 2.2.1


開発用の定番gem

以下の3つは特におすすめで、これが無いと開発効率が90%はダウンします。

ぜひ皆さんも使ってみていただければと思います。

better_errors, binding_of_caller

rails-footnotes
guard-livereload


ソースコードの説明


app/utils 系と app/services 系フォルダを作成し、そこの下に対象ソースを置く


  • app/utils/*** 以下

いわゆる便利系クラスでコピれば他でも使えそうなクラスを置いてあります。


  • app/services/*** 以下

いわゆるサービスクラス系を置いてあります。

例えば複数のモデルが関係して、どちらのモデルに置くか迷ったりしたものはserviceとして切り出し、とりあえずここへ置いておくのがマイブームです。


パンくずとベーシック認証

concern にて切り出してapplication_controller.rbにてinclude。

こうしておくと別プロジェクトで利用するときもファイルのコピペができて便利。

BASIC認証

https://github.com/yoshioota/heroku-patroller/blob/master/app/controllers/concerns/basic_auth_concern.rb

パンくず

https://github.com/yoshioota/heroku-patroller/blob/master/app/controllers/concerns/simple_breadcrumbs.rb


Deploy to Heroku button とその設定

当アプリのapp.jsonが以下で、addonの追加とrake db:migrateが設定されています。

https://github.com/yoshioota/heroku-patroller/blob/master/app.json

ここを参考に設定しました。

https://devcenter.heroku.com/articles/app-json-schema


使用上の注意

同一URLへは9分間はキャッシュする実装をしていますが、ドメインは考慮していません。

なので同一ドメインで利用する場合はよくよく注意して下さい。

自分が関係するプロジェクトだけに利用するのが良いかと思います。