JRuby 1.6.7, ActiveRecord 3.2.3, activerecord-jdbc-adapter 1.2.2, activerecord-jdbcsqlanywhere-adapter-1.1.1을 사용하고 있습니다. 현재 Sybase JDBC4 드라이버가 있습니다. 현재 Ruby On Rails 애플리케이션 전체를 사용하는 것은 옵션이 아닙니다. 유닛 테스트를 실행할 때 다음과 같은 오류가 발생합니다.JRuby ActiveRecord/ActiveModel이 테이블 열의 메소드와 속성을 만들지 않습니다. (정의되지 않은 메소드)
NoMethodError: undefined method `find_by_configuration_name' for # method_missing at org/jruby/RubyBasicObject.java:1687 method_missing at /home/lynchcs/.rvm/gems/jruby-1.6.5.1/gems/activerecord-3.2.3/lib/active_record/dynamic_matchers.rb:27
테이블을 올바르게 식별하는 단위 테스트에서 스키마 덤프를 수행 할 수 있습니다. 다음은 테이블 스키마입니다.
create_table "THE_CONFIGURATION", :primary_key => "CONFIGURATION_ID", :force => true do |t|
t.string "CONFIGURATION_GROUP", :limit => 32
t.string "CONFIGURATION_TYPE", :limit => 32
t.string "CONFIGURATION_NAME", :limit => 32
t.string "CONFIGURATION_TEXT", :limit => 7168
end
다음은 내가 작성한 모델입니다.
require 'rubygems'
require 'active_record'
class Configuration < ActiveRecord::Base
self.table_name = 'SOART_CONFIGURATION'
self.primary_key = 'configuration_id'
end
내 연결을 관리하는 데 사용한 클래스는 다음과 같습니다. 이 클래스는 데이터베이스에 성공적으로 연결하고 쿼리를 실행합니다.
require 'java'
require 'rubygems'
require 'active_record'
class ConnectionMaster
def test_object
"ARBITRARY"
end
def set_connection
ActiveRecord::Base.establish_connection(
:adapter => 'jdbc' ,
:driver => 'com.sybase.jdbc4.jdbc.SybDriver' ,
:url => 'jdbc:sybase:Tds:192.168.137.137:1111/MYAPP' ,
:username => 'noneya' ,
:password => 'noneya'
)
ActiveRecord::Base.connection.execute("SELECT 'ARBITRARY' AS ARBITRARY")
end
def clear_connections
ActiveRecord::Base.clear_active_connections!
end
end
"config = Configuration.find_by_configuration_name ('test')"이 실행되면 오류가 발생합니다. 이 행을 주석 처리하면 "config.configuration_text"행에서 오류가 발생합니다.
답을 사용자의 대답으로 표시합니다 (녹색 확인 표시) –