feedbinをOSXで動かしてみようと思ったらPostgreSQLの設定で若干ハマった

WebベースのRSSリーダー「Feedbin」がオープンソース化される
http://sourceforge.jp/magazine/13/08/28/134000

気になっていたので、ローカルでビルド出来ないかなーと思い、動かしてみる。

インストールガイド

Feedbin Installation on Mac OS X Mountain Lion
https://github.com/feedbin/feedbin/blob/master/doc/INSTALL-mac.md

予想していたけど、Postgres系の設定でハマったのでメモ。しかしながらほとんどパスの設定程度なので大したこと無い。
Feedbinのビルドの仕方というより完全にOSXのPostgresSQLでハマったログである。

Requirementsに書いてるので当然だけど、Postgresは必須。
人のRailsプロジェクトをを動かして見るときに、HerokuのRailsプロジェクトとか元はPGSQLだけどSQLiteでビルドしてみるとかやってたけど、今回は恐らく無理。

上のインストールガイドに従ってbundle installまではだいたい普通に行けると思う。

その1

途中、以下みたいなエラーが出たので(あくまでこんな感じ)

[fjwr38@tigerlily] $(0)rake db:setup                                           [~/.../feedbin:]
/Users/fjwr38/.rvm/gems/ruby-2.0.0-p0@global/gems/polyglot-0.3.3/lib/polyglot.rb:63:in `require': dlopen(/Users/swrobel/.rvm/gems/ruby-2.0.0/gems/pg-0.15.1/lib/pg_ext.bundle, 9): Library not loaded: @executable_path/../lib/libssl.1.0.0.dylib (LoadError)
  Referenced from: /Applications/Postgres.app/Contents/MacOS/lib/libpq.dylib

pg gem 0.15.1 + postgres.app 9.2.4 = more dylib issues https://github.com/PostgresApp/PostgresApp/issues/109

export DYLD_LIBRARY_PATH=/Applications/Postgres.app/Contents/MacOS/lib:$DYLD_LIBRARY_PATH

を.zshrcに追加してsourceすると一応は解決出来た。
Opensslでのエラーみたいな感じのこと書いてたけど自分の場合は違ったのかもしれない。

その2

[fjwr38@tigerlily] $(0)rake db:setup                                           [~/.../feedbin:]
WARNING: Nokogiri was built against LibXML version 2.7.3, but has dynamically loaded 2.7.8
could not connect to server: Connection refused
        Is the server running on host "localhost" (::1) and accepting
        TCP/IP connections on port 5432?
could not connect to server: Connection refused
        Is the server running on host "localhost" (127.0.0.1) and accepting
        TCP/IP connections on port 5432?
could not connect to server: Connection refused
        Is the server running on host "localhost" (fe80::1) and accepting
        TCP/IP connections on port 5432?

明らかにつながって無いような感じで

[fjwr38@tigerlily] $(1)which psql                                              [~/.../feedbin:]
/usr/bin/psql
[fjwr38@tigerlily] $(0)which postgres                                          [~/.../feedbin:]
/usr/local/bin/postgres

システムのPostgresSQLと公式で入れた先のconfigが適切になってないのかもしれないと思ったが、これは純粋にPostgresのアプリケーションを走らせていなかったっぽい。

したがって、アプリケーションからインストールしたPostgresのアプリを走らせる

これで一応Rails Serverは可能

マイグレーション

理由は後ろに書いてるけど、マイグレーションはしなくていい

マイグレーションを走らせようとすると、

[fjwr38@tigerlily] $(0)rake db:migrate                                         [~/.../feedbin:]
WARNING: Nokogiri was built against LibXML version 2.7.3, but has dynamically loaded 2.7.8
pg_dump: server version: 9.2.4; pg_dump version: 9.1.5
pg_dump: aborting because of server version mismatch
rake aborted!
Error dumping database
/Users/fjwr38/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/tasks/postgresql_database_tasks.rb:55:in `structure_dump'
/Users/fjwr38/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/tasks/database_tasks.rb:142:in `structure_dump'
/Users/fjwr38/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/railties/databases.rake:288:in `block (3 levels) in <top (required)>'
/Users/fjwr38/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/railties/databases.rake:51:in `block (2 levels) in <top (required)>'
/Users/fjwr38/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/railties/databases.rake:45:in `block (2 levels) in <top (required)>'
/Users/fjwr38/.rvm/gems/ruby-2.0.0-p247/bin/ruby_noexec_wrapper:14:in `eval'
/Users/fjwr38/.rvm/gems/ruby-2.0.0-p247/bin/ruby_noexec_wrapper:14:in `<main>'
Tasks: TOP => db:structure:dump
(See full trace by running task with --trace)

これに対する解決策としては、

How to Fix pg_dump Version Mismatch Error
http://stackoverflow.com/questions/14168920/how-to-fix-pg-dump-version-mismatch-error

上のStackOverFlowの解凍をざっくり言うと、

  • OSXの/usr/bin/psqlはあくまでPostgreSQLのクライアントツールであり、PostgreSQLがインストールされているわけでは無い
  • なので/usr/bin以下のPostgreSQL系のツールは正直アンインストールした方がいい(俺はアンインストールまではやらなかった)
  • 解決方法としては、/Application/PostgreSQLにパスを向けること

したがって、以下の様な追記を.zshrcに追加する。

PATH="/Applications/Postgres.app/Contents/MacOS/bin:$PATH"

知らんかったけど

rake db:setup

の時点でrake db:create=>rake db:migrate=>rake db:seedあたりまでやってくれてるので、migrateとかはしなくていい。

rakeのタスク一覧
http://pentan.info/ruby/ror/rake_list.html#rake_db

PostgreSQLは普段触らないので勉強になった。

PostgresSQLじゃなくてPostgreSQLでSはダブらないということをずっと勘違いしていた。