2010年1月25日月曜日

第17回 scaffoldでスケルトンを作成する

前回に引き続きRuby On Railsから、scaffoldによってスケルトンを作成してOracleDBに接続する。

  1. scaffoldによるスケルトンの作成は次の縛りがあるため、「scott」スキーマの「emp」テーブル名を利用して対象となるテーブルを作成する。
    • テーブル名は複数形である、つまり末尾に「s」が付いたものを単数形のクラスから使用する。
    • カラムの一つが「id」というカラム名があること。
    • 「id」はプライマリキーであること。
    • 「id」はテーブル名 + 「_seq」という名前のシーケンスでインクリメントされること。

    $ sqlplus scott/tiger@orcl
    SQL> create table emps as select * from emp;
    SQL> alter table emps rename column empno to id;
    SQL> alter table emps add constraint emps_pk primary key (id);
    SQL> select max(id)+1 from emps;

    MAX(ID)+1
    ----------
    7935
    SQL> create sequence emps_seq start with 7935;
    SQL> commit;
    SQL> quit

  2. Railプロジェクトをスキーマと同じく「scott」で作成した。後は次の手順のとおり。

    • Oracleアダプタを経由して「scott」スキーマに接続するように「database.yml」を編集する。
    • scaffold ではテーブル名末尾の「s」を取り、先頭文字を大文字にしたクラス名を指定してコードをジェネレートする。
    • WEBrickサーバーを立ち上げる。

    $ rails scott
    create
    create app/controllers
    ...
    create log/test.log
    $ cd scott

    vi config/database.yml

    development:
    adapter: oracle_enhanced
    database: localhost:1521/orcl
    username: scott
    password: tiger

    $ ruby script/generate scaffold Emp ename:string job:string mgr:integer hiredate:datetime sal:decimal comm:decimal deptno:integer
    create
    create app/controllers
    ...
    $ ruby script/server

  3. URLにhttp://server_addr:3000/empsを指定して作成したクラスを呼び出す。

第16回 RailsをOracleに接続する

Ruby On RailsからOracleDBに接続する環境を構築する。OracleDBに接続するためにはoracleのライブラリが参照できる、設定と権限が無くてはならない、このためユーザーを作成してそれを「ruby」とした。

  1. インストール手順
    1. rootでログインして「ruby」グループ、ユーザーを作成する。oracleのライブラリを参照できるようにセカンダリユーザーグループに「oinstall」を指定する。プロファイルはoracleのものを流用して、後で作成する「/opt/ruby/bin」にパスを通しておく。
    2. # groupadd ruby
      # useradd -g ruby -G oinstall -d /export/home/ruby -m ruby
      64 ブロック
      # passwd ruby
      新しいパスワード:
      新しいパスワードを再入力してください:
      passwd: ruby のパスワードが変更されました
      # mkdir -p /opt/ruby
      # chown ruby /opt/ruby
      # cp /export/home/oracle/.profile /export/home/ruby/.profile
      # chown ruby /export/home/ruby/.profile
      # vi /export/home/ruby/.profile

      PATH=/usr/bin:/usr/sbin:/usr/ccs/bin:/usr/sfw/bin:/usr/ucb:$ORACLE_HOME/bin:.; export PATH

      PATH=/opt/ruby/bin:/usr/bin:/usr/sbin:/usr/ccs/bin:/usr/sfw/bin:/usr/ucb:$ORACLE_HOME/bin:.; export PATH

    3. 前回との差異を網伏せにした。すなわちruby-oci8(Oracle Database用の ruby インターフェース)、activerecord-oracle_enhanced-adapter(Oracleアダプタ)、unicode_utils(Unicode ユーティリティ)をインストールする。
    4. $ wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p378.tar.gz
      $ gzip -d ruby-1.9.1-p378.tar.gz
      $ tar xvf ruby-1.9.1-p378.tar
      $ cd ruby-1.9.1-p378
      $ ./configure -prefix=/opt/ruby --enable-pthread
      $ make
      $ make install
      $ wget http://rubyforge.org/frs/download.php/60719/rubygems-1.3.5.zip
      $ unzip rubygems-1.3.5.zip
      $ cd rubygems-1.3.5
      $ ruby setup.rb
      $ gem install ruby-oci8
      $ gem install activerecord-oracle_enhanced-adapter
      $ gem install unicode_utils
      $ gem install rails

    5. バージョンを明示してインストールしてもの。gemが判断してインストールしたものは下記のとおりになる。
    6. $ ruby -v
      ruby 1.9.1p378 (2010-01-10 revision 26273) [i386-solaris2.10]
      $ gem -v
      1.3.5
      $ gem list

      *** LOCAL GEMS ***

      actionmailer (2.3.5)
      actionpack (2.3.5)
      activerecord (2.3.5)
      activerecord-oracle_enhanced-adapter (1.2.3)
      activeresource (2.3.5)
      activesupport (2.3.5)
      rack (1.0.1)
      rails (2.3.5)
      rake (0.8.7)
      ruby-oci8 (2.0.3)
      unicode_utils (1.0.0)

  2. シェルスクリプト
  3. インストール手順を例によってシェルスクリプトにまとめた、これを/tmp以下に作成して、実行権限を与えて、実行する。注意点は、wgetによるダウンロードは通信状況に左右されるので、アボートした場合はそこから再実行する。

    1. rootユーザーで実行するシェルスクリプトは下記のとおり。
    2. #!/bin/sh

      groupadd ruby
      useradd -g ruby -G oinstall -d /export/home/ruby -m ruby
      passwd ruby
      mkdir -p /opt/ruby
      chown ruby /opt/ruby
      sed s'/^PATH=/PATH=\/opt\/ruby\/bin:/' /export/home/oracle/.profile > /export/home/ruby/.profile
      chown ruby /export/home/ruby/.profile
      exit

    3. rubyユーザーで実行するシェルスクリプトは下記のとおり。
    4. #!/bin/sh

      # install Ruby:
      wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p378.tar.gz
      gzip -d ruby-1.9.1-p378.tar.gz
      tar xvf ruby-1.9.1-p378.tar
      cd ruby-1.9.1-p378
      ./configure -prefix=/opt/ruby --enable-pthread
      make
      make install

      # install RubyGems:
      wget http://rubyforge.org/frs/download.php/60719/rubygems-1.3.5.zip
      unzip rubygems-1.3.5.zip
      cd rubygems-1.3.5
      ruby setup.rb

      # install Oracle Call Interface
      gem install ruby-oci8

      # install activerecord-oracle_enhanced-adapter
      gem install activerecord-oracle_enhanced-adapter

      # install Unicode string manipulation functions for Ruby 1.9.
      gem install unicode_utils

      # install Ruby on Rails:
      gem install rails

      exit

