殆ど同じと言って良いくらい使い勝手がHerokuと似ているPaaSのDuostackでもLokkaが動くようになりました。

% gem install duostack
% git clone git://github.com/komagata/lokka.git
% lokka
% duostack create foobarbuz
% git push duostack master
% open http://foobarbuz.duostack.net

Duostackでも動くようにしたと言っても実際は2行足しただけだった。

# Gemfile
group :production do	
   gem 'dm-postgres-adapter', '1.1.0'	
+  gem 'dm-mysql-adapter', '1.1.0'	
end
# config.yml
production:
-  dsn: <%= ENV['DATABASE_URL'] %>
+  dsn: <%= ENV['DATABASE_URL'] || ENV['DUOSTACK_DB_MYSQL'] %>
development:
   dsn: sqlite3://<%= root %>/db/development.sqlite3

Commit f62862d491e5b2dce9afde9c82e6e2c7640ac60f to komagata/lokka - GitHub

これはcoolだ。

HerokuではpostgresだけどDuostackではmysqlで動きます。

% git push heroku master
% git push duostack master

こんな感じで同じローカルリポジトリで二つのPaaSを使い分けるという荒業も出来る。両方AWSベースらしいから障害耐性という面では意味無いけど。

$ curl -o latest.dump `heroku pgbackups:url`

所謂上記で取れるdumpファイルはPostgreSQLマニュアルで言うところの”非プレインテキスト形式のアーカイブ”なのでpg_restoreじゃないとリストア出来ない。不便に思うけど、pgbackupsというサービスを作る事を考えたら柔軟なデータ形式よりも、同じDBだったらroleとか全て取りこぼし無く復旧してくれそうな形式になっているのは納得出来る話だ。(ちょこっとcommentsテーブルだけ取りたいなんて今回の自分の用途にとってはうざいが・・・)

$ pg_restore -d foo foo.dump

roleは違うけどデータは取れた。

$ heroku pgbackups:capture --expire

個数制限があるのでこれで古いのを消しつつ新しいのをバックアップしてくれる。楽だなあ。

他にもっと作るべきものあると思うんですが、ちょっとこのブログに必要だったのでLokkaのHoptoadプラグインとNew Relic RPMプラグインを作りました。

Hoptoad

Hoptoad : p0t Errors

Hoptoadは僕も大好きなshouldaやfactory_girlやpaperclip等のライブラリも作っているthoughtbotのサービス。アプリのエラーを管理するサービスです。最近iOSアプリのエラーにも対応してみたいです。

New Relic RPM

Heroku | docs-komagata-org | New Relic RPM

New Relic RPMはアプリのパフォーマンスを監視してくれるサービスです。

プラグイン

komagata [p0t] - Lokka

プラグイン一覧にHoptoadとNew Relic RPMが増えました。

komagata [p0t] - Lokka

New Relic RPMの方は特はHerokuの場合、Addonを入れただけでプラグインが存在すれば動きますが、HoptoadはAPIキーを上記の設定画面で入力する必要があります。

Herokuの場合、Addonはそれぞれ下記で簡単に追加できます。

% heroku addons:add hoptoad:basic
% heroku addons:add newrelic:bronze

Google Analytics, Hoptoad, New Relic RPMの三つをこのブログに入れてみてわかったことは、1日250PVぐらいしかないのに、レスポンスに1〜3秒ぐらいかかっていて、特に不具合は発生してないが、Herokuから"Backlog Too Deep"のエラーが130も起きてるとのメールが来ることです。

2dynosにしたら$36/monthかかるんですが、性能はあんまり期待出来そうにありません。

月曜日にHeroku-jpの飲み会?に行くのでHerokuネタを。

Herokuを使うには必ず鍵が必要。ちょっと試したいって人には敷居が高いので、使い捨ての鍵作るサービスを作ってみました。

DISPOSABLE KEYS

DISPOSABLE KEYS

GENERATE KEYS押すと、

DISPOSABLE KEYS

鍵が表示される。それぞれ指定の場所に適当なエディタでファイルに保存すればいい。

ソースコード:komagata's disposable-keys at master - GitHub

私有鍵は私有するから安全なのであって、他人に作らせたら意味が無い。あくまで使い捨て用途にどうぞ。1024bit、RSA、パスフレーズ無しで、コード的には下記の2行です。

@private_key = OpenSSL::PKey::RSA.new(1024)
@public_key = @private_key.public_key

標準ライブラリでこんなに簡単に書けるとは知らなかったです・・・。