Почему Падрино не может найти мои грабли?

Я только что обновил Padrino с версии 0.10.5 до 0.12.1, и теперь ни одно из моих заданий Rake больше не работает.

Простой случай, который я только что добавил:

# PROJECT_ROOT/lib/tasks/example_task.rake
task :example_task do
  puts "Is this working?"
end

Бег rake example_task дает:

rake aborted!
Don't know how to build task 'example_task'

Бег padrino rake example_task дает:

=> 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)

Документы Падрино говорят, что Падрино должен автоматически обнаруживать любые *.rake файлы в lib/tasksи они работали до того, как я обновил Padrino. В чем проблема?

Мой 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'

В соответствии с bundle show rakeЯ использую грабли версии 10.3.1.

Что я делаю неправильно?

2 ответа

Решение

Ну, это была пустая трата награды.

Я открыл вопрос о Github и получил ответ там. Мне нужно было сделать следующие изменения в верхней части config/boot.rb... (это взято из вывода git diffОбратите внимание, что строки начинаются с - были удалены и строки, которые начинаются с + были добавлены.)

-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'

И добавить эти строки в мой Rakefile:

+require 'bundler/setup'
+require 'padrino-core/cli/rake'
+
+PadrinoTasks.use(:database)
+PadrinoTasks.use(:mongoid)
+PadrinoTasks.init

Теперь мои грабли работают нормально. Ура!

Используйте этот шаблон, и он будет работать с новой версией Padrino без каких-либо изменений ядра:

# ./lib/tasks/seed_fonts.rake
namespace :fonts do

  desc "Seen the fonts into database table db.fonts"
  task :seed_fonts => :environment do

      # Do your thing ...

  end

end
Другие вопросы по тегам