rubyでCMS構築したい ~lokka~

WordPressはPHPだからrubyでCMSしたいよねってことで、lokkaを触ってみました。

参考サイト

ローカルでの環境構築はここに書いてある手順通りに実行すれば、難なくできました。
Herokuのデータベース設定周りでいざこざがあったので、書き留めておきます。

$ gem install heroku bundler
$ git clone git://github.com/komagata/lokka.git
$ cd lokka
$ heroku create
$ git push heroku master

と、ここまではokです。
さて、次に、herokuにpostgresqlを追加します。
addonと聞いて、即課金だと思ってしまったので、躊躇してたのですが、devプランだと、無料です。(確か50MBまで無料)

$ heroku addons:add heroku-postgresql:dev
Adding heroku-postgresql:dev on chie-lokka... done, v4 (free)
Attached as HEROKU_POSTGRESQL_OLIVE
Database has been created and is available
Use `heroku addons:docs heroku-postgresql:dev` to view documentation.

そして、この次がエラーになりました。


$ heroku run rake db:setup
Running `rake db:setup` attached to terminal... up, run.1
rake aborted!
+options+ should be Hash or Addressable::URI or String, but was NilClass

(See full trace by running task with --trace)

データベースのURLが設定されてないよーってことです。

ググっていたら、lingrにlokkaのコミュニティを発見したので、直接質問してみました。
突然だったものの、lokkaの開発者の方たちが、すぐに対応してくれました。ありがたや!

このときの修正だと、lokka直下にあるdatabase.default.ymlを修正します。

production:

# addonで発行されたポスグレのURLを直接指定する
dsn: <%= ENV['DATABASE_URL'] || ENV['HEROKU_POSTGRESQL_OLIVE'] %>

development:
 dsn: sqlite3://<%= root %>/db/development.sqlite3
test:
 dsn: <%= ENV['DATABASE_URL'] || "sqlite3://#{root}/db/test.sqlite3" %>

で、これを反映させるために、gitでpushし直してからherokuを動かしたら、無事にheroku上でlokkaが動くのを確認しました!


$ git add .
$ git commit -m 'database url fix'
$ git push heroku master
$ heroku run rake db:setup
$ heroku apps:open

なんでこうなっちゃったのか、

という話は、以下の記事の通りです。
データベース周りの仕様が変わってしまったのでした。

で、その後、ソースをよくよく見たら、

addonの所に答えが載ってたね。(herokuええやつや)

heroku addons:docs heroku-postgresql:dev

を実行すると、ブラウザに herokuのpostgresqlページ が開く。
ここを参照すると、DATABASE_URLへの設定方法が記述されているので、上記のaddonでgetした HEROKU_POSTGRESQL_XXXXX (人によって名前は異なる)を設定する。


$ heroku pg:promote HEROKU_POSTGRESQL_OLIVE
$ heroku run rake db:setup
$ heroku apps:open

これで行ける・・・はず!(試さないとは)
この手順で行けば、database.default.ymlの修正もいらないのだ。