I just upgraded Padrino from version 0.10.5 to 0.12.1 and now none of my Rake tasks work anymore.
A simple case I just added:
# PROJECT_ROOT/lib/tasks/example_task.rake
task :example_task do
puts "Is this working?"
end
Running rake example_task
gives:
rake aborted!
Don't know how to build task 'example_task'
Running padrino rake example_task
gives:
=> Executing Rake example_task ...
/Users/george/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/rake/task_manager.rb:49:in `[]': Don't know how to build task 'example_task' (RuntimeError)
Padrino's docs say that Padrino should automatically detect any *.rake
files in lib/tasks
, and these worked before I upgraded Padrino. What's the problem?
My Gemfile:
source 'https://rubygems.org'
ruby '2.1.0'
gem 'rake'
gem 'unicorn'
gem 'rack_hoptoad', require: 'rack/hoptoad'
gem 'haml'
gem 'bson_ext'
gem 'mongo'
gem 'mongoid', '~> 3.1.6'
gem 'httparty'
group :development, :test do
gem 'debugger'
gem 'fabrication', '~> 1.3.1'
gem 'zippy'
gem 'rubyzip', '~> 0.9.9'
end
group :test do
gem 'mocha', '~> 0.10.4'
gem 'rspec', '~> 2.8.0'
gem 'capybara', '~> 1.1.2'
gem 'launchy'
gem 'cucumber', '~> 1.1.8'
end
gem 'tilt', '~> 1.4.1'
gem 'padrino', '~> 0.12.1'
gem 'padrino-cookies', '~> 0.1.2'
According to bundle show rake
, I'm using rake version 10.3.1.
What am I doing wrong?
Well, that was a waste of a bounty.
I opened an issue on Github and got an answer there. I needed to make the following changes to the top of config/boot.rb
... (this is taken from the output of git diff
, so note that lines which start with -
were removed and lines which start with +
were added.)
-begin
- # Require the preresolved locked set of gems.
- require File.expand_path('../../.bundle/environment', __FILE__)
-rescue LoadError
- # Fallback on doing the resolve at runtime.
- require 'rubygems'
- require 'bundler'
- Bundler.setup
-end
-
+require 'rubygems' unless defined?(Gem)
+require 'bundler/setup'
And add these lines to my Rakefile
:
+require 'bundler/setup'
+require 'padrino-core/cli/rake'
+
+PadrinoTasks.use(:database)
+PadrinoTasks.use(:mongoid)
+PadrinoTasks.init
Now my rake tasks work as normal. Yay!