Hi
I’m trying to use the activerecord-sybase-adapter to be able to use ASE with my rails applications. But, I am struggling…
I followed (most of) the steps on this informative page: http://trevoke.net/blog/2009/09/11/connecting-to-sybase-with-rails-on-windows-xp/
Initially I had Rails 2.3.5 installed. I copied the “Ruby Sybase files” as instructed and the Sybase dll files as well, and I installed activerecord-sybase-adapter (1.0.0.9250). The Sybase environment I already have on my office computer, so it should be allright. I don’t have the mentioned JDBC_HOME setting or the classpath setting, but I’m using Open Client, so should there be any need for the JDBC settings?
Ok, things looked promising, and I started creating a test rails app.
rails testapp
I then edited the database.yml to fit Sybase ASE development: adapter: sybase database: testdb username: username password: password host: sauron
The host, sauron, is defined in the sql.ini file.
Running rake db:create tells me that the database testdb already exists. (true)
ruby script\generate scaffold person first_name:string last_name:string WORKS OK rake db:migrate --trace FAILS!
(in C:/work/ror/testapp) ** Invoke db:migrate (first_time) ** Invoke environment (first_time) ** Execute environment ** Execute db:migrate rake aborted! undefined method `select_rows’ for #ActiveRecord::ConnectionAdapters::SybaseAdapter:0x97d8be8
c:/prg/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/connection_adapters/abstract/database_statements.rb:27:in select_values' c:/prg/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/migration.rb:416:in
get_all_versions’
c:/prg/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/migration.rb:532:in migrated' c:/prg/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/migration.rb:441:in
current_version’
c:/prg/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/migration.rb:458:in migrate' c:/prg/ruby/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/tasks/databases.rake:115:in
detect’
c:/prg/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/migration.rb:458:in `each’
c:/prg/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/migration.rb:458:in detect' c:/prg/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/migration.rb:458:in
migrate’
c:/prg/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/migration.rb:400:in `up’
c:/prg/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/migration.rb:383:in migrate' c:/prg/ruby/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/tasks/databases.rake:116 c:/prg/ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in
call’
c:/prg/ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in execute' c:/prg/ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in
each’
c:/prg/ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in `execute’
c:/prg/ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:597:in invoke_with_call_chain' c:/prg/ruby/lib/ruby/1.8/monitor.rb:242:in
synchronize’
c:/prg/ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:590:in `invoke_with_call_chain’
c:/prg/ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:583:in invoke' c:/prg/ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2051:in
invoke_task’
c:/prg/ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `top_level’
c:/prg/ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in each' c:/prg/ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in
top_level’
c:/prg/ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling’
c:/prg/ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2023:in top_level' c:/prg/ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2001:in
run’
c:/prg/ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling’
c:/prg/ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:1998:in run' c:/prg/ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/bin/rake:31 c:/prg/ruby/bin/rake:19:in
load’
c:/prg/ruby/bin/rake:19
so… looks like something’s missing here. In mysql_adapter.rb there is a select_row function, but not in the sybase_adapter.rb.
I tried downgrading Rails to 2.1.0 because I read somewhere that the activerecord-sybase-adapter perhaps was not working for the latest Rails releases, but got only a slightly different error message: rake aborted! select_rows is an abstract method c:/prg/ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/connection_adapters/abstract/database_statements.rb:34:in `select_rows’
…
Anyone has an idea?
Best regards, Rolf