[#46033] cgi をするときのデバック方法について — Nobuyuki Inaba <nobuyuki.inaba@...>

稲葉と申します。

15 messages 2009/05/22
[#46034] Re: cgi をするときのデバック方法について — rubikitch@... 2009/05/23

From: Nobuyuki Inaba <nobuyuki.inaba@gmail.com>

[ruby-list:46040] RoR on Linux で MS-SQL にアクセスしたい

From: しん <dezawa@...>
Date: 2009-05-28 13:25:22 UTC
List: ruby-list #46040
出沢@神奈川です

とある事情で Linux上のAppache から MS-SQL にアクセスするアプリを作る事になりました。
LinuxからMS-SQLにアクセスするのは以前試してみて挫折していたのですが、
Rails だとMS-SQLにアクセスできるということを見つけて、Railsを使ってみようと
しています。(Railsも初挑戦です。無謀。。。かも) 

http://wiki.rubyonrails.org/database-support/ms-sql
Connect To MicrosoftSQLServer From Rails On Linux Box

に従って、
   unixODBC, FreeTDS を Install
   dbd-odbc, dbi, rails-sqlserver-2000-2005-adapter
   を gem でInstall

   したのち、 freetds.conf odbc.ini  odbcinst.ini を設定して
   tsql で MS-SQLサーバにアクセスして接続できるようになりました。

ところが、Activerecord でアクセスすると

Unable to load driver 'ODBC' (underlying error: uninitialized constant DBI::DBD::ODBC)

のエラーとなります。

このエラーは、
るびま5巻の「RubyOnRails を使ってみる 【第 2 回】」を参考にRails のProjectを
作り、その config/database.yml を
「Connect To MicrosoftSQLServer From Rails On Linux Box」
に従って直した上で、 rake test:units を実行したときに出るエラーです。

ここでいう ODBC ドライバーというのが *.rb のことなのか lib*so のことなのか
それらはどのdirectory にあるべきなのか、など教えていただきたくお願いします。
freetds.conf, odbc.ini, odbcinst.ini, database.yml を下につけます。

インストールしたものたちのVersionは以下のとおりです
dbi-0.4.1
dbd-odbc-0.2.4, 
rails-sqlserver-2000-2005-adapter-2.2.17
unixODBC-2.2.14 
freetds-0.82
Rails 2.3.2

設定ファイルは

freetds.conf 
  (上のほう省略)
[MYPROJECT]
  host  = sqlserver.example.com
  port  = 1433
  tds version = 8.0
  client charset = UTF-8
  debug flags    = 0x4fff

odbc.ini 
[MYPROJECT]
   Driver          = FreeTDS
      Description     = ODBC connection via FreeTDS
      Trace           = No
      Servername      = MYPROJECT
      Database        = testdb
      
odbcinst.ini
  [FreeTDS]
     Description     = TDS driver (Sybase/MS SQL)
     Driver          = /usr/local/lib/odbc/libtdsodbc.so
     Setup           = /usr/local/lib/odbc/libtdsS.so
     CPTimeout       =
     CPReuse         =
     FileUsage       = 1


config/database.yml
# SQLite version 3.x
#   gem install sqlite3-ruby (not necessary on OS X Leopard)
development:
  adapter: sqlserver
  mode:    ODBC
  dsn:     MYPROJECT
  username: foo
  password: bar

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  adapter: sqlserver
  mode:    ODBC
  dsn:     MYPROJECT
  username: foo
  password: var

production:
  adapter: sqlserver
  mode:    ODBC
  dsn:     MYPROJECT
  username: foo
  password: var



In This Thread