2012-04-30 1 views
2

J'ai un projet incluant un certain nombre de javascripts vendus, par ex. jQuery. J'inclus ces scripts sous-modules git. Cependant, pour mon processus de construction, j'ai besoin du script construit, pas du référentiel entier de ce script. J'essaie donc de mettre en place une tâche de rake pour construire chaque script - de préférence en utilisant le propre rakefile du script - et de copier ensuite le script construit dans mon répertoire d'assets.Comment puis-je appeler une tâche rake sur un sous-module git?

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 

Si je import 'app/vendor/scriptname/Rakefile' dans mon Rakefile, je devrais avoir accès à la tâche de râteau qui construit le script, non? Comment pourrais-je l'appeler? Ou devrais-je simplement utiliser sh "cd app/vendor/script-submodule/ && rake dist" et l'appeler bien?

Répondre

0

Je travaille sur un problème similaire et il semblerait que cela fonctionne très bien en appelant la tâche rake comme vous le feriez normalement. Voici à quoi ressemble mon exemple, voyez si vous pouvez adapter le vôtre.

# 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 

Puis dans mon Rakefile de sous-module:

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

Et une tâche de coupe exemple:

# 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 

Ensuite, à partir de l'invite de commande:

rake foo:bar:task 
Questions connexes