2016-07-29 9 views
0

を呼び出して、親タスクのために:は、タスクを構築する方法を知ってはいけない - 私はこのようになります<code>setup_a_new_set_of_snippets</code>と呼ばれるrakeタスク、持っている他のタスク

:私はこのようにそれを呼び出しています

load './lib/tasks/fetch_and_create_snippets.rake' 
load './lib/tasks/generate_diffs_for_snippets.rake' 
load './lib/tasks/cleanup_snippets_with_empty_diffs.rake' 

desc "Setup a new set of Snippets" 
task :setup_a_new_set_of_snippets, [:repo, :path, :entry_id, :framework_id, :method_name] => :environment do |task, args| 
    repo = args[:repo] 
    path = args[:path] 
    entry_id = args[:entry_id] 
    framework_id = args[:framework_id] 
    method_name = args[:method_name] 
    Rake::Task["fetch_and_create_snippets[#{repo},#{path},#{entry_id},#{framework_id},#{method_name}]"].invoke 
    Rake::Task["generate_diffs_for_snippets"].invoke 
    Rake::Task["cleanup_snippets_with_empty_diffs"].invoke 
end 

$ rake setup_a_new_set_of_snippets["some/repo","some/viable/path",1,1,has_many] 
** Invoke setup_a_new_set_of_snippets (first_time) 
** Invoke environment (first_time) 
** Execute environment 
** Execute setup_a_new_set_of_snippets 
rake aborted! 
Don't know how to build task 'fetch_and_create_snippets[some/repo,some/viable/path,1,1,has_many]' (see --tasks) 
/lib/tasks/setup_new_snippet_set.rake:12:in `block in <top (required)>' 
/gems/rake-11.2.2/exe/rake:27:in `<top (required)>' 
/bin/ruby_executable_hooks:15:in `eval' 
/bin/ruby_executable_hooks:15:in `<main>' 
Tasks: TOP => setup_a_new_set_of_snippets 
(See full trace by running task with --trace) 

これは、それが上のハングアップを取得しますタスクです:

desc 'Fetch and Create Snippets from Github' 

task :fetch_and_create_snippets, [:repo, :path, :entry_id, :framework_id, :method_name] => :environment do |task, args| 
    # truncated for brevity 
end 

FWIW、私はを実行します10タスクそのもの...それは魅力のように動作します。

この原因は何ですか?

答えて

1

引数をrakeタスクに正しく渡していません。右ここでは、具体的にHow to pass command line arguments to a rake task

参照してください:

Rake::Task["fetch_and_create_snippets"].invoke(repo, path, entry_id, framework_id, method_name) 
+0

パーフェクトです。ありがとう。魅力的な作品! – marcamillion

1

引数を渡す構文:Rake::Task[name].invokeための適切な構文は次のようになり、一方、あなたはRake.application.invoke_taskの構文を使用しているように見える

Rake::Task["fetch_and_create_snippets[#{repo},#{path},#{entry_id},#{framework_id},#{method_name}]"].invoke 

レーキタスクには:

Rake::Task['fetch_and_create_snippets'].invoke(
    repo, path, entry_id, framework_id, method_name 
) 
+0

ああ...そうです。どうもありがとう! – marcamillion

関連する問題