Railsパッケージの残りの部分なしでActiveRecordを使用してMySQLデータベースと対話するスクリプトがいくつかあります(完全なRails gemがインストールされていますが)。ただし、最近これらのクラスを使用しようとすると、ActiveRecordの子孫クラスでfind()を呼び出そうとすると、NoMethodErrorが発生します。
クラスコードは驚くほど基本的です。
class LineItem <ActiveRecord::Base
set_primary_key 'id'
set_table_name "line_items"
end
はい、MySQLデータベースを使用しているので、dbコネクタファイルがあります。
require 'rubygems'
require 'active_record'
require 'logger'
ActiveRecord::Base.establish_connection(
:adapter =>'mysql',
:database=>'my_db',
:username=>'my_user',
:password=>'a_password',
:host=>"ip_address",
:port=>3306
)
ActiveRecord::Base.logger = Logger.new(STDERR)
しかし、スクリプトを実行すると、次のようになります。
require "dbconn"
require "lineitem"
li = LineItem.new()
li.find(1)
エラーが発生します:
NoMethodError: undefined method `find' for #<LineItem id: nil, trans_id: nil, trans_code: nil, data: nil>
from /Library/Ruby/Gems/1.8/gems/activerecord-2.3.3/lib/active_record/attribute_methods.rb:260:in `method_missing'
from (irb):4
誰かアドバイスがあれば教えていただければ幸いです。OSX10.6.1でRuby1.8.7を使用していますはい、10.5.xで正常に動作しました