2011-07-25 2 views

答えて

33

レール用語のEngineは、実際にはWebアプリケーションのサブアプリケーションです。たとえば、ブログ、フォーラム、または単純な認証のようなものです。これらは本格的なアプリケーションではなく、すべてのレールアプリケーションに追加できるページ/ビュー/コントローラ/モデルです。

rails2では、これはpluginを使用して行われます。 rails3以来、エンジンはgemにパッケージ化することができます。

gemは、http://rubygems.orgにあるルビーライブラリです。ルビコードをパッケージ化して他のルビストに配布するための標準的な方法です。

そう結論します

  • 宝石を:バージョン管理されている簡単にインストールすることができる汎用的なライブラリは、依存関係などを持っています。
  • エンジン:はRailsアプリケーションのサブアプリケーションであり、Rails 3以降はgemとして配布されています(素晴らしいです!)。あなたが持っている場合はエンジンを作成して(と宝石で、それをパッケージ化)ルビー機能
  • を共有したい場合は

    • 宝石を作成します。あなたはどちらか一方を使用しますので、

    より一般的に使用できるレールアプリケーションの一部です。

これが役に立ちます。

+0

ありがとうございました。もう1つ質問:Hoptoad、例外的な、ニューレルのような我々が使用するアプリは、それらが宝石かエンジンか?ありがとう – donald

+7

彼らはすべて宝石です。宝石は、Railtieと呼ばれるクラスを実装することによって、Railsに簡単に結びつくことができます。つまり、機能的にレールに結びつけることができます。もしそれが 'Engine'というクラスを実装していれば、モデル、ビュー、コントローラ、さらにはスタイルシート、javascriptsなどのアセットも提供することができます。Railsにバインドするために' Railtie'を実装しています。これは、これらがRailsと一緒に使用されることを意味します。したがって、Railsに提供する機能に応じて、「Railtie」または「Engine」を作成するオプションがあります。 – nathanvda

+1

gemに追加したい機能がRailsに直接依存していない場合(クラスにはフックしない)、通常のgemを作成します。例えば。ノコギリはそのような例です。しかし、結論として、レール3以来、あなたはいつもレールを伸ばすために宝石を使うでしょう。これはまた、バンドラーが非常に重要になった理由です。 – nathanvda

関連する問題