ruby-ensembl-api
ruby-ensembl-api copied to clipboard
undefined method `more_results' for #<Mysql>
I'm starting to test the Ensembl API, on OS X 10.6.8, using ruby 1.8.7 (2010-08-16 patchlevel 302) [i686-darwin10.4.0]. I'm reasonably experienced in Ruby but not in Rails.
I just installed the v1.0.1 API gem and tried to run this:
require 'ensembl' include Ensembl::Core DBConnection.connect('homo_sapiens',60)
After a few seconds pause at the DBConnection line, I get this error message:
undefined method more_results' for #<Mysql> /usr/local/lib/ruby/gems/1.8/gems/activerecord-3.0.1/lib/active_record/connection_adapters/mysql_adapter.rb:279:in
select_rows'
...(more error lines, but essentially the same message as above)...
I've likely made some basic error in the setup. Could I ask for help in understanding and resolving the error?
Thank you.
Gordon
On the chance that the error could be resolved by updating activerecord, I just did this and still see the error:
undefined method more_results' for #<Mysql> /usr/local/lib/ruby/gems/1.8/gems/activerecord-3.0.9/lib/active_record/connection_adapters/mysql_adapter.rb:279:in
select_rows'
/usr/local/lib/ruby/gems/1.8/gems/activerecord-3.0.9/lib/active_record/connection_adapters/abstract/database_statements.rb:27:in select_values' /usr/local/lib/ruby/gems/1.8/gems/ruby-ensembl-api-1.0.1/lib/ensembl/db_connection.rb:62:in
get_name_from_db'
/usr/local/lib/ruby/gems/1.8/gems/ruby-ensembl-api-1.0.1/lib/ensembl/db_connection.rb:100:in generic_connect' /usr/local/lib/ruby/gems/1.8/gems/ruby-ensembl-api-1.0.1/lib/ensembl/db_connection.rb:140:in
connect'
/Users/grobertson/GENEREG/WORK/svn/GSC_PERSONAL/ENSEMBL/RUBY_API/ensembl_ruby_api_test.rb:28
/usr/local/lib/ruby/gems/1.8/gems/activerecord-3.0.9/lib/active_record/connection_adapters/mysql_adapter.rb:279:in select_rows': undefined method
more_results' for #<Mysql> (NoMethodError)
from /usr/local/lib/ruby/gems/1.8/gems/activerecord-3.0.9/lib/active_record/connection_adapters/abstract/database_statements.rb:27:in select_values' from /usr/local/lib/ruby/gems/1.8/gems/ruby-ensembl-api-1.0.1/lib/ensembl/db_connection.rb:62:in
get_name_from_db'
from /usr/local/lib/ruby/gems/1.8/gems/ruby-ensembl-api-1.0.1/lib/ensembl/db_connection.rb:100:in generic_connect' from /usr/local/lib/ruby/gems/1.8/gems/ruby-ensembl-api-1.0.1/lib/ensembl/db_connection.rb:140:in
connect'
from /Users/grobertson/GENEREG/WORK/svn/GSC_PERSONAL/ENSEMBL/RUBY_API/ensembl_ruby_api_test.rb:28
Thanks for any help you can offer to understand this error.
Gordon
Hi Gordon,
There's no clear cause that pops to my mind right now. Could you try and run the following little script? It just creates an ActiveRecord connection and see if it works.
require 'rubygems' require 'active_record' require 'yaml'
ActiveRecord::Base.establish_connection( :adapter => 'mysql', :host => 'ensembldb.ensembl.org', :port => 5306, :username => 'anonymous', :database => 'homo_sapiens_core_60_37e')
class CoordSystem < ActiveRecord::Base self.pluralize_table_names = false end
puts CoordSystem.all.to_yaml
Thanks, Jan
When I run the script, I get the following.
undefined method more_results' for #<Mysql> /usr/local/lib/ruby/gems/1.8/gems/activerecord-3.0.9/lib/active_record/connection_adapters/mysql_adapter.rb:637:in
select'
/usr/local/lib/ruby/gems/1.8/gems/activerecord-3.0.9/lib/active_record/connection_adapters/abstract/database_statements.rb:7:in select_all' /usr/local/lib/ruby/gems/1.8/gems/activerecord-3.0.9/lib/active_record/connection_adapters/abstract/query_cache.rb:56:in
select_all'
/usr/local/lib/ruby/gems/1.8/gems/activerecord-3.0.9/lib/active_record/base.rb:473:in find_by_sql' /usr/local/lib/ruby/gems/1.8/gems/activerecord-3.0.9/lib/active_record/relation.rb:64:in
to_a'
/usr/local/lib/ruby/gems/1.8/gems/activerecord-3.0.9/lib/active_record/relation/finder_methods.rb:143:in all' /usr/local/lib/ruby/gems/1.8/gems/activerecord-3.0.9/lib/active_record/base.rb:444:in
send'
/usr/local/lib/ruby/gems/1.8/gems/activerecord-3.0.9/lib/active_record/base.rb:444:in all' /Users/grobertson/GENEREG/WORK/svn/GSC_PERSONAL/ENSEMBL/test_ensembl_api.20110718.rb:16 /usr/local/lib/ruby/gems/1.8/gems/activerecord-3.0.9/lib/active_record/connection_adapters/mysql_adapter.rb:637:in
select': undefined method more_results' for #<Mysql> (NoMethodError) from /usr/local/lib/ruby/gems/1.8/gems/activerecord-3.0.9/lib/active_record/connection_adapters/abstract/database_statements.rb:7:in
select_all'
from /usr/local/lib/ruby/gems/1.8/gems/activerecord-3.0.9/lib/active_record/connection_adapters/abstract/query_cache.rb:56:in select_all' from /usr/local/lib/ruby/gems/1.8/gems/activerecord-3.0.9/lib/active_record/base.rb:473:in
find_by_sql'
from /usr/local/lib/ruby/gems/1.8/gems/activerecord-3.0.9/lib/active_record/relation.rb:64:in to_a' from /usr/local/lib/ruby/gems/1.8/gems/activerecord-3.0.9/lib/active_record/relation/finder_methods.rb:143:in
all'
from /usr/local/lib/ruby/gems/1.8/gems/activerecord-3.0.9/lib/active_record/base.rb:444:in __send__' from /usr/local/lib/ruby/gems/1.8/gems/activerecord-3.0.9/lib/active_record/base.rb:444:in
all'
from /Users/grobertson/GENEREG/WORK/svn/GSC_PERSONAL/ENSEMBL/test_ensembl_api.20110718.rb:16
There may be a problem in my Ruby MySQL adapter. I'll look into this today and will get back to you.
Jan
I upgraded to OSX 10.7 (Lion), then went back over Ruby and MySQL installs, following web advice and deleting a couple of years of old installations of both (e.g. from /opt/local...). I reinstalled the Ruby-MySQL gem, then ran two of the test scripts from http://www.kitebird.com/articles/. I reinstalled the Ensembl-API-1.0.1 gem, and started to test basic Ensembl API commands in IRB. I could step through getting a connection, and retrieving a slice, then all genes for that slice, etc. At this point, I ran the test that you'd suggested on 18 July:
Hi Gordon,
There's no clear cause that pops to my mind right now. Could you try and run the following little script? It just creates an ActiveRecord connection and see if it works.
require 'rubygems' require 'active_record' require 'yaml'
ActiveRecord::Base.establish_connection( :adapter => 'mysql', :host => 'ensembldb.ensembl.org', :port => 5306, :username => 'anonymous', :database => 'homo_sapiens_core_60_37e')
class CoordSystem < ActiveRecord::Base self.pluralize_table_names = false end
puts CoordSystem.all.to_yaml
---end of Jan's test---
grobertson:RUBY_API grobertson$ ruby jans_test.18july2011.rb
-
!ruby/object:CoordSystem attributes: name: contig attrib: default_version,sequence_level coord_system_id: "1" rank: "4" version: species_id: "1" attributes_cache: {}
changed_attributes: {}
destroyed: false marked_for_destruction: false new_record: false previously_changed: {}
destroyed: false marked_for_destruction: false new_record: false previously_changed: {}
readonly: false
The problem that I had likely was caused by conflicting installations. I'll continue to work with the Ensembl API, and will let you know if I have more problems.
Thanks for your patience.
In the above comment, I'd cut out most of the ~145-line output written by your test script, but what I removed has been reformatted by the Wiki so that it's not clear that I did this. G