2014-04-19 34 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