هل هناك طريقة لتغيير Map.root للإشارة إلى شيء آخر غير '/'؟
-
21-08-2019 - |
سؤال
لدي Apache 2.2 مع تشغيل mod_rails http://localhost.أريد أن يكون تطبيق Rails الخاص بي على http://localhost/RailsBlog.لذا، ما فعلته هو أنني قمت بإنشاء مضيف افتراضي:
ServerName localhost DocumentRoot /Library/WebServer/Documents RailsEnv development RailsBaseURI /railsBlog
الآن، نظرًا لأن عنوان URL هو http://localhost/RailsBlog, وجهات نظر الخادم RailsBlog كوحدة التحكم التي أقوم بتمريرها، وهذا ليس ما أريده.لذلك عندما أذهب إلى http://localhost/RailsBlog/الصفحة الرئيسية/index.لن يصل هذا إلى وحدة التحكم "المنزلية" وعرض "الفهرس" لأنه يحاول الانتقال إلى "RailsBlogوحدة التحكم (غير موجودة) وعرض "الصفحة الرئيسية" (غير موجود).
أعتقد أن إحدى الطرق لحل هذه المشكلة هي إعادة تعريف Map.root ليكون /railsBlog وينبغي أن تكون الأمور على ما يرام.ولكن كيف؟
هناك طريقة أخرى للتغلب على هذا وهي تعديل config/routes.rb للحصول على:
map.connect 'RailsBlog/:controller/:action/:id'
ومع ذلك، فإن هذا يعني أنه سيتعين علي تغيير هذا الملف في كل مرة أقوم فيها بالنشر إلى موقع مختلف.
أم أن هناك طريقة أخرى للالتفاف حول هذا؟
المحلول
يمكنك وضع سطر مثل هذا في config/environment.rb (أو أحد ملفات البيئة المحددة)
config.action_controller.relative_url_root = "/railsBlog"
يجب عليك أيضًا ربط رمز publc
الدليل إلى جذر دليل الويب، على سبيل المثال:
ln -s /rails/railsBlog/public /webroot/
هذا كله من وثائق الركاب
نصائح أخرى
فقط للإضافة إلى الإجابة السابقة ...هنا هو عنوان URL للوثائق:
http://www.modrails.com/documentation/Users%20guide.html#deploying_rails_to_sub_uri
وإليك أيضًا بعض المعلومات إذا كنت تواجه أخطاء في الصور المعطلة، أو CSS، أو روابط الموارد...
http://www.modrails.com/documentation/Users%20guide.html#sub_uri_deployment_uri_fix
تنص في الأساس على أنه يجب عليك دائمًا استخدام الوظائف المساعدة لـ Rails (image_tag، وjavascript_include_tag، وstylesheet_link_tag) بدلاً من ترميز عناوين url يدويًا.سيؤدي ذلك تلقائيًا إلى إنشاء عنوان URL الصحيح باستخدام عنوان URL الفرعي الذي قمت بتعيينه.
يتيح لك ذلك نقل التطبيق بسهولة إلى عنوان uri فرعي آخر أو خارج تكوين uri الفرعي دون تغيير جميع مراجعك.
أحد الأشياء الرائعة في هذا هو أنه يمكنك استخدام بيان خادم افتراضي واحد لنشر تطبيقات متعددة من خلال وجود خطوط RailsBaseURI متعددة.كان هذا مفيدًا للتطبيق الذي كنا نحاول إنشاءه.