railsが2.0にアップグレードしたときのoracle構成の変更


詳細
昨年、rails 1.2.3でoracleの応用をしたことがあります.その後、rails 2.0が出てから、データベースはmysqlを使っています.この2、3日oracleで使用する必要があるので、rails 2を0.2 oracleにアップグレードします.面倒なことが多いとは思わなかった.
一般的なアップグレード
2.0以降、ビジネスデータベースのadapterはコアから移動され、現在、新しいビジネスデータベースのadapterはactiverecord-XYZ-adapterの命名規則、すなわちactiverecord-oracle-adapterに従う.
インストールが必要です.
  • アダプタ(adapter)
  •  gem install activerecord-oracle-adapter --source http://gems.rubyonrails.org

  • ruby-oci 8駆動
  • gem install ruby-oci 8またはruby ruby-oci 8-1.0.0-mswin 32.rb

  • oracleクライアント
  • その後のトラブル
    いくつかのヒントを押して、ymlファイルの中のadapter:ociをadapter:oracleに変えて、仕事ができると思っていました.しかし、結果はがっかりして、いつもTNSの間違いを報告しています.
    悔しい解決策
    Googleを繰り返してみると、E:InstantRails-2.0-winrubylibrubygems1.8gemsactiverecord-oracle-adapter-1.0.0.9216libactive_record\connection_adaptersの下にあるoracle_adapter.rbはociと改名した.rbは、adapterを再びociに変更する.やってみると、この技は効果的だ.その後、移行タスクの実行などが正常になる.
    やっと飛び出した
    このように使うことができますが、TDDで標榜するrailsがこんなに大きなバグを残すとは信じられません.上の解決策は本当に悔しいです.
    翌日また来てやっと問題点を発見した.
    以前にoracle向けのアプリケーションがあったので、ymlのプロファイルはcopyである.書き方は以下の通りです.
    oracle:
      adapter: oracle
      username: e
      password: e
      host: 10.11.16.63/

    真ん中のociをoracleに変えただけで、実際にrails 2.0ではymlのコンフィギュレーションアイテムもadapter化されています.つまり、すべてのデータベースのコンフィギュレーションは統一的に処理され、上のhostはmysqlなどと同じdatabaseになります.新しい書き方は以下の通りです.
     oracle:
      adapter: oracle
      username: e
      password: e
      database: //10.11.16.63/e

    これでは、すべての状況が正常です.
    肝心なのはどの配法が問題を解決するかではなく、railsのテストプログラムに対する信頼と自信である.結局私はrailsとtddのメリットに自信を持っています.
    rails統一adapterのやり方も悪いとは言えないが、確かにアップグレードの面倒が増え、ドキュメントのサポートも少なくなった.
     
    http://soft.chinabyte.com/293/7782793.shtml