1

我正在尝试从 Rakefile 中启动 Rake Pipeline 任务。据我所知,该过程将执行类似于此处示例的操作。

但是,这是行不通的。这是将该示例简化为准系统的要点。

它显示了一个简化的测试用例,它使用 rake-pipeline 的 Assetfile 工作,但是当尝试在 Rakefile 中包含相同的确切代码时它不起作用。

  1. 为什么会失败?
  2. 什么是使这项工作的解决方案?(作为 Rakefile 的一部分,没有作弊和运行系统调用。)

谢谢你的帮助!

4

1 回答 1

0

作品

看起来处理这个问题的一种方法是执行一个文件,如下所示:

project = Rake::Pipeline::Project.new('Assetfile')
# project.clean      # Required for rake-pipeline 0.7.0
project.invoke

但是,这很烦人,因为我必须为每个 rake 任务创建一个文件。

不工作

查看 Rake::Pipeline 的代码,它应该允许我传入一个管道,这样这段代码就可以工作:

pipeline = Rake::Pipeline.build do
  output "js"
  puts Dir.pwd
  input "js" do
    match "*.js" do
      # concatenate all JS files into a single file
      filter Rake::Pipeline::ConcatFilter, "application.js"
    end
  end
end

project = Rake::Pipeline::Project.new(pipeline)
project.invoke

有人知道为什么这行不通吗?错误:

undefined method `manifest' for nil:NilClass
rake-pipeline-0.8.0/lib/rake-pipeline.rb:408:in `manifest'
rake-pipeline-0.8.0/lib/rake-pipeline.rb:456:in `block in record_input_files'
rake-pipeline-0.8.0/lib/rake-pipeline.rb:453:in `each'
rake-pipeline-0.8.0/lib/rake-pipeline.rb:453:in `record_input_files'
rake-pipeline-0.8.0/lib/rake-pipeline.rb:340:in `setup'
rake-pipeline-0.8.0/lib/rake-pipeline.rb:326:in `block in invoke'
<internal:prelude>:10:in `synchronize'
rake-pipeline-0.8.0/lib/rake-pipeline.rb:321:in `invoke'
rake-pipeline-0.8.0/lib/rake-pipeline/project.rb:126:in `each'
rake-pipeline-0.8.0/lib/rake-pipeline/project.rb:126:in `block in invoke'
<internal:prelude>:10:in `synchronize'
rake-pipeline-0.8.0/lib/rake-pipeline/project.rb:112:in `invoke'
Rakefile:23:in `block in <top (required)>'
于 2013-08-13T03:51:07.213 回答