سؤال

لقد قمت بإعداد Passenger قيد التطوير (Mac OS X) وهو يعمل بشكل لا تشوبه شائبة.المشكلة الوحيدة جاءت في وقت لاحق:الآن لدي العرف GEM_HOME المسار وثنائيات ImageMagick المثبتة في "/usr/local".يمكنني وضعها في أحد ملفات Shell rc التي يتم الحصول عليها من المصدر وهذا يحل متغيرات البيئة للعمليات الناتجة من وحدة التحكم؛ولكن ماذا عن الركاب؟لا يمكن لنفس التطبيق العثور على الأحجار الكريمة الخاصة بي عند تشغيله بهذه الطريقة.

هل كانت مفيدة؟

المحلول

أعرف حلين.الأول (توثيق هنا) هو في الأساس نفس متغير manveru — قم بتعيين متغير ENV مباشرة في التعليمات البرمجية الخاصة بك.

والثاني هو إنشاء غلاف حول مترجم Ruby الذي يستخدمه Passenger، ويتم توثيقه هنا (ابحث عن الراكب_مع_روبي).جوهر الأمر هو أنك تقوم بإنشاء (وتوجيه PassengerRuby في تكوين Apache الخاص بك إلى) /usr/bin/ruby_with_env، وهو ملف قابل للتنفيذ يتكون من:

#!/bin/bash
export ENV_VAR=value
/usr/bin/ruby $*

كلا العملين؛أعتقد أن النهج السابق أقل اختراقًا.

نصائح أخرى

قبل أن تفعل أي يتطلب (خاصة قبل أن تطلب أحجار الياقوت) يمكنك القيام بما يلي:

ENV['GEM_HOME'] = '/foo'

سيؤدي هذا إلى تغيير متغير البيئة داخل هذه العملية.

لقد اكتشفت أنه إذا كان لديك امتيازات الجذر على جهاز الكمبيوتر، فيمكنك تعيين متغيرات البيئة الضرورية في ملف "envvars" وسيقوم apachectl بتنفيذ هذا الملف قبل بدء تشغيل Apache.

عادةً ما يوجد envvars في نفس الدليل الذي يوجد به apachectl، أما في نظام التشغيل Mac OS X فهو موجود في /usr/sbin.إذا لم تتمكن من العثور عليه، فابحث في مصدر البرنامج النصي apachectl.

بعد تغيير ملف envvars، قم بإعادة تشغيل Apache باستخدام "apachectl -k Restart".

لقد واجهت هذه المشكلة أيضًا.هو - هي يبدو أن الراكب لا يقوم بتعيين قيم العبور باستخدام SetEnv توجيه أباتشي - وهو أمر مؤسف.

ربما يكون من الممكن تعيين متغيرات البيئة في بيئة rb أو boot.rb (على افتراض أنك تتحدث عن تطبيق Rails؛لست على دراية بـ Rack ولكن من المفترض أنه يحتوي على وظائف مماثلة)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top