2011年5月22日日曜日

rails自体の開発環境を作る3

■概要

rails3をモジュール別にテストしていますが、activerecordだけはDBの準備があるので少し面倒そうです。

■activerecord

○sqlite3

$ cd activerecord
$ RUBYOPT=-W0 rake test_sqlite3

......
2986 tests, 9101 assertions, 0 failures, 0 errors, 2 skips

とくに問題なさそうだ。

○mysql & postgresql

まずはデータベースの準備

# yum install mysql mysql-devel mysql-server
# yum install postgresql84 postgresql84-contrib postgresql84-devel postgresql84-libs postgresql84-server

bundlerが、"DB無し設定"なので、再取得する。

$ rm .bundle/config
$ bundle install (adapterのコンパイルが成功するはず)

mysqlの下準備は、ユーザの権限付与とDB構築

# /etc/init.d/mysqld start
$ mysql -u root
mysql> GRANT ALL PRIVILEGES ON activerecord_unittest.* to 'rails'@'localhost';
mysql> GRANT ALL PRIVILEGES ON activerecord_unittest2.* to 'rails'@'localhost';
$ cd activerecord
$ rake mysql:build_databases

postgresqlの下準備は、DB作成とユーザ周り

# service postgresql initdb
# /etc/init.d/postgresql start
$ sudo -u postgres createuser --superuser $USER
$ cd activerecord
$ rake postgresql:build_databases

で、テストを実行

$ RUBYOPT=-W0 rake test
......
2977 tests, 9114 assertions, 0 failures, 0 errors, 2 skips

お、動いた!!(postgresqlで2つ程落ちてますが。。)

■次回予告

ここまでの作業を纏めて、目指せコントリビュータ!な感じにしようと思います。

2011年5月21日土曜日

論理データベース設計(ER図)のチェックリスト

■概要

職業がら、顧客と会話しデータベースの論理設計をする事が良くあります。
自分で設計する分には良いんですが、他人が設計した物を効率的にチェックする為に備忘録がてら記載しておきます。

ちなみに当方は「渡辺幸三さんの著作」と「アナリシスパターン」の影響を一番受けています。

■チェック項目
○キーについて
・データの一意性が、利用者(顧客)と意識があっているか
・PKの無いテーブルはないか
・UKが明示されているか
・多すぎる複合キーはないか
・自然キーとサロゲートキーを意識できているか
・ID / コード・番号を使い分けているか
・FKを意識できているか
・FK/区分との使い分けは考えられているか
・属性項目のドメインを規定する物なので使い分けの基準が重要

○属性について
・ドメイン管理を意識して属性名を付けているか
・継承項目、導出項目が明示されているか
・継承・導出ルールが明示・意識されているか
・時点記録を意識して導出項目を設計しているか?

○多重度・関係について
・多重度が間違っていないか
・1-1関連が存在しないか
・"0以上"なのか"1以上"なのか考察できているか
・親子と参照を意識して使っているか
・派生関係を意識できているか

○正規化について
・繰り返し項目が除去できているか(もしくは意識できているか?)
・PKからの関数従属性のみになっているか
・キー組み合わせについてデータが表現出来ているか

○その他について
・インスタンスレベルでイメージできているか
・インスタンスにするべき概念がテーブルになってないか
・パラレルに重複した構造・関係はないか
・プログラムとの連携を意識できているか
・知識・操作レベルを意識できているか
・データのライフサイクルを意識できているか
・区分が設計されているか
・状態の管理が意識できているか
・人間はミスをするという事を意識できているか
・業務にキャンセルがありえる事を意識できているか

■雑感

思いつくまま記載しても結構あるな。思い出したら追加していこう。。

2011年5月18日水曜日

rails自体の開発環境を作る2

■概要

前回とりあえず環境が出来たのでモジュール毎にtestcaseを実行していきます。

■actionmailer

$ cd actionmailer
$ RUBYOPT=-W0 rake test
......
Finished in 7.010759 seconds.

181 tests, 487 assertions, 0 failures, 0 errors, 0 skips

