LoginSignup
14
14

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-03-15

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

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が設定されています。

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

使用上の注意

同一URLへは9分間はキャッシュする実装をしていますが、ドメインは考慮していません。
なので同一ドメインで利用する場合はよくよく注意して下さい。
自分が関係するプロジェクトだけに利用するのが良いかと思います。

14
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
14