大規模なプロジェクトに最適なアプローチを見つけようとしています。レシピを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. ビューまたはメインテーブルにインデックスを追加する必要がありますか?
- 2. VCSにポッドを追加する必要がありますか?
- 3. サブモジュールフォルダを.gitignoreに追加する必要はありますか?
- 4. ServicePlacementPreferPrimaryDomainPolicyDescriptionをコードまたはマニフェストファイルに追加する必要はありますか?
- 5. phpmyadminまたはphpを使用してコンテンツaをデータベースに追加する必要がありますか?
- 6. Heroku:ルートドメインを追加する必要がありますか?
- 7. Memcached/APCを追加する必要がありますか?
- 8. Cookieポリシーを追加する必要がありますか?
- 9. 印象を追跡するためにログファイルまたはDBを使用する必要がありますか?
- 10. ng-bootstrapを使用するにはindex.htmlにbootstrap.min.cssを追加する必要がありますか?
- 11. ブログをサイトに追加するか、ブログサービスを使用する必要がありますか?
- 12. 「using System.Timers;」を使用するには、何を追加する必要がありますか?
- 13. アプリケーションにAsyncTaskまたはIntentServiceを使用する必要がありますか?
- 14. 私はmyClickHandler()関数に何かを追加する必要があります
- 15. リモートプッシュ通知はInfo.plistにUIBackgroundModesを追加する必要がありますか?
- 16. スプライトキットゲームにボタンを追加する必要があります
- 17. jqueryフォームにsmtpを追加する必要があります
- 18. SSISにexcelファイルを追加する必要があります
- 19. ダイナミックにクラス名を追加する必要があります
- 20. APKファイルにアイコンを追加する必要があります
- 21. C# - パラメータコレクションにパラメータを追加する必要があります
- 22. DHTMLXGantt、ライトボックスにボタンを追加する必要があります
- 23. Laravelに日付を追加する必要があります
- 24. fitTextにminSizeを追加する必要があります
- 25. 私はsingletableviewを使用する必要がありますか?
- 26. はcaptchaを使用する必要がありますか?
- 27. 私はフォームタグを使用する必要がありますか?
- 28. @synthesizeをまだ使用する必要がありますか?
- 29. iOSはNSMutableArrayまたはNSMutableDictionaryを使用する必要がありますか?
- 30. 私はurandomまたはopenssl_random_pseudo_bytesを使用する必要がありますか?
レシピの繰り返しを避けることについてシェフがどのように知的なのですか?だからあなたの料理本が 'parent'に依存している場合、あなたは' include_recipe parent'といくつかの無意味な魂が 'parent'を実行リストに追加します、' parent :: default.rb'は2回実行されますか? 'parent'が[正しく作られている]場合(http://docs.opscode.com/chef_why.html#idempotence)、マシンに何も悪影響はありませんが、ブートストラップ/コンバージするときにどれくらい時間が掛かりますかノード?シェフが重複を避けるために自動化されていない場合は、手動で回避することをお勧めしますか? –
同じレシピを複数回ロードしません。すでに見たことがあればスキップします。 –
私はそれが偶像崇拝の恩恵であると思います:あなたが何回実行しても同じ結果を出すことが保証されているなら、すでに実行されていればスキップすることができます!ありがとうDraco。 –