I\'m trying to test a rake task and it uses an active record in it.
require \'spec_helper\'
require \'rake\'
load File.join(Rails.root, \'lib\', \'tasks\', \'su
Is your task adding the :enviroment to do it before? In your .rake file you should have something like this:
namespace :survey do
# ...
task :send_report => :enviroment do
# ... stuff
end
This is because you need to load the full enviroment to do that task. You can check this railcast to get more information http://railscasts.com/episodes/66-custom-rake-tasks
I suspect the problem is that your survey:send_report
task depends on :environment
but you haven't loaded the file that defines the :environment
task. That'll be in rails somewhere, and your main Rakefile
loads it.
So, I think if you change
load File.join(Rails.root, 'lib', 'tasks', 'survey.rake')
to
load File.join(Rails.root, 'Rakefile')
it'll work.
Sounds like your take task may need the Rails environment to be loaded. You can stub this out by adding this line to your before(:all) hook:
Rake::Task.define_task(:environment)
I think you should first load the tasks:
require 'rake'
MyRailsApp::Application.load_tasks
and then invoke your task:
Rake::Task['survey:send_report'].invoke