On Sat, Dec 4, 2010 at 6:04 PM, Grick Zh [email protected] wrote:
Hello every body, i have met a strange issue about activerecord gem.
This is my simple code:
in the “interesting” file name ~/ruby/mysql.rb
/home/abc
/home/abc/ruby
abc@abc-desktop:~/ruby$ ./mysql.rb
/var/lib/gems/1.9.1/gems/activerecord-2.3.8/lib/active_record/connection_adapters/mysql_adapter.rb:7:in
`define_all_hashes_method!': Mysql not loaded (RuntimeError)
Who can tell me how this happend?
It took me some time to figure out, but actually this is somewhat funny
…
At some point, the ActiveRecord code calls “require ‘mysql’”
(/usr/lib/ruby/gems/1.8/gems/activerecord-3.0.3/lib/active_record/connection_adapters/mysql_adapter.rb
line 20).
In the case where you run from the home dir, this works our correctly
(and loads the correct code), but when you run it from the ~/ruby
directory, this actually reloads your own ~/ruby/mysql.rb program again
…
(and this version of mysql.rb does not have the required methods).
A strong hint was in the remainder of the exception log below (it is
always
better to post the full error log to the list and not just the top
line).
The simple solution is to rename you program, e.g. to test_mysql.rb
peterv@ASUS:~/ruby$ ./test_mysql.rb
/usr/lib/ruby/gems/1.8/gems/activerecord-3.0.3/lib/active_record/connection_adapters/mysql_adapter.rb:600:in
real_connect': Access denied for user 'root'@'localhost' (using password: NO) (Mysql::Error) ## this is the expected behavior from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.3/lib/active_record/connection_adapters/mysql_adapter.rb:600:in
connect’
…
Original trace below.
HTH,
Peter
peterv@ASUS:~/ruby$ ./mysql.rb
/usr/lib/ruby/gems/1.8/gems/activerecord-3.0.3/lib/active_record/connection_adapters/mysql_adapter.rb:26:in
`mysql_connection’: !!! Outdated mysql gem. Upgrade to 2.8.1 or later.
In your Gemfile: gem ‘mysql’, ‘2.8.1’. Or use gem ‘mysql2’
(RuntimeError)
(BTW, I do have the 2.8.1 and the mysql2 gem, just a side effect of
the root cause problem)
from
/usr/lib/ruby/gems/1.8/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:228:in
send' from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:228:in
new_connection’
from
/usr/lib/ruby/gems/1.8/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:236:in
checkout_new_connection' from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:190:in
checkout’
from
/usr/lib/ruby/gems/1.8/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:186:in
loop' from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:186:in
checkout’
from /usr/lib/ruby/1.8/monitor.rb:242:in synchronize' from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:185:in
checkout’
from
/usr/lib/ruby/gems/1.8/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:93:in
connection' from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:316:in
retrieve_connection’
from
/usr/lib/ruby/gems/1.8/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_specification.rb:97:in
retrieve_connection' from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_specification.rb:89:in
connection’
from
/usr/lib/ruby/gems/1.8/gems/activerecord-3.0.3/lib/active_record/base.rb:679:in
columns' from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.3/lib/active_record/persistence.rb:284:in
attributes_from_column_definition’
from
/usr/lib/ruby/gems/1.8/gems/activerecord-3.0.3/lib/active_record/locking/optimistic.rb:62:in
attributes_from_column_definition' from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.3/lib/active_record/base.rb:1394:in
initialize’
from
/usr/lib/ruby/gems/1.8/gems/activerecord-3.0.3/lib/active_record/base.rb:496:in
new' from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.3/lib/active_record/base.rb:496:in
create’
from ./mysql.rb:14
from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in
gem_original_require' from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in
require’
from
/usr/lib/ruby/gems/1.8/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:239:in
require' from /usr/lib/ruby/gems/1.8/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:225:in
load_dependency’
from
/usr/lib/ruby/gems/1.8/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:596:in
new_constants_in' from /usr/lib/ruby/gems/1.8/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:225:in
load_dependency’
from
/usr/lib/ruby/gems/1.8/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:239:in
require' from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.3/lib/active_record/connection_adapters/mysql_adapter.rb:20:in
mysql_connection’
from
/usr/lib/ruby/gems/1.8/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:228:in
send' from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:228:in
new_connection’
from
/usr/lib/ruby/gems/1.8/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:236:in
checkout_new_connection' from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:190:in
checkout’
from
/usr/lib/ruby/gems/1.8/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:186:in
loop' from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:186:in
checkout’
from /usr/lib/ruby/1.8/monitor.rb:242:in synchronize' from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:185:in
checkout’
from
/usr/lib/ruby/gems/1.8/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:93:in
connection' from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:316:in
retrieve_connection’
from
/usr/lib/ruby/gems/1.8/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_specification.rb:97:in
retrieve_connection' from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_specification.rb:89:in
connection’
from
/usr/lib/ruby/gems/1.8/gems/activerecord-3.0.3/lib/active_record/base.rb:679:in
columns' from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.3/lib/active_record/persistence.rb:284:in
attributes_from_column_definition’
from
/usr/lib/ruby/gems/1.8/gems/activerecord-3.0.3/lib/active_record/locking/optimistic.rb:62:in
attributes_from_column_definition' from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.3/lib/active_record/base.rb:1394:in
initialize’
from
/usr/lib/ruby/gems/1.8/gems/activerecord-3.0.3/lib/active_record/base.rb:496:in
new' from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.3/lib/active_record/base.rb:496:in
create’
from ./mysql.rb:14