如何在git子模块上调用rake任务?

时间:2012-04-30 16:17:16

标签: rake git-submodules rake-task rakefile

我有一个项目,包括一些销售的javascripts,例如jQuery的。我将这些脚本包含为git子模块。但是,对于我的构建过程,我需要构建的脚本,而不是该脚本的整个存储库。所以我正在尝试设置一个rake任务来构建每个脚本 - 最好使用脚本自己的rakefile - 然后将构建的脚本复制到我的资产目录中。

file "app/vendor/scriptname.js" do
    # Call the task that builds the script here
    sh "cp app/vendor/script-submodule/dist/scriptname.js app/vendor/"
end

desc "Make vendor scripts available for build"
task :vendor => "app/vendor/scriptname.js" do
end

如果我在Rakefile中使用import 'app/vendor/scriptname/Rakefile',我应该可以访问构建脚本的rake任务,对吧?我怎么称呼它?或者我应该使用sh "cd app/vendor/script-submodule/ && rake dist"并称之为好吗?

1 个答案:

答案 0 :(得分:0)

我正在解决类似的问题,通常会像往常一样调用rake任务。这是我的例子,看看你是否可以让你的健康。

# Rakefile
#!/usr/bin/env rake
# Add your own tasks in files placed in lib/tasks ending in .rake,
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.

require File.expand_path('../config/application', __FILE__)
load 'engines/foo_engine/Rakefile'

MyApp::Application.load_tasks

然后在我的子模块的Rakefile中:

# engines/foo_engine/Rakefile
Dir[File.join(File.dirname(__FILE__), 'tasks/**/*.rake')].each do |f|
  load f
end

示例佣金任务:

# engines/foo_engine/lib/tasks/foo/bar/task.rake
namespace :foo do
  namespace :bar do
    desc "FooBar task"
    task :foo_bar => :environment do
      # perform task
    end
  end
end

然后从命令提示符:

rake foo:bar:task