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/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」オプションは推奨されなくなり、何の影響も与えないらしい…。削除してくださいと警告されているので、削除してしまった。(警告なので削除しなくてもサーバーは起動する。)
というかんじ.
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:unitsはibm_db 1.0.0では対応してないようだ.
rake aborted!
Task not supported by 'ibm_db'
とりあえずこれでokだった.donrailsの場合はCSRFを自前で対応していたり,いろいろ凝ったことをしているので大変だったが,こっちはあんがいとうまくいった.