ฉันสังเกตเห็นสิ่งต่อไปนี้: 
เครื่องยนต์เต็มรูปแบบ
ด้วยเครื่องยนต์เต็มรูปแบบแอปพลิเคชันแม่จะสืบทอดเส้นทางจากเครื่องยนต์ ไม่จำเป็นต้องระบุอะไรในparent_app/config/routes.rb. การระบุอัญมณีใน Gemfile เพียงพอสำหรับแอปพาเรนต์ในการสืบทอดโมเดลเส้นทางและอื่น ๆ เส้นทางเครื่องยนต์ถูกระบุเป็น:
# my_engine/config/routes.rb 
Rails.application.routes.draw do 
  # whatever 
end 
ไม่มีการกำหนดเนมสเปซของโมเดลคอนโทรลเลอร์และอื่น ๆ สิ่งเหล่านี้สามารถเข้าถึงได้ทันทีในแอปพลิเคชันหลัก 
เครื่องยนต์ที่ติดตั้งได้
เนมสเปซของเครื่องยนต์ถูกแยกโดยค่าเริ่มต้น:
# my_engine/lib/my_engine/engine.rb
module MyEngine 
  class Engine < Rails::Engine 
    isolate_namespace MyEngine 
  end 
end
ด้วยเอ็นจิ้นที่ติดตั้งได้เส้นทางจะถูกเนมสเปซและแอพพาเรนต์สามารถรวมฟังก์ชันนี้ไว้ในเส้นทางเดียว: 
# 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 
โมเดลคอนโทรลเลอร์และอื่น ๆ จะแยกออกจากแอปพลิเคชันหลัก - แม้ว่าตัวช่วยจะสามารถแชร์ได้อย่างง่ายดาย 
นี่คือความแตกต่างหลักที่ฉันเห็น บางทีอาจมีคนอื่น? ฉันได้ถามมากกว่าที่นี่แต่ยังไม่ได้รับการตอบสนอง
ความประทับใจของฉันคือเนื่องจากเอนจินเต็มรูปแบบไม่ได้แยกตัวเองออกจากแอปพลิเคชันหลักจึงควรใช้เป็นแอปพลิเคชันแบบสแตนด์อโลนที่อยู่ติดกับแอปหลัก ฉันเชื่อว่าการปะทะกันของชื่ออาจเกิดขึ้นได้
สามารถใช้เครื่องยนต์ที่ติดตั้งได้ในสถานการณ์ที่คุณต้องการหลีกเลี่ยงความขัดแย้งของชื่อและรวมเครื่องยนต์ไว้ภายใต้เส้นทางเดียวในแอปพลิเคชันหลัก ตัวอย่างเช่นฉันกำลังสร้างเครื่องยนต์ตัวแรกที่ออกแบบมาเพื่อการบริการลูกค้า แอปพลิเคชันหลักสามารถรวมฟังก์ชันการทำงานไว้ภายใต้เส้นทางเดียวเช่น:
mount Cornerstone::Engine => "/cornerstone", :as => "help" 
หากฉันไม่เข้าใจสมมติฐานใครบางคนโปรดแจ้งให้เราทราบแล้วฉันจะแก้ไขคำตอบนี้ ฉันได้ทำบทความเล็ก ๆ เกี่ยวกับเรื่องนี้ที่นี่   ไชโย!