SyntaxHighlighter

2012年2月2日木曜日

HerokuでDBIだ!

とりあえずHeroku上にてHelloWorldの儀式はすんでいる状況からスタート!
サンプルは下記の状態でとします。
#ls
Gemfile
Gemfile.lock
config.ru
hello.rb

#cat Gemfile
source :rubygems
gem 'sinatra'

#cat config.ru
require './hello'
run Sinatra::Application

#cat hello.rb
require 'rubygems'
require 'sinatra'

get '/' do
  "Hello World!"
end


まずはローカルのPostgresqlで動くように修正
#cat Gemfile
source :rubygems
gem 'sinatra'
gem 'dbi'
gem 'dbd-pg'

#cat hello.rb
require 'rubygems'
require 'sinatra'
require 'dbi'

get '/' do
  dbh = DBI.connect('dbi:Pg:dozaemon:localhost', 'dozaemon', '')
  version = dbh.select_one('select version()')
  "Postgresql version is #{version}"
end

Gemfileを編集したのでGemfile.lockを作り直す
bundle install

ローカルで動かしてみる。
#rackup config.ru 

きちんと動くのを確認!

次はHeroku側の接続情報を取得。
ここを参照。

#heroku config
BUNDLE_WITHOUT      => development:test
DATABASE_URL        => postgres://username:password@hostname/database
LANG                => en_US.UTF-8
RACK_ENV            => production
SHARED_DATABASE_URL => postgres://username:password@hostname/database

SHARED_DATABASE_URLを参考にRubyソースを編集
#cat hello.rb
require 'rubygems'
require 'sinatra'
require 'dbi'

get '/' do
  dbh = DBI.connect('dbi:Pg:database:hostname', 'username', 'password')
  version = dbh.select_one('select version()')
  "Postgresql version is #{version}"
end

サーバで動かしてみる。
#git add .
#git commit -m 'db test'
#git push heroku master
#heroku open

うごいた!だめなら heroku logs

0 件のコメント:

コメントを投稿