القضبان - توفير مفتاح الترخيص إلى البرنامج المساعد بناء على اسم المضيف

StackOverflow https://stackoverflow.com/questions/1659361

سؤال

أنا أستخدم بقايا جديدة للقارات، ولكن فقط بحاجة إلى علاقات جديدة لمراقبة بيئة إنتاجي واحدة. ومع ذلك، لدي خادم توجيه يعمل أيضا في وضع الإنتاج. الكشف عن علاقات جديدة لأنها مثيلات تشغيل تشغيل التطبيق الخاص بي (كما ينبغي)، لكنني لا أريد أن أتعرض لدفع ثمن مراقبة مثيلتين عندما أريد فقط أن أظل مراقبة واحدة.

تقبل الأفعال الجديدة متغير بيئة لمفتاح الترخيص:

license_key: <%= ENV['NEWRELIC_ACCOUNT_KEY'] %>

هل من الممكن اكتشاف اسم المضيف في ملفات البيئة (أي التكوين / البيئات / الإنتاجية.rb) حتى أتمكن من تحديد متغير البيئة هذا ديناميكيا؟

يتم نشر كلا البيئة من مستودع GIT نفسه، نفس قاعدة التعليمات البرمجية المصدر، لذلك لا يمكنني تغييره حقا في التعليمات البرمجية لكل نشر - سيكون من الأفضل أن تكون قادرا على تحديد متغير البيئة بشكل حيوي بطريقة أو بأخرى.

سيكون موضع تقدير أية أفكار! شكرا!

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

المحلول

سيقوم وكيل Ruby Rick الجديد بتحليل newrelic.yml ملف التكوين كما erb قبل تحليلها كما Yaml. لذلك، يمكنك القيام بالكثير من الحيل الأنيقة، مثل:

production:
  license_key: <%= Socket.gethostname == 'mission-critical.example.com' ? 'PAID_ACCOUNT_LICENSE_KEY' : 'FREE_LITE_ACCOUNT_LICENSE_KEY' %>

يحدث هذا التحليل كل شيء في وقت التمهيد التطبيق.

إذا كانت Rails_Env الخاصة بك مختلفة عن "الإنتاج" في خادم التدريج الذي يعمل "في وضع الإنتاج"، فيمكنك فقط استخدام أقسام البيئة كما يوحي ستيف جراهام.

نصائح أخرى

هل قمت بإنشاء بيئة منفصلة للتدريج؟ أي التطوير، الاختبار، الإنتاج، والتدريج؟ انظر هنا للحصول على تعليمات ...

بعد القيام بذلك، يمكن للمرء تحديد السلوك لتلك البيئة في config/newrelic.yml

common: &default_settings
  license_key: 'PASTE_YOUR_KEY_HERE'
  …

development:
  enabled: false
  …

test:
  enabled: false
  …

production:
  enabled: true
  …

staging: 
  enabled: false
  …

إلخ، الخ

اسم المضيف متاح فقط في كائن طلب، لذلك لا، إنه غير متوفر عند بناء القضبان البيئة.

أود فقط إعداد البرنامج النصي للنشر الخاص بك لنسخ الإنتاج .rb إلى staging.rb وبدء التطبيق في "التدريج". ستكون هناك تقنية أخرى لا تحتفظ بعنوان Newrelic.yml في SCM الخاص بك وبدلا من ذلك نسخها، أو ربطها، من مكان آخر إلى دليل النشر الحالي.

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