I have a rake task that contains an eval call.
namespace :db do
namespace :load do
desc ‘Loads factories into db’
task :factories => :environment do
ActiveRecord::Base.establish_connection( ENV[ ‘RAILS_ENV’ ] )
FACTORIES.each do |f|
puts “Loading factory: #{ f }”
data = IO.read( “#{ RAILS_ROOT }/test/factories/#{ f }.rb” )
eval data
end
end
end
end
My problem is the eval executes when loading script/console or
executing rake -T
, it fires even though I’m not calling it.
What’s a better way?
–
Greg D.
http://destiney.com/
I’m almost certain that neither of these issues is causing the problem
you’re seeing, but who knows…
-
why are you calling establish_connection directly? The :environment
task should be doing it for you…
-
rather than reading and eval’ing, why not just use load()?
–Matt J.
On Wed, Jun 3, 2009 at 9:05 AM, Matt J. [email protected] wrote:
I’m almost certain that neither of these issues is causing the problem
you’re seeing, but who knows…
-
why are you calling establish_connection directly? The :environment
task should be doing it for you…
-
rather than reading and eval’ing, why not just use load()?
Thanks. Following your suggestions I now have:
namespace :db do
namespace :load do
desc ‘Loads factories into db’
task :factories => :environment do
FACTORIES.each do |f|
load( “#{ RAILS_ROOT }/test/factories/#{ f }.rb” )
end
end
end
end
Works fine but my problem still exists. When I do rake -T
I see in
the logs my code from test/factories/* is being ran, data is being
inserted.
Something else I noticed… if I put a debugger call inside the task
block it drops me to a prompt twice, not just once as expected.
So at this point I’ve tried eval, load, and system, and all are being
executed without the rake task being called.
Anyone?
–
Greg D.
http://destiney.com/
I have to admit I’m pretty stumped. If you make another rake task,
does it get loaded as well?
Maybe a dummy task like:
desc “Does nothing”
task :dummy_task => :environment do
puts “Blargh!”
end
If that gets run, there’s something really weird going on with your
Rake. If not, then something about the db:load task is weird…
–Matt J.