2011年5月14日土曜日

herokuを使ってみる(覚書)

herokuとgit 初トライです。

Mackportsのアップデート
$ sudo port -d selfupdate

gitのインストール(Macの場合です)

$ sudo port install git-core

バージョン確認
$ git --version

Railsアプリのディレクトリに移動
$ cd

$ git init
カレントディレクトリに .git ディレクトリが作成される

ソースをコミット
$ git add .
$ git commit -am "first commit"

herokuのサイトでサインアップ
届いたメールでアクティベーション実施

heroku のインストール
$ sudo gem install heroku

heroku 上にアプリ作成
$ heroku create
※ちなみにアプリケーション名にアンダーバー _ は使えないようです

既に秘密鍵を持っていれば
$ heroku keys:add
で鍵を登録

なければ事前に
$ ssh-keygen -t ras
を実行しておく

git に remote を登録
$ git remote add heroku git@heroku.com:.git

これで、次のコマンドで heroku に push できるようになるはず

$ git push heroku masuter

$ heroku db:migrate
$ heroku open

本家のここを見ればほぼ分かると思います
http://devcenter.heroku.com/articles/quickstart

以上

2011年5月5日木曜日

Railsで簡易予約システムを考える(3)

今回はセッションをDBで管理するための設定を行います。

$ rake db:sessions:create

      exists  db/migrate
      create  db/migrate/20110505041507_create_sessions.rb

いくつか設定を変更する必要があります。今回Railsのバージョン 2.3.11 で行っていますので、古いバージョンの場合とファイル名などが一部異なる可能性があります。

config/enviroment.rbのRAILS_GEM_VERSIONパラメータが指定のバージョンになっているか。
(いくつかの古いバージョンの場合、バグなのか設定方法の違いなのかわかりませんが、
 CSRFの対策がされている箇所でエラーが発生することがあります。)

RAILS_GEM_VERSION = '2.3.11' unless defined? RAILS_GEM_VERSION

app/contorollers/application_controller.rbのprotect_from_forgery に
コメントがあれば外します。(私の環境では、はじめからコメントされていませんでした)
protect_from_forgery # See ActionController::RequestForgeryProtection for details

続いて、config/initializers/session_store.rbの以下の箇所のコメントを外します。

ActionController::Base.session_store = :active_record_store

では、はじめに実行したコマンドで、sessionsテーブルのマイグレーションファイルができていますので、rakeタスクを実行します。

$ rake db:migrate

PostgreSQLの場合、session_id列がstring型で作成されますが、デフォルトだと255byteとなるため、セッションのレコード作成時に、長さが足らず、エラーとなることがあるようです。
私の場合、手っ取り早くstring型をtextにしてしまいました。
(※その後、string型で、 :limit => 1024 に変更しました)

これで、セッション情報をデータベースで管理するようになるそうです。