«前の日記(2009-10-19) 最新 次の日記(2009-10-21)» 編集

会長@腹部日記


2009-10-20 [長年日記]

_ JRuby 1.4.0RC1で、ActiveRecordのユニットテスト (1) - PostgresSQL編

  • Windows XP SP3で実施しました

インストール簡易手順

以下からダウンロード、解凍、パスを通す。

あと、PostgresSQLをダウンロード、パスを通す。

 > set PATH=%PATH%;<JRuby解凍先>in
 > set JAVA_HOME=<JRuby解凍先>jre
 > jruby -v
 jruby 1.4.0RC1 (ruby 1.8.7 patchlevel 174) (2009-09-30 80c263b) (Java HotSpot(TM) Client VM 1.6.0_16) [x86-java]
 set PATH=%PATH%;<Postgresインストール先>in

ActiveRecordユニットテスト実行手順

1. rails 2.3.4 をインストール

 >jruby -S gem install rails
 :
 Successfully installed activesupport-2.3.4
 Successfully installed activerecord-2.3.4
 Successfully installed rack-1.0.1
 Successfully installed actionpack-2.3.4
 Successfully installed actionmailer-2.3.4
 Successfully installed activeresource-2.3.4
 Successfully installed rails-2.3.4
 7 gems installed
 :

2. jdbcをインストール

 >jruby -S gem install activerecord-jdbcpostgresql-adapter
 :
 JRuby limited openssl loaded. gem install jruby-openssl for full support.
 http://jruby.kenai.com/pages/JRuby_Builtin_OpenSSL
 Successfully installed activerecord-jdbc-adapter-0.9.2
 Successfully installed jdbc-postgres-8.3.604
 Successfully installed activerecord-jdbcpostgresql-adapter-0.9.2
 :

3. ActiveRecordのフォルダに移動

 >cd <JRuby解凍先>lib
ubygems.8gemsctiverecord-2.3.4

4. test\connections\jdbc_jdbcpostgresql\connection.rb を見る
  • 7~9行目に以下のように記載されている
# createuser rails --createdb --no-superuser --no-createrole
# createdb -O rails activerecord_unittest
# createdb -O rails activerecord_unittest2
  • 今回のPostgresSQL環境では以下のように実行

 > createuser.exe  -P -a -d -e -U postgres <Windowsのログインユーザ>
 新しいロールのパスワード:<< rails
 もう一度入力してください:<< rails
 パスワード: << PostgresSQLインストール時に指定したパスワード
 CREATE ROLE rails PASSWORD 'md5f5bf6abb224c316ee3d56fa52a8ab524' SUPERUSER CREATEDB CREATEROLE INHERIT LOGIN;
 > createdb activerecord_unittest
 パスワード: << rails
 > createdb activerecord_unittest2
 パスワード: << rails

5. test\connections\jdbc_jdbcpostgresql\connection.rb を編集

 print "Using Postgrsql via JRuby, activerecord-jdbc-adapter and activerecord-postgresql-adapter
"
 require_dependency 'models/course'
 require 'logger'
 
 ActiveRecord::Base.logger = Logger.new("debug.log")
 
 # createuser rails --createdb --no-superuser --no-createrole
 # createdb -O rails activerecord_unittest
 # createdb -O rails activerecord_unittest2
 
 ActiveRecord::Base.configurations = {
   'arunit' => {
     :adapter  => 'jdbcpostgresql',
     :username => '<Windowsのログインユーザ>',
     :password => 'rails',
     :database => 'activerecord_unittest'
   },
   'arunit2' => {
     :adapter  => 'jdbcpostgresql',
     :username => '<Windowsのログインユーザ>',
     :password => 'rails',
     :database => 'activerecord_unittest2'
   }
 }
 
 ActiveRecord::Base.establish_connection 'arunit'
 Course.establish_connection 'arunit2'
PostgresSQL設定次第ではもっと楽にできるかもしれません。

6. UnitTestを実行

 >jruby -S rake test_jdbcpostgresql --trace
 :
 C:/Apli/jruby-1.4.0RC1/lib/ruby/gems/1.8/gems/activesupport-2.3.4/lib/active_sup
 port/dependencies.rb:145:in `load': No such file to load -- test/cases/connectio
 n|ool_test.rb (MissingSourceFile)
 :
失敗・・・エラーメッセージを眺める
 connection|ool_test.rb (MissingSourceFile)
なんじゃこりゃ? connection_pool_test.rb ならわかるが、'_p'が '|'に置き換えられている。 <JRuby解凍先>をまとめて '_p'で検索。

犯人発見。 <JRuby解凍先>\bin\_jrubyvmopts.batを編集

 169行目
 :
 set _RUBY_OPTS=%_RUBY_OPTS:_P=|%
 :

とりあえず @rem でコメントアウトします。JRuby開発元で、jdbcのテスト完璧にやっていないということで。。。

7. UnitTestを実行

 >jruby -S rake test_jdbcpostgresql --trace
 :
 Loaded suite C:/Apli/jruby-1.4.0RC1/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader
 Started
 :
始まったー

8. UnitTest結果発表


2081 tests, 5937 assertions, 70 failures, 184 errors

( ´ ・ ω ・ ` ) いろいろ残念な結果に終わりました。

明日以降は、SQLite3、MySQLの順に試してみます。

_ きょうのつぶやき : 68回