আমি নিম্নলিখিতটি লক্ষ্য করেছি:
পূর্ণ ইঞ্জিন
একটি পূর্ণ ইঞ্জিন সহ, প্যারেন্ট অ্যাপ্লিকেশন ইঞ্জিন থেকে রুট উত্তরাধিকার সূত্রে পায়। এটিতে কিছু নির্দিষ্ট করার দরকার নেই parent_app/config/routes.rb
। মডেল, রুট ইত্যাদির উত্তরাধিকারী হিসাবে পিতৃ অ্যাপ্লিকেশনটির জন্য জেমফাইলে রত্ন উল্লেখ করা যথেষ্ট The
# 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"
আমি যদি আমার অনুমানের বাইরে চলে যাই তবে কেউ দয়া করে আমাকে জানান এবং আমি এই প্রতিক্রিয়াটি ঠিক করব। আমি এখানে চিয়ার্সটি সম্পর্কে একটি ছোট্ট নিবন্ধ তৈরি করেছি !