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
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!
Nasıl Raylar geçiş veritabanında bir s...
Anlayış Raylar Özgünlük Token...
Nil özlü bir açıklama v. v. Raylar üze...
İ18n doğrulama raylar admin uyarı...
Nasıl (dişliler) varlık boru hattı ile...