LokkaをインストールしてHerokuにデプロイした

[Ruby][備忘録][Heroku][Lokka]LokkaをインストールしてHerokuにデプロイした

あらすじ

Herokuを使い出したのでLokkaを触ってみる。

参考サイト

公式ページの手順だけでなんとかなりそう。

手順

Lokka入手、インストール

LokkaをGitHubからCloneして、Bundle install。–withoutオプションでmysql, postgresql, sqliteから使わないDBを指定できる。

$ git clone git://github.com/komagata/lokka.git$ cd lokka
$ bundle install ./vendor/bundle --without development mysql sqlite

ん、何かエラッた。

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
(略)
Gem files will remain installed in /home/kk_Ataka/github/lokka/vendor/bundle/ruby/1.9.1/bundler/gems/do-d7cb262d89a1/do_postgres for inspection.
Results logged to /home/kk_Ataka/github/lokka/vendor/bundle/ruby/1.9.1/bundler/gems/do-d7cb262d89a1/do_postgres/ext/do_postgres/gem_make.out
An error occured while installing do_postgres (0.10.6), and Bundler cannot continue.
Make sure that `gem install do_postgres -v '0.10.6'` succeeds before bundling.

do_postgresがbundlerだとインストールできてない…?

$ gem install do_postgres
Fetching: addressable-2.2.6.gem (100%)
Fetching: data_objects-0.10.7.gem (100%)
Fetching: do_postgres-0.10.7.gem (100%)
Building native extensions.  This could take a while...
ERROR:  Error installing do_postgres:
     ERROR: Failed to build gem native extension.

        /home/kk_Ataka/.rvm/rubies/ruby-1.9.3-p0/bin/ruby extconf.rb
checking for main() in -lpq... no
checking for main() in -llibpq... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

postgresが入っていなかったので入れる。

※やっぱりSQLite3でやることにしたため以下はメモ。

$ sudo yum install postgresql-devel
(略)
$ cd ~/.rvm/gems/ruby-1.9.3-p0/gems/do_postgres-0.10.7/ext/do_postgres
$ ruby extconf.rb
checking for main() in -lpq... yes
checking for libpq-fe.h... yes
checking for libpq/libpq-fs.h... yes
checking for postgres.h... yes
checking for mb/pg_wchar.h... yes
checking for catalog/pg_type.h... yes
checking for localtime_r()... yes
checking for gmtime_r()... yes
checking for PQsetClientEncoding()... yes
checking for pg_encoding_to_char()... yes
checking for PQfreemem()... yes
creating Makefile
$ make
linking shared-object do_postgres/do_postgres.so
$ make install
/usr/bin/install -c -m 0755 do_postgres.so /home/kk_Ataka/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/site_ruby/1.9.1/x86_64-linux/do_postgres
installing default do_postgres libraries

メモここまで。

Lokkaのディレクトリに戻って再度bundle install…。

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /home/kk_Ataka/.rvm/rubies/ruby-1.9.3-p0/bin/ruby extconf.rb
extconf.rb:10: Use RbConfig instead of obsolete and deprecated Config.
checking for libxml/parser.h... no
-----
libxml2 is missing.  please visit http://nokogiri.org/tutorials/installing_nokogiri.html for help with installing dependencies.
-----
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

(略)

Gem files will remain installed in /home/kk_Ataka/github/lokka/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.5.0 for inspection.
Results logged to /home/kk_Ataka/github/lokka/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.5.0/ext/nokogiri/gem_make.out
An error occured while installing nokogiri (1.5.0), and Bundler cannot continue.
Make sure that `gem install nokogiri -v '1.5.0'` succeeds before bundling.

nokogiriはlibxml2が必要なのか。

$ sudo yum install libxml2-devel

libxsltもか。

$ sudo yum install libxslt-devel

んで満を持してBundle。

$ bundle install ./vendor/bundle --without development mysql postgres

もろもろの設定、ローカルで起動

database.default.ymlファイルをコピーしてdatabase.ymlを作成。そしてDBセットアップから起動。

$ cp database.default.yml database.yml
$ bundle exec rake db:setup
$ bundle exec rackup

http://localhost:9292にアクセスし、TestSiteが表示されたらOK

[f:id:kk_Ataka:20111127024213j:image]

その他

Herokuにpush

Gitでpushする手順は前回の記事を参照。その後、Heroku側のDBセットアップを。

$ bundle exec heroku rake db:setup

Herokuのタイムゾーン

Herokuのタイムゾーンが日本になっていない。日本に住んでいるのでブログ更新したら更新日は日本時間で出てほしいなと思ったが、これはconfig:addで設定でけるよう。

$ bundle exec heroku config:add TZ=Asia/Tokyo

関連記事(この記事の初版より古い記事はリンクがグレーで表示されます)

  1. 2011/11/30 [Ruby] [Heroku] rvm環境でRuby実行時にReadlineエラーが起きた時の対処法
  2. 2011/11/26 [Ruby] [Sinatra] [Heroku] HerokuにWebアプリ(Sinatra)をデプロイする手順をまとめた
  3. 2012/05/21 [SlideShare] [Heroku] [Ruby] [API] SlideShareのAPIを叩いてスライドをDLするRubyスクリプトをHerokuにデプロイした
  4. 2011/12/27 [Evernote] [Ruby] [API] EvernoteのAPIをRubyから叩きたい
  5. 2011/12/26 [Ruby] [Haml] [Sinatra] SinatraでHaml入門
  6. 2011/12/21 [Ruby] Ruby実行時のオプションをよろしく解析してくれるoptparseを使ってみる
  7. 2011/12/15 [Ruby] [Solaris] [Redmine] RedmineとApacheを連携させるPassengerをインストールできなかった
  8. 2011/12/07 [Ruby] ZenTestでRSpecを自動実行できるようにした
  9. 2011/12/05 [Ruby] [Redmine] RedmineでプラグインインストールしたらTemplateErrorが出た
  10. 2011/12/04 [Ruby] [Mac] [Unix] 複数のRuby環境の管理・切替ができるrvmをインストールした
  11. 2011/11/29 [Ruby] pikでインストールしたRubyでbundle exec rubyしたらエラーになった 解決編
  12. 2011/11/28 [Ruby] pikでインストールしたRubyでbundle exec rubyしたらエラーになった
  13. 2011/11/24 [Ruby] 複数のRuby環境の管理・切替ができるpikを実行できた nyaos編
  14. 2011/10/04 [Ruby] 複数のRuby環境の管理・切替ができるpikを実行できた
  15. 2011/10/03 [Ruby] Rubyのgemバージョン管理ができるBundlerを実行できなかった