実際にプロジェクトを作ってみる
# rails testproject --database=postgresql
3種類のDBを作成します
$ createdb -O apache -E utf-8 testproject_development
$ createdb -O apache -E utf-8 testproject_test
$ createdb -O apache -E utf-8 testproject_production
DBアクセスの情報を設定
database.yml の
database:
username:
password:
encoding:
host: 127.0.0.1 こうすると後述するpg_hba.confと整合性が取れる(設定次第ですが…)
を合わせる。
データベースのテーブルを作るスクリプトを生成
# cd testproject
# ruby script/generate migration create_products
# vi db/migrate/001_create_products.rb
テーブルを作るスクリプトを書く。
def self.up
create_table(:products) do |table|
table.column(:testcolumn, :boolean)
end
end
def self.down
drop_table(:products)
end
↑コンテンツに合ったテーブルとカラムを設計します。
実際にDBテーブルを生成
# rake db:migrate
RailsからPostgresにアクセスできない時は
pg_hba.conf の内容を
#local all all ident sameuser
↓
local all all md5
にしてPostgresを再起動。
原因は、RailsがPostgreSQLにアクセスする際にUNIX socketではなくTCP socketを利用していて,TCPを利用したアクセスではpasswordによるユーザ認証がPostgreSQLの設定で許可されていない かららしいです。
$psql -U apache testproject_development
でtableが生成されているのが確認できます。
DBテーブルに対する画面の生成
# ruby script/generate scaffold Product
間違えて作った時、削除するには(スペルミスとか…)
# ruby script/destroy scaffold Product
最後に
# rake
エラー出るのは、
test/functional/products_controller_test.rb
@first_id = products(:first).id
を
@first_id = Product.find(:first).id
にすればよし。
# ruby script/server でHTTPサーバを立ち上げて、
http://127.0.0.1:3000/products/list を見ると画面表示されています。
月間ページ閲覧者数:9人
[ Ruby ] 一覧へ
|