Why does config.gem mess up migration?

I was working this morning, trying to clean up my project and I did something that sent migrations to hell-in-a-hand-basket.

I tried to run rake db:migrate --trace I got the following error msg: (in /Users/richardmartin/NetBeansProjects/ReTrace) ** Invoke db:migrate (first_time) ** Invoke environment (first_time) ** Execute environment rake aborted! Mysql::Error: Table 'rt_dev.priorities' doesn't exist: SELECT * FROM `priorities` LIMIT 1 /Library/Ruby/Gems/1.8/gems/activerecord-2.3.5/lib/active_record/ connection_adapters/abstract_adapter.rb:219:in `log' /Library/Ruby/Gems/1.8/gems/activerecord-2.3.5/lib/active_record/ connection_adapters/mysql_adapter.rb:323:in `execute' /Library/Ruby/Gems/1.8/gems/activerecord-2.3.5/lib/active_record/ connection_adapters/mysql_adapter.rb:608:in `select' /Library/Ruby/Gems/1.8/gems/activerecord-2.3.5/lib/active_record/ connection_adapters/abstract/database_statements.rb:7:in `select_all_without_query_cache'

I looked at the environment.rb and noticed one thing that was "abnormal" from my experience. I had cut-pasted the following config.gem line:   config.gem 'thoughtbot-factory_girl', :lib => 'factory_girl', :source => 'http://gems.github.com'

So I changed it to   config.gem 'thoughtbot-factory_girl', :lib =>false, :source => 'http://gems.github.com'

to look like the other config.gem lines and everything went back to normal. I have since moved all of them to the config/environments/ test.rb and cucumber.rb since that was where I needed them.

My question that I hope some guru will answer for my own education: Why did thaving the clause " :lib => 'factory_girl' " cause problems with migrations?

Just want to attain a higher level of understanding.

Rick

I was working this morning, trying to clean up my project and I did something that sent migrations to hell-in-a-hand-basket.

I tried to run rake db:migrate --trace I got the following error msg: (in /Users/richardmartin/NetBeansProjects/ReTrace) ** Invoke db:migrate (first_time) ** Invoke environment (first_time) ** Execute environment rake aborted! Mysql::Error: Table 'rt_dev.priorities' doesn't exist: SELECT * FROM `priorities` LIMIT 1 /Library/Ruby/Gems/1.8/gems/activerecord-2.3.5/lib/active_record/ connection_adapters/abstract_adapter.rb:219:in `log' /Library/Ruby/Gems/1.8/gems/activerecord-2.3.5/lib/active_record/ connection_adapters/mysql_adapter.rb:323:in `execute' /Library/Ruby/Gems/1.8/gems/activerecord-2.3.5/lib/active_record/ connection_adapters/mysql_adapter.rb:608:in `select' /Library/Ruby/Gems/1.8/gems/activerecord-2.3.5/lib/active_record/ connection_adapters/abstract/database_statements.rb:7:in `select_all_without_query_cache'

[snip]

My question that I hope some guru will answer for my own education: Why did thaving the clause " :lib => 'factory_girl' " cause problems with migrations?

Just want to attain a higher level of understanding.

You'll get a lot more understanding if you don't cut the stack trace off before it gets interesting... :slight_smile:

Anyway, the relevant bit appears to be missing from the trace above - but I'd hazard that you're somehow querying the DB in your factory definitions, most likely a line like "Priority.first" or similar.

--Matt Jones