模块 Rake::DSL
DSL
模块提供了 task
、desc
、namespace
等方法。当您想在顶层作用域之外使用 rake 时,可以使用此模块。
对于您从命令行运行的 Rakefile,此模块会自动包含。
私有实例方法
desc(description) 点击切换源代码
描述下一个 rake 任务。重复的描述将被丢弃。描述会显示在使用 rake -T
命令时(显示到第一个句子)和使用 rake -D
命令时(显示完整描述)。
示例
desc "Run the Unit Tests" task test: [:build] do # ... run tests end
# File rake-13.2.1/lib/rake/dsl_definition.rb, line 166 def desc(description) # :doc: Rake.application.last_description = description end
directory(*args, &block) 点击切换源代码
声明一组文件任务,以按需创建给定的目录。
示例
directory "testdata/doc"
# File rake-13.2.1/lib/rake/dsl_definition.rb, line 92 def directory(*args, &block) # :doc: args = args.flat_map { |arg| arg.is_a?(FileList) ? arg.to_a.flatten : arg } result = file_create(*args, &block) dir, _ = *Rake.application.resolve_args(args) dir = Rake.from_pathname(dir) Rake.each_dir_parent(dir) do |d| file_create d do |t| mkdir_p t.name unless File.exist?(t.name) end end result end
file(*args, &block) 点击切换源代码
声明一个文件任务。
示例
file "config.cfg" => ["config.template"] do open("config.cfg", "w") do |outfile| open("config.template") do |infile| while line = infile.gets outfile.puts line end end end end
# File rake-13.2.1/lib/rake/dsl_definition.rb, line 76 def file(*args, &block) # :doc: Rake::FileTask.define_task(*args, &block) end
file_create(*args, &block) 点击切换源代码
声明一个文件创建任务。(主要用于 directory 命令)。
# File rake-13.2.1/lib/rake/dsl_definition.rb, line 82 def file_create(*args, &block) Rake::FileCreationTask.define_task(*args, &block) end
import(*fns) 点击切换源代码
导入部分 Rakefile fn
。导入的文件在当前文件完全加载 *之后* 加载。这允许 import 语句出现在导入文件中的任何位置,同时允许导入的文件依赖于导入文件中定义的对象。
import 语句的一个常见用途是包含包含依赖关系声明的文件。
另请参阅 –rakelibdir 命令行选项。
示例
import ".depend", "my_rules"
# File rake-13.2.1/lib/rake/dsl_definition.rb, line 184 def import(*fns) # :doc: fns.each do |fn| Rake.application.add_import(fn) end end
multitask(*args, &block) 点击切换源代码
声明一个并行执行其先决条件的任务。多任务**不**保证其先决条件会按任何特定顺序执行(当您考虑它时,这是显而易见的)
示例
multitask deploy: %w[deploy_gem deploy_rdoc]
# File rake-13.2.1/lib/rake/dsl_definition.rb, line 113 def multitask(*args, &block) # :doc: Rake::MultiTask.define_task(*args, &block) end
namespace(name=nil, &block) 点击切换源代码
创建一个新的 rake 命名空间,并使用它来评估给定的代码块。返回一个 NameSpace
对象,该对象可用于查找命名空间中定义的任务。
示例
ns = namespace "nested" do # the "nested:run" task task :run end task_run = ns[:run] # find :run in the given namespace.
也可以通过在任务名称中使用“:”来在命名空间中定义任务
task "nested:test" do # ... end
# File rake-13.2.1/lib/rake/dsl_definition.rb, line 136 def namespace(name=nil, &block) # :doc: name = name.to_s if name.kind_of?(Symbol) name = name.to_str if name.respond_to?(:to_str) unless name.kind_of?(String) || name.nil? raise ArgumentError, "Expected a String or Symbol for a namespace name" end Rake.application.in_namespace(name, &block) end
rule(*args, &block) 点击切换源代码
声明自动任务的规则。
示例
rule '.o' => '.c' do |t| sh 'cc', '-c', '-o', t.name, t.source end
# File rake-13.2.1/lib/rake/dsl_definition.rb, line 152 def rule(*args, &block) # :doc: Rake::Task.create_rule(*args, &block) end
task(task_name) 点击切换源代码
task(task_name: 依赖项)
task(task_name, 参数 → 依赖项)
声明一个基本任务。task_name
始终是第一个参数。如果任务名称包含“:”,则它在该命名空间中定义。
dependencies
可以是单个任务名称或任务名称的数组。argument
(单个名称)或 arguments
(名称数组)定义提供给任务的参数。
任务、参数和依赖项名称可以是符号或字符串。
具有单个依赖项的任务
task clobber: %w[clean] do rm_rf "html" end
具有参数和依赖项的任务
task :package, [:version] => :test do |t, args| # ... end
要从命令行调用此任务
$ rake package[1.2.3]
# File rake-13.2.1/lib/rake/dsl_definition.rb, line 59 def task(*args, &block) # :doc: Rake::Task.define_task(*args, &block) end