2010年1月13日水曜日

第15回 Railsのインストール

Ruby On Rails環境を構築する。まだまだ発展途上にあるフレームワークなので、Rubyは「www.sunfreeware.com」のパッケージを使用しないで、 「ruby-lang.org」から最新版をダウンロードして、ソースからビルドしてインストールする。gem(Rubyパッケージのプライマリインストーラ)は「rubyforge.orgから最新版をダウンロードしてインストールする。

  1. インストール手順
  2. 以下の手順に従い、rootユーザーからインストールを実行する。

    1. コンパイル(gcc)、wgetのための「/usr/sfw/bin」、リンカ(ld)、makeのための「/usr/ccs/bin」パスが設定してあるのか調べて、ない場合は設定する。
    2. # env|grep PATH
      PATH=/usr/sbin:/usr/bin
      # PATH=/usr/bin:/usr/sbin:/usr/ccs/bin:/usr/sfw/bin; export PATH

    3. rubyの最新版をダウンロードして、インストールする。「ruby -v」でバージョンを表示して確認する。なお、デフォルトでは「/usr/local」ディレクトリに配置されるので、Solaris流儀に従い「/opt/local」以下に配置するよう指示した。
    4. # wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p378.tar.gz
        …  
      # gzip -d ruby-1.9.1-p378.tar.gz
        …  
      # tar xvf ruby-1.9.1-p378.tar
        …  
      # cd ruby-1.9.1-p378
        …  
      # ./configure -prefix=/opt/local
        …  
      # make
        …  
      # make install
        …  
      # /opt/local/bin/ruby -v
      ruby 1.9.1p376 (2009-12-07 revision 26041) [i386-solaris2.10]

    5. rubygemsの最新版をダウンロードして、インストールする。「ruby -v」でバージョンを表示して確認する。
    6. # wget http://rubyforge.org/frs/download.php/60719/rubygems-1.3.5.zip
        …  
      # unzip rubygems-1.3.5.zip
        …  
      # cd rubygems-1.3.5
        …  
      # /opt/local/bin/ruby setup.rb
        …  
      # /opt/local/bin/gem -v
      1.3.5

    7. railsをインストールする。「rails -v」でバージョンを表示して確認する
    8. # /opt/local/bin/gem install rails
        …  
      # /opt/local/bin/rails -v
      Rails 2.3.5

  3. シェルスクリプト
  4. インストール手順を例によってシェルスクリプトにまとめた、これを/tmp以下に作成して、実行権限を与えて、実行する。注意点は、wgetによるダウンロードは通信状況に左右されるので、アボートした場合はそこから再実行する。

    #!/bin/sh

    PATH=/usr/bin:/usr/sbin:/usr/ccs/bin:/usr/sfw/bin:/opt/local/bin; export PATH

    # install Ruby:
    wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p378.tar.gz
    gzip -d ruby-1.9.1-p378.tar.gz
    tar xvf ruby-1.9.1-p378.tar
    cd ruby-1.9.1-p378
    ./configure -prefix=/opt/local
    make
    make install
    ruby -v

    # install RubyGems:
    wget http://rubyforge.org/frs/download.php/60719/rubygems-1.3.5.zip
    unzip rubygems-1.3.5.zip
    cd rubygems-1.3.5
    ruby setup.rb
    gem -v

    # install Ruby on Rails:
    gem install rails
    rails -v

    exit