railsが1.2でUbuntuが7.10だった時代に作っていたdb2をつかったアプリをいい加減rails2.2に対応させたので忘れる前にメモ.
| 旧 | 新 | |
| Ubuntu | 7.10 | 8.04 |
| rails | 1.2.6 | 2.2.2 |
| DB2 | 9.5 | 9.5(同じ) |
| gem | 0.84(rubygems.debのやつ) | 1.3.1 |
| ibm_db | 0.94 | 1.0.0 |
そしてActiveScaffoldも使っている.
- とりあえずまずはubuntu8.04をいれる.いれたらdb2exeをいれる.
- ubuntuのrubygemsでgemをがんがん入れていってもいいのだが,gemは古いのでまずupdate.gemをupdateするとrubygems.debでいれてたものは台無しになるので,まずはgemをupdateする.
sudo gem update --system sudo apt-get remove rubygems
- できたらgemでibm_dbとrailsをいれる.
sudo -s . /home/db2inst1/sqllib/db2profile export IBM_DB_DIR=/home/db2inst1/sqllib export IBM_DB_LIB=/home/db2inst1/sqllib/lib32 gem install ibm_db gem install rails -y gem install rake -y
- active_scaffoldをgitからとってくる.
rails2.2では1.2時代に動いてたactive_scaffoldはもう動かない.http://activescaffold.com/ をみるとやりかたが書いてある.
git clone git://github.com/activescaffold/active_scaffold.git vendor/plugins/active_scaffold && rm -rf vendor/plugins/active_scaffold/.git
- config/ 以下をいじる
config/environment.rbに config.action_controller.sessionを追加.
config.action_controller.session = { :session_key => "hogecode", :secret => "
abcdefghijklmnopqrstuvwxyz...." }
rake db:migrateかますと,config/environments/development.rbがおかしいことを
指摘してくれる
$ rake db:migrate --trace ..... ** Invoke db:migrate (first_time) ** Invoke environment (first_time) ** Execute environment rake aborted! undefined method `cache_template_extensions=' for ActionView::Base:Class /usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/initializer.rb:530:in `send'
http://d.hatena.ne.jp/zariganitosh/20080621/1214110380 にある
config/environments/development.rbの「config.action_view.cache_template_extensions= false」オプションは推奨されなくなり、何の影響も与えないらしい...。削除してくださいと警告されているので、削除してしまった。(警告なので削除しなくてもサーバーは起動する。)
というかんじ.
- DB2のcreatedbをする.
PAGESIZEが小さいとDB2におこられることがある.
== Initial: migrating ========================================================
-- create_table("contacts", {:force=>true})
-> 0.1195s
-- create_table("inbounds", {:force=>true})
rake aborted!
An error has occurred, this and all later migrations canceled:
ActiveRecord::StatementInvalid: [IBM][CLI Driver][DB2/LINUX] SQL0286N A default table space could not be found with a page size of at least "8192" that authorization ID "DB2INST1" is authorized to use.
しょうがないのでdbをつくりなおす.(db2inst1 ユーザでおこなう)
$ db2 drop db xdmsdev $ db2 create database xdmsdev using codeset utf-8 territory us PAGESIZE 32 K
できたら
rake db:migrate
- rake testで試す.
が,rake test:unitsはibm_db 1.0.0では対応してないようだ.
rake aborted! Task not supported by 'ibm_db'
とりあえずこれでokだった.donrailsの場合はCSRFを自前で対応していたり,いろいろ凝ったことをしているので大変だったが,こっちはあんがいとうまくいった.