2011-07-25 6 views

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.

+0

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

+7

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

+1

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

Powiązane problemy