全部OKだ!

■actionpack

$ cd ../actionpack
$ RUBYOPT=-W0 rake test
......
Skipping MemCacheStoreTest tests. Start memcached and try again.

どうもmemcachedが必要そうです。

# yum install libevent libevent-devel
# cd /usr/local/src
# wget http://memcached.googlecode.com/files/memcached-1.4.5.tar.gz
# tar xvfz memcached-1.4.5.tar.gz
# cd memcached-1.4.5
# ./configure
# make
# make install
# cp /usr/local/src/memcached-1.4.5/scripts/memcached.sysv /etc/init.d/memcached
# vim /etc/init.d/memcached
(memcachedコマンドが見つからないと言われるので、/usr/local/bin/memcachedとした)
# /etc/init.d/memcached start

で再度挑戦

$ RUBYOPT=-W0 rake test
...F......F...
Finished in 68.901053 seconds.

1) Failure:
test_default_params(TestRoutingMapper) [test/dispatch/routing_test.rb:1448]:
<"home"> expected but was
.

2) Failure:
test_non_greedy_regexp(TestRoutingMapper) [test/dispatch/routing_test.rb:1791]:
expected but was
.

3117 tests, 14823 assertions, 2 failures, 0 errors, 0 skips
二つほど落ちているが、一旦無視する。

2011/05/22追記 => 今日見たら全部OKでした。

■activemodel

$ cd ../activemodel
$ RUBYOPT=-W0 rake test
......
Finished in 1.524920 seconds.

492 tests, 1323 assertions, 0 failures, 0 errors, 0 skips

全部OKだ!

■activeresource

$ cd ../activeresource
$ RUBYOPT=-W0 rake test
......
Finished in 3.307448 seconds.

284 tests, 877 assertions, 0 failures, 0 errors, 0 skips

※いくつかDEPRECATIONが出ていました。

2011/05/22追記 => 今日見たら出てませんでした。

■activesupport

$ cd ../activesupport
$ RUBYOPT=-W0 rake test
......
Finished in 7.790476 seconds.

2477 tests, 10526 assertions, 0 failures, 0 errors, 0 skips

全部OKだ!

■railties

$ cd ../railties/
$ RUBYOPT=-W0 rake test
......

すごく時間がかかりますが...3つ程落ちました。。

■activerecord

...次回に続く...

2011年5月17日火曜日

rails自体の開発環境を作る1

■概要

そういえばrails自体の開発環境を作成したい場合どうしたら良いのか?
http://guides.rubyonrails.org/contributing_to_ruby_on_rails.htmlを参考にcentos5.xに環境を作成してみる。

■環境確認&準備

バージョン確認
$ ruby -v
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-linux]

必要なプロダクト等インストール
$ sudo yum install libxml2 libxml2-devel libxslt-devel
$ sudo yum install sqlite sqlite-devel
$ sudo gem install bundler

■railsを取得&テスト実行

$ git clone git://github.com/rails/rails.git
$ cd rails
$ bundle install --without db
$ rake test (全体をテスト。但しmysql/mysql2/postgresql依存は落ちます)

なおモジュール単位でのテストの実行は(例 actionpack)

$ cd actionpack
$ rake test

で良いようです。ちなみにwarningが発生しているので

$ RUBYOPT=-W0 rake test

とすればwarningを抑えられます。続く...

■雑感

う~む、意外にwarningが結構多発しているんですね(AM以外は何かしら発生します)。
後memcached用意した方が良さそうですね。。

2011年5月7日土曜日

rails 3.1 RC4の変更点を翻訳してみた

こちらで公開されているrails3.1 beta1の変更点を翻訳してみました。

(更新)2011/07/20 rails3.1 RC4にしました。

作業途中&超適当翻訳ですが、無いよりはましだと思うので公開します。
埋め込み方がいまいち良くわからないので、こちらへどうぞ。
(凹まない程度の)ツッコミ募集中です!

# どなたか綺麗に埋め込む方法教えてください。↓実験中。