___güçlü " komutu.rails plugin new forum --full %23 Enginerails plugin ne" /> ___güçlü " komutu.rails plugin new forum --full %23 Enginerails plugin ne" />
SORU
25 Mayıs 2011, ÇARŞAMBA


Raylar 3.1: Monte App Engine vs

Biri bana Raylar bir Motor ve Monte edilebilir bir uygulama arasındaki farkları anlamanıza yardımcı olabilir? "Yeni Eklenti raylar . ya da bir tane oluşturabilirsiniz 3.1, Raylar ^strong>___güçlü " komutu.

rails plugin new forum --full        # Engine
rails plugin new forum --mountable   # Mountable App

Ne zaman diğer karşı kullanmak ister miydin? Bir taş gibi bir Motor paketi, yapabileceğini biliyorum. Bu Monte Uygulamalar için geçerli değildir? Diğer farklar nelerdir?

CEVAP
26 Temmuz 2011, Salı


Aşağıdaki fark ettim:

Tam Motor

Tam bir motor ile, üst uygulama motoru yolları devralır. parent_app/config/routes.rb bir şey belirtmek gerekli değildir. Gemfile içerisinde gem belirterek, üst uygulama modelleri, yollar, vb devralmak için yeterli. Motor yolları olarak belirtilmiş

# my_engine/config/routes.rb 
Rails.application.routes.draw do 
  # whatever 
end 

Modelleri, kontrolörler, vb hiçbir namespacing. Bu hemen ana uygulama tarafından erişilebilir.

Monte Motoru

Motorun ad alanı varsayılan olarak izole

# my_engine/lib/my_engine/engine.rb
module MyEngine 
  class Engine < Rails::Engine 
    isolate_namespace MyEngine 
  end 
end

Monte motoru ile yolları namespaced ve üst app işlevselliği tek bir rota altında bu paket:

# my_engine/config/routes.rb 
MyEngine::Engine.routes.draw do 
  #whatever 
end 

# parent_app/config/routes.rb 
ParentApp::Application.routes.draw do 
    mount MyEngine::Engine => "/engine", :as => "namespaced" 
end 

Modeller, vb yardımcıları kolayca paylaşılabilir, ancak ana uygulama izole - denetleyicileri.

Bu fark var en büyük farklar bunlar. Belki başkaları da var mı? here, sordum ama henüz bir yanıt almak için.

Benim izlenimim tam bir motor ana uygulama kendini izole olmadığından, en iyi bağımsız bir uygulama ana uygulama bitişik olarak kullanılmış olmasıdır. Adı çatışmalar meydana gelebilir inanıyorum.

Takılabilir bir motor ana uygulama belirli bir rota adı altında çatışmaları önlemek ve motor paket istediğiniz durumlarda kullanılabilir. Örneğin, ilk motorumu Müşteri Hizmetleri için tasarlanmış bir yapı üzerinde çalışıyorum. Ana uygulama tek bir yol gibi işlevleri var bundle:

mount Cornerstone::Engine => "/cornerstone", :as => "help" 

Eğer benim varsayımlara yol gidiyorum, birisi lütfen bana bildirin ve bu yanıt düzelteceğim. Konu hakkında küçük bir yazı here Şerefe yaptım!

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BenjiManTV

    BenjiManTV

    20 Mart 2011
  • JamesAtiPhone

    JamesAtiPhon

    16 EYLÜL 2010
  • kimaliz

    kimaliz

    18 Temmuz 2006