Herokuミートアップ第0回〜第2回ぐらいにちょこちょこ登壇したり出席してるぐらいのHeroku好きな俺ですが、Herokuに月3万ぐらいかかってて、サービスには満足してるんですが、やっぱりTokyoリージョンじゃないと遅いのでAWSかGCPに移ろうかと検討してました。

最後にHeroku EnterpriseのPrivate Spacesを検討してみようとお問い合わせしてみました。

すると要するに最小プランでも月14万ぐらい + 現在のDyno料金アップ + 各種アドオン料金もアップということでした。(まずはお打ち合わせをなどのプレッシャーを回避しつつ聞いたところによると)

おそらくTokyoリージョンが使いたいためだけに使うものじゃないんでしょうね。

GCP行きます…

productionのデータでのみ発生するバグを調査するときなど。

$ dropdb foo_development
$ heroku pg:pull postgresql-foobarbuz-1234 foo_development -a foo

webpacker3系はでかいメリットがあるんですが、yarn 0.25.2以上じゃないと動きません。

herokuのruby buildpackは0.22.0固定なのでこちらのPRを出してる方のreposを使いましょう。

$ heroku buildpacks:set https://github.com/rcugut/heroku-buildpack-ruby#yarn-version-update
$ heroku buildpacks:remove heroku/ruby

マージされたらデフォルトのに戻しましょう。

herokuで普通にgit push heroku masterするとrails db:migrateされません。

下記のbuildpackを使うとENVから指定したコマンドをデプロイ時に実行してくれるのでdb:migrateできます。

gunpowderlabs/buildpack-ruby-rake-deploy-tasks: Run arbitrary rake tasks on deploy to Heroku

$ heroku buildpacks:set https://github.com/heroku/heroku-buildpack-ruby -a your-app-name
$ heroku buildpacks:add https://github.com/gunpowderlabs/buildpack-ruby-rake-deploy-tasks -a your-app-name
$ heroku config:set DEPLOY_TASKS='db:migrate' -a your-app-name

Review AppsのAutomatic Deployをやってる時に便利。

Review.appでの無限ステージング環境をクッソwww快適に使わせて頂いてるんですが、メール内のhost名設定で困ってたら @t-kawa さん、@chiastolite さんが教えてくれました。

あざーす!

% heroku config:get HEROKU_APP_NAME -a kulku-pr-173
kulku-pr-173

取れるじゃな〜い。

staging環境用にconfig/environments/staging.rbをこんな感じにしてみました。

require File.join(__dir__, 'production')

Rails.application.configure do
  config.action_mailer.default_url_options = { host: "#{ENV['HEROKU_APP_NAME']}.herokuapp.com" }
end

これで無限ステージング環境でメールもばっちり。

Cedar-14 is now Generally Available | Heroku Dev Center

cedar-10が11月4日に終了とのことで唯一cedar-10だったこのブログをcedar-14にアップデートしました。

herokuでも放ったらかしで動きづつけるってわけにはいきませんね。たくさんアプリ作っちゃったので定期的にメンテで延命をはかってます。

有料化どうこう以前にピンチ。Herokuが6月16日でbambooスタックの全dynoを停止するそうです。

未だにbambooスタックで動いてたアプリなんてレガシーに決まってるので、普通にcedar-14にするとruby 2.0.0になって動かない。

cedar-14で対応してる最も古いrubyは1.9.3-p551だそうなのでGemfileに明示的に書けばなるべく穏便に移行できます。

source 'https://rubygems.org'
ruby '1.9.3'

Heroku Ruby Support | Heroku Dev Center

Lokkaで沢山作っていたブログなども移行出来てホッとしました。

HerokuのNew Pricingが発表されて実質無料で使い続けることは難しくなりました。このブログも例外ではありません。

「どうせその時がきたら誰かがいい感じの移行先を見つけるだろう。」

「Herokuの大体サービスみたいのが出てくるだろう。」

と思ってましたがそういう気配があまり無い。

社内ツールは基本全部Heroku上に作ってるし(意図せずMicroserviceになってる)、数も沢山あるので頼れる移行先が見つかるまではHerokuにお金を払い、見つかったら移行。ずっと見つからない雰囲気であればDigitalOceanに全部を移行という感じかなと思っています。

できれば無料がいいし、Herokuみたいにgit pushしたらデプロイがいいなと思います(capistranoは糞ダルイ)。

DigitalOceanにHerokuっぽいツールを入れる?

皆さんはどうしようと思っている雰囲気ですか?マジで。

herokuもbuildpackでphpが使えるようになってるのでさくらVPSで運用してた大東亜戦争従軍記をherokuに移行しました。

大東亜戦争従軍記

下記を参考にさせていただいてmysqlのままでClearDB addonを使うパターンでやりました。

blog.handswiz: 言語切り替え機能をつけたwordpressをherokuで動かす

WordPressからWordPressへの移行なので楽ですね。さくらVPSのお金をケチりたかったというのと、スマホで見辛いのでレスポンシブにしたかった。

専用の設定じゃなくてwebhookに送る。

$ heroku addons:add deployhooks:http --url=https://fjord.slack.com/services/hooks/heroku?token=xxxxxxxxxxx

でもこれってpushが終わった瞬間に通知が飛ぶからまだmigrationが終わってなかったりしてお客さんに「まだ反映されてないみたいです」とか言われちゃうから仕事のは個別にhubotで通知したりする。