Rails宝典之第六十六式:自定义Rake任务

本文介绍了如何使用Rake创建自定义任务,包括基本任务定义、依赖关系设置、环境配置及命名空间划分等内容,并提供了实例演示。
Rake的强大之处你要自己使用才有切身体会。

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

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

task :ask do
puts "How are you?"
end
[/code]
我们现在可以使用rake greet或rake ask来运行

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

task :ask => :greet do
puts "How are you?"
end
[/code]
ask任务依赖于greet任务,当我们运行rake ask时会先调用greet任务

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

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

提取公用方法:
[code]
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
[/code]

资料:
[url=http://docs.rubyrake.org/]Rake Documentation[/url]
[url=http://www.railsenvy.com/2007/6/11/ruby-on-rails-rake-tutorial]Rails Rake Tutorial[/url]
[url=http://www.martinfowler.com/articles/rake.html]Using the Rake Building Language[/url]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值