むびりす

むびりすの動作環境をHeroku-18、Ruby 2.6.0、Rails 5.0.0に上げました

今年のテーマは「地に足をつけてやるべきことをやる」に決めました。その一環で、運営しているむびりす(観たい新作映画リストが作れるサービス)を久々にいじり始めています。

サイトのテキストを微修正し、1年半ぶりにHerokuにデプロイしたところ、成功はしたものの、スタック(動作環境)が古いとの警告が出てしまいました。

remote:  !   Warning: You are running on a deprecated stack.
remote:  !   Please upgrade to the latest stack by following the instructions on:
remote:  !   https://devcenter.heroku.com/articles/upgrading-to-the-latest-stack

使っていたCedar-14スタックは、2019年4月でサポートが切れるのです。そこで、最新のHeroku-18に上げることにしました。

ただ、Heroku-18に上げるにはRubyを2.4.5以上にしなければならず、そのためにはRailsを4.2.8以上にしなければなりません。せっかくなので、Rails 5系に上げてしまいました。


そんなわけで、現状は下記の環境で動いています。

対応前対応後
Heroku stackCedar-14Heroku-18
Ruby2.1.52.6.0
Rails4.0.25.0.0

非互換部分の修正や、ついでに始めた開発環境のPostgreSQLアップグレード(8.4から11.1)に意外と手こずりましたが、これでまた、スタートラインに立てたかなという感じです。次はデザイン改善に取り組もうと考えています。Railsも最新の5.2に上げたいところです。


追記(2019-01-11)

その後も色々いじって、下記の環境になりました。

対応前対応後
Heroku stackCedar-14Heroku-18
Ruby2.1.52.6.0
Rails4.0.25.2.2
Web serverUnicornPuma
PostgreSQL9.6.1110.6

Heroku無料枠の変更に伴い、運営中のWebアプリを毎晩眠らせることにした

以前から、人間と同じように夜眠るWebアプリがあってもよい、いや、あってもよいどころか、むしろかわいいんじゃないか、と思っていました。

6月にHerokuの無料枠が変更され、1日に18時間しか起動できなくなるそうなので、これを機に、Herokuで運用している自作Webアプリの「むびりす」を毎晩眠るようにしてみました。

今のところ、開発機のcronで寝かせたり起こしたりしています。

# 0時になったら寝かせる
0 0 * * * cd /path/to/app; heroku maintenance:on
1 0 * * * cd /path/to/app; heroku ps:scale web=0

# 7時になったら起こす
59 6 * * * cd /path/to/app; heroku ps:scale web=1
 0 7 * * * cd /path/to/app; heroku maintenance:off

寝かせている間のメンテナンス画面は、http://a.noare.net/mvls/503 に置いているものです。

$ heroku config | grep MAINTENANCE_PAGE_URL
MAINTENANCE_PAGE_URL:           http://a.noare.net/mvls/503

普通のWebアプリだとこうはできないと思いますが、公開から2年経ってもユーザが2名だけ(ぼくと妻)だったので、躊躇なく進められました。さて、ぼくは喜ぶべきなんでしょうか。


追記(2019-01-11)

今は眠らせていません。経緯は忘れてしまったのですが、現状、ぼくのアカウントは月に1550時間まで無料になっています。なので、眠らせる必要がないのです。

HerokuのPostgreSQLを移行した

hsbt さんの「heroku の postgres の新しいプランが出たので db を移行した」を読んで、僕の運営している「むびりす」でも移行してみた。

手順は公式の「Upgrading Heroku Postgres Databases」にある通り。

$ heroku addons:add heroku-postgresql
...
Attached as HEROKU_POSTGRESQL_CHARCOAL_URL
...

$ heroku maintenance:on
$ heroku pgbackups:transfer HEROKU_POSTGRESQL_CHARCOAL
$ heroku pg:promote HEROKU_POSTGRESQL_CHARCOAL
$ heroku maintenance:off

$ heroku pg:info
=== HEROKU_POSTGRESQL_CHARCOAL_URL (DATABASE_URL)
Plan:        Hobby-dev
Status:      Available
Connections: 4
PG Version:  9.3.3
...
=== HEROKU_POSTGRESQL_COBALT_URL
Plan:        Dev
Status:      Available
Connections: 2
PG Version:  9.1.11
...

$ heroku addons:remove HEROKU_POSTGRESQL_COBALT

無料プランなので、たいして意味はなさそうだけれど、気分はよい。

プロフィール
Webエンジニア。得意分野はシステムの品質改善。情報処理技術者試験のヤリコミ中。ウェブデザイン技能検定・検定委員。JAPAN MENSA会員。
カテゴリ別アーカイブ
記事検索