Jaka jest różnica między tymi dwoma i kiedy należy używać zamiast innych?Szyny 3: Jaka jest różnica między silnikiem a klejnotem?
18
A
Odpowiedz
33
Terminologia dotycząca szyn w języku angielskim jest w rzeczywistości podjednostką aplikacji internetowej. Na przykład coś w rodzaju bloga, forum lub prostego uwierzytelniania: nie są one pełnowartościowymi aplikacjami, ale stronami/widokami/kontrolerami/modelami, które można dodać do dowolnej aplikacji szyny.
W przypadku rails2 można to zrobić za pomocą plugin
. Teraz od rails3 silnik może być pakowany w gem
.
A gem
to biblioteka rubinowa, którą można znaleźć pod numerem http://rubygems.org i jest to standardowy (jedyny) sposób na spakowanie i rozpowszechnienie kodu rubinowego wśród innych rubyków.
więc stwierdzić:
- Klejnot: jest ogólnym biblioteki, które można łatwo zainstalować, które są zarządzane wersja, mają zależności i takie.
- Silnik: jest aplikacją podrzędną aplikacji Rails, a ponieważ Rails 3 są one dystrybuowane jako klejnot (co jest niesamowite!).
Więc kiedy będzie użyć jednego lub drugiego:
- stworzyć klejnot jeśli chcesz udostępnić rubinowy funkcjonalności
- stworzyć silnik (i pakować go w gem), jeśli masz części twojej szyny, które można wykorzystać bardziej ogólnie.
Mam nadzieję, że to pomoże.
Powiązane problemy
- 1. Jaka jest różnica między GEM_HOME a GEM_PATH?
- 2. Jaka jest różnica między auto a = A (3) i A a (3)?
- 3. Jaka jest różnica między typescript.js a typescriptServices.js?
- 4. Jaka jest różnica między ramką a ramką?
- 5. Jaka jest różnica między app.doScript a $ .evalFile?
- 6. jaka jest różnica między: %% a% zmiennymi% zmiennych?
- 7. Jaka jest różnica między KERN_INVALID_ADDRESS a KERN_PROTECTION_FAILURE?
- 8. Jaka jest różnica między cat_id a term_id?
- 9. Jaka jest różnica między IEnumerable a tablicami?
- 10. Jaka jest różnica między == a === w Verilog?
- 11. Jaka jest różnica między UseCase a Workflow?
- 12. Jaka jest różnica między pakietem a intencją?
- 13. Jaka jest różnica między węzłem a wierzchołkiem?
- 14. Jaka jest różnica między Ember.computed.alias a Ember.binding?
- 15. Jaka jest różnica między alertem a window.alert?
- 16. Jaka jest różnica między @android a android:
- 17. Jaka jest różnica między krotką a kompresją?
- 18. Jaka jest różnica między proxy a reify?
- 19. Jaka jest różnica między @Inject a @PersistenceContext?
- 20. Jaka jest różnica między sqlite3 a pdo_sqlite
- 21. Jaka jest różnica między Const a Constant?
- 22. Jaka jest różnica między Socket.IO a Firebase?
- 23. Jaka jest różnica między macierzą a tablix?
- 24. Jaka jest różnica między Float.POSITIVE_INFINITY a Float.MAX_VALUE?
- 25. Jaka jest różnica między SGML a XML?
- 26. Jaka jest różnica między Cake a Leiningen?
- 27. Jaka jest różnica między JavaBean a POJO?
- 28. Jaka jest różnica między kopiowaniem a klonowaniem?
- 29. Jaka jest różnica między HAVING a WHERE?
- 30. Jaka jest różnica między ItemTemplate a ItemPanelTemplate?
dzięki. jeszcze jedno pytanie: aplikacje, których używamy, takie jak Hoptoad, wyjątkowy, newrelic itp. czy to są klejnoty czy silniki? dzięki – donald
Wszystkie są klejnotami. Klejnot można łatwo powiązać z Railsami, wdrażając klasę o nazwie 'Railtie'. Oznacza to, że może łączyć funkcje w szynach. Jeśli implementuje klasę o nazwie 'Engine', może zaoferować więcej: modeli, widoków, kontrolerów, a od rails 3.1 także zasoby takie jak arkusze stylów, javascripts, ... Wszystkie wymienione klejnoty implementują' Railtie' do wiązania z Railsami. Oznacza to, że są one używane razem z Railsami. Tak więc, w zależności od funkcji, którą oferujesz Railsom, masz opcję utworzenia 'Railtie' lub' Engine'. – nathanvda
Jeśli funkcja, którą chcesz dodać w klejnocie, nie jest bezpośrednio zależna od Railsów (nie podłączasz się do żadnej z klas), tworzysz normalny klejnot. Na przykład. Nokogiri jest takim przykładem. Ale, podsumowując, od szyn 3 zawsze będziesz używać klejnotów do przedłużania szyn. Właśnie dlatego bundler stał się tak ważny. – nathanvda