How’s that for being helpful?
1 $ rake db:migrate —trace
2 (in /Users/francois/Documents/work/family_budget)
3 * Invoke db:test:prepare (first_time)
4 * Invoke environment (first_time)
5 * Execute environment
6 * Invoke db:abort_if_pending_migrations (first_time)
7 * Invoke environment
8 * Execute db:abort_if_pending_migrations
9 You have 13 pending migrations:
10 1 CreateFamilies
11 2 CreatePeople
12 3 CreateAccounts
13 4 CreateTransfers
14 5 CreateTransferMembers
15 6 AddFamilyToPeople
16 7 DestroyTransferMember
17 8 AddDebitAccountIdCreditAccountIdAndAmountToTransfers
18 9 CreateBudgets
19 10 AddAdminFlagToPerson
20 11 DefaultBudgetAmountToZeroFromNull
21 20081103020010 CreateTransactions
22 20081103020142 CreateBankAccounts
23 Run "rake db:migrate" to update your database then try again.
Hmm, I’m trying to run migrations, stupid…
I finally traced the problem (using git bisect !) to this:
lib/tasks/cucumber.rake
1 $:.unshift(RAILS_ROOT + ‘/vendor/plugins/cucumber/lib’)
2 require ‘cucumber/rake/task’
3
4 namespace :test do
5 desc "Runs the Cucumber features tests (integration tests)"
6 Cucumber::Rake::Task.new(:features) do |t|
7 ENV["RAILS_ENV"] = RAILS_ENV = "test"
8 Rake::Task["db:test:prepare"].invoke
9 Rake::Task["db:fixtures:load"].invoke
10 t.cucumber_opts = "—format pretty"
11 end
12 end
Can you spot the error? The problem originates with setting RAILS_ENV in this code block. But isn’t the block supposed to be executed later? When the block is #call’ed? Very strange. At the moment, I simply commented out the line, but that’s going to bite me in a couple moments when I’m ready to test my features again… Oh joy of debugging!
