Rake 是 Ruby 生态中的任务管理与自动化工具,通过项目根目录的 Rakefile 或 lib/tasks/*.rake 文件定义任务,使用 rake 命令执行。
主要能力:用 task :name do ... end 定义任务,desc 添加描述后可通过 rake -T 列出;支持任务依赖(如 task :build => :compile,或 [:test, :build, :upload] 多依赖),依赖按顺序先执行;可定义默认任务 task :default => [:test, :lint],无参数运行 rake 时触发。
命名空间:用 namespace 组织任务,如 namespace :db 下定义 create、migrate、seed,执行 rake db:create;支持嵌套命名空间,如 rake db:schema:dump。
任务参数:task :greet, [:name] do |t, args| 定义参数,用 rake "greet[Alice]" 传入;支持多参数 rake "create_user[Alice,alice@example.com]" 和 with_defaults 设置默认值。
环境与配置:可通过 ENV.fetch 读取环境变量,如 DEPLOY_ENV=production rake deploy。
文件任务:file "output.txt" => "input.txt" 定义目标文件依赖;directory 定义目录任务;FileList 配合 glob 收集文件;rule 定义基于模式的文件生成规则。
调用控制:Rake::Task["db:create"].invoke 仅运行一次,execute 跳过依赖再次执行;reenable 后可重复调用,也可在调用时传参。
测试与最佳实践:可用 Minitest 或 RSpec 测试任务,通常在 setup 中 Rake.application.load_rakefile,测试后 reenable。支持错误处理、--verbose 详细输出、--dry-run 预演、进度报告、确认提示、并行执行等。
限制:资料未提供安装方式、具体版本要求、框架集成细节、平台支持范围及收费信息。