Rake 的意思是 Ruby Make,一个用 ruby 开发的代码构建工具。
1.以任务的方式创建和运行脚本 当然,你可以用脚本来创建每一个你希望自动运行的任务。但是,对于大型的应用来说,你几乎总是需要为数据库迁移 (比如 Rails 中 db:migrate 任务)、清空缓存、或者代码维护等等编写脚本。对于每一项任务,你可能都需要写若干脚本,这会让你的管理变得复杂。那么,把它们用任务的方式整理到一起,会让管理变得轻松很多。
2.追踪和管理任务之间的依赖 Rake 还提供了轻松管理任务之间依赖的方式。比如,"migrate"任务和"schema:dump"任务都依赖于 "connect_to_database"任务,那么在"migrate"任务调用之前,"connect_to_database"任务都会被执行。
首先 rake 文件的后缀是.rake,存放在 lib/tasks 文件夹下。 可以通过 rake --tasks 来查看当前程序下所已存在的 rake 脚本。 看下面这个例子:
desc "study rake about rails" #desc 是Rake定义的方法,表示对下面定义任务的描述.这个描述会在使用Rake --tasks(或者Rake -T)命令时输出在屏幕上.
task :study_rake do #cmd 命令行中执行 rake study_rake 开始执行脚本,task是Rake最重要的方法.它的方法定义是:task(args, &block).任务体是一个block。
%w(a b c).each do |d|
puts d #编写你所需的功能代码。
end
end
这就是创建了一个 rake 脚本,这个脚本的作用是循环遍历 ["a", "b", "c"] 这个数组。
依赖关系
desc "rake1"
task :rake1 do
puts "rake1"
end
desc "rake2"
task ::rake2=> :rake1 do
puts "rake2"
end
输出结果:
rake1
rake2
命名空间
namespace :today do
desc "rake1"
task :rake1 do
puts "rake1"
end
end
那执行命令就是:rake today:rake1
在一个任务中调用另外一个任务
desc "today rake"
task :today do
Rake::Task["rakes:rake1"].invoke
Rake::Task["rakes:rake2"].invoke
Rake::Task["rakes:rake3"].invoke
end
namespace :rakes do
desc "rake1"
task :rake1 do
puts "rake1"
end
desc "rake2"
task :rake2 do
puts "rake2"
end
desc "rake3"
task :rake3 do
puts "rake3"
end
end
默认任务
task :default => [:today]
Rails 预定义了大量的 Rake 任务,在 Rails 应用的开发过程中,你想必已经在大量使用它们了。在 Rails 中,所有的 Rake 任务都放在 rails 目录的 lib/tasks 目录下 (在作者的环境下是 C:\Ruby\lib\ruby\gems\1.8\gems\rails-2.3.5 \lib\tasks),所有的 rake 任务都以.rake 作为后缀名,这些以.rake 结尾的文件会被自动加载到你的环境中。你可以到一个已有的 Rails 工程根目录下键入 rake --tasks,可以看到很多的 rake 任务已经为你整装待发了。
E. 参考资料 http://blog.sina.com.cn/s/blog_4748c4d20100y9iu.html