7

次のようにしてサブタスクのリストを呼び出し、それぞれにプロジェクトの Rails 環境を利用させることができることを知っています。

task :main_task => [:sub_task1, :sub_task2] do
end

task :sub_task1 => :environment do
  Model1.some_class_method
end

task :sub_task2 => :environment do
  Model2.some_class_method
end


私の質問は

  1. 各サブタスクに明示的に配置する必要がないよう:main_taskに渡す方法はありますか?:environment
  2. サブタスクを「プライベート」と見なす方法はありますか? つまり、個別に明示的に呼び出されることは望ましくありません。からのみ実行され:main_taskます。基本的に、あるデータベース (SQLServer) からデータを読み取り、別のデータベース (MySQL - Rails プロジェクトのデータベース) にデータを入力する必要がありますが、読みやすくするために、「読み取り」タスクと「入力」タスクを分けておきたいと考えています。
4

1 に答える 1

7

:environment他の2つのタスクの前に、親タスクに1回だけタスクをリストして、1回だけリストすることができます。

task :main_task => [:environment, :sub_task1, :sub_task2] do
end

「プライベート」タスクはありませんが、上に線rake -Tを引かないようにすることで、それらがリストされないようにすることができdescます。それらが直接呼び出された場合(親が行うことを検出するなど)、例外をスローすることで手動で強制することができます。

ただし、レーキタスクとして直接公開されていない共有メソッドまたはクラスにコードを配置する方がよいでしょう。

于 2013-02-04T19:35:24.573 に答える