Próba znalezienia najlepszego podejścia do dużego projektu. Kiedy należy dodawać receptury do receptury, używając include_recipe
, a nie dodając przepis do run_list
? Czy istnieje dobra zasada?Czy powinienem użyć include_recipe lub dodać przepis do run_list?
Odpowiedz
Jak widzę, każdy przepis powinien być w stanie działać na pustej maszynie. Więc jeśli jakaś receptura A zależy od receptury B przed nią, zawsze używam include_recipe.
Na przykład: 2 książki kucharskie, tomcat i java. Tomcat wymaga języka Java.
Kiedy jakiś użytkownik chce zainstalować tomcat, może nie mieć pojęcia, że faktycznie potrzebuje innej książki kucharskiej, aby go zainstalować. On uruchamia przepis tomcat i albo zawiedzie z jakąś zupełnie niepomyślną informacją o błędzie, taką jak "No java found", albo jeszcze gorzej - to się uda, ale oczywiście użytkownik nie może uruchomić tomcat, ponieważ nie ma zainstalowanej javy.
Ale gdy istnieje linia
include_recipe 'java'
w tomcat książki kucharskiej, która wymaga również liniędepends 'java'
w metadanych, gdy użytkownik próbuje zainstalować Tomcat, ujrzy zrozumiały komunikat o błędzie: „java cookbook nie znaleziono”. W ten sposób użytkownik może pobierać zależności samodzielnie (lub nawet za pomocą automatycznego narzędzia) bez uruchamiania receptur, ale odczytywanie metadanych.
Cała logika powinna być kontrolowana za pomocą list biegowych. Książki kucharskie, próbuj jak mogą, nie są tak samo przydatne jak ludzie chcieliby myśleć. Wszystko, co robi include_recipe
, to dodanie kolejnego miejsca, w którym użytkownicy muszą się zastanowić, co ma zamiar zrobić lista uruchamiania, i wyraź je i umieść na liście uruchamiania.
Zakładam, że należy użyć 'include_recipe', aby uzależnić jawnie. – user1071847
- 1. Czy powinienem dodać .idea/workspace.xml do gitignore?
- 2. Czy MutationRecord.oldValue coś powinienem użyć?
- 3. Czy powinienem użyć prototypu, czy nie?
- 4. widok Androida lub surfaceView, którego powinienem użyć?
- 5. Czy powinienem rozszerzyć klasę Binder lub użyć programu Messenger?
- 6. Czy powinienem użyć put() lub putIfAbsent() po użyciu getOrDefault()?
- 7. Java: czy powinienem użyć "tego" słowa kluczowego lub przedrostka "m_"?
- 8. Zdolny przepis nie zostanie zainstalowany w moim przepisie.
- 9. Tabela lub lista: czego powinienem tu użyć?
- 10. Co powinienem użyć uśpienia lub czasomierza
- 11. WEBrick: RequestURITooDuży: czy powinienem zaktualizować lub użyć innego serwera?
- 12. Czy w systemie Windows powinienem użyć funkcji CreateFile lub fopen?
- 13. co powinienem użyć bloku try lub catch lub zdarzenia onerror
- 14. Czy powinienem dodać katalogi framework .NET do mojej zmiennej PATH?
- 15. Czy powinienem używać odbiornika lub obserwatora?
- 16. Do czego powinienem użyć git user.name?
- 17. czy powinienem używać urandom lub openssl_random_pseudo_bytes?
- 18. Czy powinienem używać nav lub ul
- 19. Symfony: czy powinienem dodać komendę rabbitmq: consumer do crontaba?
- 20. Czy powinienem ćwiczyć "mockistę" lub "klasyczną" TDD?
- 21. Od apache do nginx: wordpress przepis przeprojektowania
- 22. co powinienem użyć Eclipse rcp lub Eclipse Scout?
- 23. , którego z == i =: = powinienem użyć?
- 24. powinienem użyć pola lub właściwości w klasie, aby ustawić wartości
- 25. C# Rejestrowanie. Co powinienem użyć?
- 26. Jak można zmodularyzować przepis na szefa kuchni?
- 27. Co powinienem użyć zamiast com.google.appengine.repackaged *?
- 28. Co powinienem użyć w Prism-MEF lub Unity?
- 29. Które artefakty Maven powinienem użyć do importowania PowerMocka?
- 30. W Jira Agile, kiedy powinienem użyć "Historii" i kiedy powinienem użyć "Ulepszenia"
Jak inteligentny jest szef kuchni w kwestii unikania powtarzania przepisów? Więc jeśli twoja książka kucharska zależy od 'rodzica', to' include_recipe parent' i jakaś nieświadoma dusza dodaje 'rodzica' do listy wyników, czy' parent :: default.rb' jest uruchamiana dwukrotnie? Jeśli "rodzic" został [prawidłowo stworzony] (http://docs.opscode.com/chef_why.html#idempotence), nic złego się nie stanie z maszyną, ale ile czasu zmarnuje, gdy zaczniesz ładować/konwergować nowy węzeł? Jeśli Chef nie jest automagiczny w unikaniu duplikacji, czy istnieje zalecany sposób uniknięcia tego ręcznie? –
Nie ładuje tej samej receptury kilka razy. Pomija to, jeśli już to widział. –
Przypuszczam, że jest to korzyść z idempotencji: jeśli masz gwarancję tego samego wyniku, niezależnie od tego, ile razy go uruchomisz, wiesz, że możesz go pominąć, jeśli jest już uruchomiony! Dzięki, Draco. –