大規模なプロジェクトに最適なアプローチを見つけようとしています。レシピをrun_list
に追加するのではなく、include_recipe
を使用してレシピ内にレシピを追加するのが適切なのはいつですか?親指の良いルールはありますか?include_recipeを使用するか、またはレシピをrun_listに追加する必要がありますか?
答えて
私が見ているように、どのレシピもそれ自身で空のマシンで実行できるはずです。したがって、レシピAのレシピBがレシピBに依存する場合は、常にinclude_recipeを使用します。
たとえば、2つの料理ブック、tomcat、java。 TomcatにはJavaが必要です。
ユーザーがtomcatをインストールしたい場合、彼は実際にインストールするために他の料理ブックが必要であるとは思わないかもしれません。彼はtomcatのレシピを実行し、 "No java found"のような完全に役に立たないエラーメッセージで失敗するか、さらに悪いことに成功しますが、Javaがインストールされていないため、ユーザーはTomcatを起動できません。 「料理のJavaが見つからない」:
しかし
include_recipe 'java'
ラインは、メタデータにdepends 'java'
ラインを必要とTomcatの料理であり、ユーザーTomcatをインストールしようと、理解しやすいエラーメッセージが表示されます。このようにして、実際にはユーザーは実際にレシピを実行せずにメタデータを読むことで、独自の(または自動ツールでも)依存関係をダウンロードできます。
すべてのロジックは実行リストで制御する必要があります。クックブックは、人々が思うように再利用することはできません。すべてinclude_recipe
は、実行リストが何をしようとしているかを把握するためにユーザーが見なければならない別の場所を追加するので、明示的にして実行リストに入れます。
私は依存関係を明示的にするために 'include_recipe'を使うべきだと考えます。 – user1071847
- 1. phpmyadminまたはphpを使用してコンテンツaをデータベースに追加する必要がありますか?
- 2. Memcached/APCを追加する必要がありますか?
- 3. 印象を追跡するためにログファイルまたはDBを使用する必要がありますか?
- 4. ブログをサイトに追加するか、ブログサービスを使用する必要がありますか?
- 5. 「using System.Timers;」を使用するには、何を追加する必要がありますか?
- 6. C# - パラメータコレクションにパラメータを追加する必要があります
- 7. アプリケーションにAsyncTaskまたはIntentServiceを使用する必要がありますか?
- 8. 私はmyClickHandler()関数に何かを追加する必要があります
- 9. はcaptchaを使用する必要がありますか?
- 10. 私はフォームタグを使用する必要がありますか?
- 11. フレックスモジュールを使用して開発する際に、ライブラリプロジェクトにVOを追加する必要がありますか?
- 12. @synthesizeをまだ使用する必要がありますか?
- 13. iOSはNSMutableArrayまたはNSMutableDictionaryを使用する必要がありますか?
- 14. 私はurandomまたはopenssl_random_pseudo_bytesを使用する必要がありますか?
- 15. オンラインゲームにTCPを使用する必要がありますか?
- 16. MVVMにDataTemplatesを使用する必要がありますか?
- 17. capistranoはgemパスを使用しません。私は追加する必要がありますか?ベストプラクティス
- 18. オブジェクトを追加するのに、どのオブジェクトコレクションを使用する必要がありますか?
- 19. 別のonClickイベントを追加する必要があります
- 20. Unixスクリプトでロジックを追加する必要があります。
- 21. iPadでpopovercontrollerを追加する必要があります
- 22. 機能を追加する必要があります
- 23. jQuery divを追加する必要があります
- 24. ビューはモデルを追跡する必要がありますか?
- 25. PhobosまたはTangoを使用する必要がありますか?
- 26. AppDomain.CurrentDomain.BaseDirectoryまたはSystem.Environment.CurrentDirectoryを使用する必要がありますか?
- 27. scipy.pi、numpy.pi、またはmath.piを使用する必要がありますか?
- 28. タイマー、ハンドラ、またはASyncTaskを使用する必要がありますか?
- 29. GetまたはLoad-nhibernateを使用する必要がありますか?
- 30. Drupal 6またはDrupal 7を使用する必要がありますか?
レシピの繰り返しを避けることについてシェフがどのように知的なのですか?だからあなたの料理本が 'parent'に依存している場合、あなたは' include_recipe parent'といくつかの無意味な魂が 'parent'を実行リストに追加します、' parent :: default.rb'は2回実行されますか? 'parent'が[正しく作られている]場合(http://docs.opscode.com/chef_why.html#idempotence)、マシンに何も悪影響はありませんが、ブートストラップ/コンバージするときにどれくらい時間が掛かりますかノード?シェフが重複を避けるために自動化されていない場合は、手動で回避することをお勧めしますか? –
同じレシピを複数回ロードしません。すでに見たことがあればスキップします。 –
私はそれが偶像崇拝の恩恵であると思います:あなたが何回実行しても同じ結果を出すことが保証されているなら、すでに実行されていればスキップすることができます!ありがとうDraco。 –