2016-06-13 3 views
0

初めてrakeを使用していますが、ファイルの依存関係に問題があります。テストを行うためにRuby Rake FILEメソッドが機能しません

Rakefile.rbに私はこのコードを置く:

task :ffile do 

    f1 = "config.yaml" 
    f2 = "Rakefile.rb" 

    if File.file? f1 then puts "## test file task on #{f1}" end 
    if File.file? f2 then puts "## test file task on #{f2}" end 

    file "#{f1}" => "#{f2}" do 
     puts "lol" 
    end 

    file "#{f2}" => "#{f1}" do 
     puts "lul" 
    end 

    file "#{f1}" do 
     puts "lil" 
    end 

    file "#{f2}" do 
     puts "lal" 
    end 

end 

私は、Windows 10上だし、

rake ffile 

を実行すると、結果が

Starting rake operations... 
## test file task on config.yaml 
## test file task on Rakefile.rb 

ですすなわち、ファイル方法は、4つのケースすべてで何もしません。私も引用符を削除しようとしましたが(つまりの代わりに"#{f1}"など、すべてfile)、同じ結果が得られました。 明らかに、私がテスト中にRakefile.rbを保存するたびに、ファイルmethoの1つがトリガーされるはずです。

構文エラーがありますか? Windows 10でトラブルシューティングを行っていますか?

おかげ

+0

「ファイル」とは何ですか?あなたはコードを投稿できますか? – floum

答えて

1

file方法は、実際に手動で実行する必要があるファイルのタスクhttps://github.com/ruby/rake/blob/b63f7d33d72782f646ef95da10300d273c9b8006/lib/rake/dsl_definition.rb#L75を定義するためのDSLです。

Rake::Task[f1].invoke 
Rake::Task[f2].invoke 

DSLモデムの定義が循環依存があるので:上記のコードはエラーが発生します追加、TOP => config.yaml => Rakefile.rb => config.yamlを。

しかし、あなたはファイルタスクを呼び出す方法を知ることができたと思います。

0

ありがとうlarrylv、私は理解しました! larrylvが

  • を言ったように、

    1. 円形と私は、ファイルのタスクを起動していない:

      私は2個のエラーを持っています!

  • は、だから私はこれで

    f1 = "config.yaml" 
    f2 = "Rakefile.rb" 
    
    task :ffile => ["#{f1}"] 
    
    file "#{f1}" => ["#{f2}"] do 
        puts "lul" 
    end 
    

    、aspectedとしてrake ffile作品のコマンドを動作する簡単な例を報告し(larrylvは語りました)。

    ありがとうございます!

    関連する問題