原创作者: hideto   阅读:1602次   评论:0条   更新时间:2011-05-26    
Rake的强大之处你要自己使用才有切身体会。

我们经常用rake db:migrate来做数据库迁移
我们还可以使用rake -T来列出可得到的rake任务

让我们在store这个Rails程序中创建一个自己的Rake任务
我们创建store/lib/tasks/ryanb.rake:
task :greet do
  puts "Hello World!"
end

task :ask do
  puts "How are you?"
end

我们现在可以使用rake greet或rake ask来运行

对于相关联的rake任务我们可以这样做:
task :greet do
  puts "Hello World!"
end

task :ask => :greet do
  puts "How are you?"
end

ask任务依赖于greet任务,当我们运行rake ask时会先调用greet任务

需要Rails环境的任务
task :pick_winner => :environment do
  user = User.find(:first, : order => 'RAND()')
  puts "Winner #{user.name}"
end


名字空间
namespace :pick do
  task:winner => :environment do
    user = User.find(:first, : order => 'RAND()')
    puts "Winner #{user.name}"
  end
end


提取公用方法:
namespace :pick do
  desc "Pick a random user as the winner"
  task :winner => :environment do
    puts "Winner: #{pick(User).name}"
  end

  desc "Pick a random product as the prize"
  task :prize => :environment do 
    puts "Prize: #{pick(User).name}"
  end

  def "Pick a random prize as the prize"
  task :all => [:prize, :winner]

  def pick(model_class)
    model_class.find(:first, : order => 'RAND()')
  end
end


资料:
Rake Documentation
Rails Rake Tutorial
Using the Rake Building Language
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

文章信息

Global site tag (gtag.js) - Google Analytics