2016-12-25 20 views
0

私は別のタスクに依存するレーキルールを作ろうとしています。タスク依存関係のレイクルール

task :foo do 
    @iv = 42 
end 

task :bar => :foo do 
    p @iv 
end 

Rake::Task[:bar].invoke 

結果:

42 

私は正規表現を使用できるようにルールを使用できるようにしたいと思いますが、以下のように、私はタスクのみを使用する場合、それは動作します。しかし、私はエラーを取得しています:

task :foo do 
    @iv = 42 
end 

rule /bar/ => :foo do 
    p @iv 
end 

Rake::Task["bar"].invoke 

結果:

/Users/max/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/task_manager.rb:284:in `block in make_sources': Don't know how to handle rule dependent: :foo (RuntimeError) 
    from /Users/max/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/task_manager.rb:267:in `map' 
    from /Users/max/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/task_manager.rb:267:in `make_sources' 
    from /Users/max/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/task_manager.rb:245:in `attempt_rule' 
    from /Users/max/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/task_manager.rb:130:in `block in enhance_with_matching_rule' 
    from /Users/max/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/task_manager.rb:128:in `each' 
    from /Users/max/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/task_manager.rb:128:in `enhance_with_matching_rule' 
    from /Users/max/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/task_manager.rb:56:in `[]' 
    from /Users/max/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/task.rb:361:in `[]' 
    from baz.rb:63:in `<main>' 

がどのように私は別のタスクに依存したルールを使用していますか?

編集:

ルールの下で述べたように、それが文字列として依存関係だ取ります

task :foo do 
    @iv = 42 
end 

rule /bar/ => "foo" do 
    p @iv 
end 

Rake::Task["bar"].invoke 
#=> 42 

答えて