2014-04-19 35 views
1

我剛將Padrino從版本0.10.5升級到0.12.1,現在我的Rake任務都不再工作了。Padrino爲什麼找不到我的耙子任務?

我只是增加了一個簡單的例子:

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

Padrino的docs說Padrino會自動檢測到任何*.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。

我在做什麼錯?

+0

什麼是'耙-T'和'padrino耙-T'的輸出? – xlembouras

回答

1

那麼,這是一個浪費的賞金。

opened an issue on 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 

現在我的rake任務工作正常。好極了!

+0

(值得注意的是任何未來的Google員工......如果你不使用Mongoid for DB,你顯然不想添加'PadrinoTasks.use(:mongoid)'這一行) – GMA

+0

從padrino 0.14開始,單向對於我來說,添加寶石的任務是在Rakefile中加載gem,例如:require'padrino/sprocket' –

0

使用這種模式,它會與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