2008-09-17 18 views
7

मैंने विकास में यात्री (मैक ओएस एक्स) स्थापित किया है और यह बेकार ढंग से काम करता है। एकमात्र समस्या बाद में आई: अब मेरे पास कस्टम GEM_HOME पथ और छवि मैगिक बाइनरी "/usr/local" में स्थापित है। मैं उन्हें एक शेल आरसी फाइलों में डाल सकता हूं जो सोर्स हो जाते हैं और यह कंसोल से उत्पन्न प्रक्रियाओं के लिए पर्यावरण चर को हल करता है; लेकिन यात्री के बारे में क्या? इस तरह से चलने पर वही एप्लिकेशन मेरे रत्न नहीं ढूंढ सकता है।फ़्यूज़न यात्री अनुप्रयोगों के लिए पर्यावरण चर सेट करना

+3

अद्यतन: यात्री 2.2.3 के बाद से, "SetEnv निर्देश समर्थित है: http: //blog.phusion.nl/2009/06/17/phusion-passenger-223- रिलीज़-bug-fix-edition/ ठीक है। बेन के उत्तर से तकनीक ने मुझे बहुत अच्छी तरह से सेवा दी लेकिन अब इसे और अधिक उपयोग करने की आवश्यकता नहीं है (ज्यादातर मामलों में) – mislav

उत्तर

12

मुझे दो समाधानों के बारे में पता है। पहला (दस्तावेज here) अनिवार्य रूप से मैन्युअल रूप से वही है जो आपके कोड में सीधे ENV चर सेट करता है।

दूसरा रूबी दुभाषिया के चारों ओर एक रैपर बनाने के लिए है जो यात्री उपयोग करता है, और here (passenger_with_ruby के लिए देखें) दस्तावेज है। सार यह है कि आप एक निष्पादन योग्य फ़ाइल से मिलकर बना सकते हैं (और करने के लिए अपने अपाचे config में PassengerRuby इंगित)/usr/bin/ruby_with_env, है:

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

दोनों काम; मुझे लगता है कि पूर्व दृष्टिकोण थोड़ा कम हैकिश है।

+0

बस अगर कोई और एक ही समस्या में चलता है तो मुझे लगता है: 'chmod + x/usr/bin/ruby_with_env'। –

+0

चूंकि यह एक पुराना उत्तर है, इसलिए मैं यह पुष्टि करना चाहता हूं कि इस समस्या को अभी भी इस समस्या को संभालने का अनुशंसित तरीका प्रतीत होता है। अधिक संदर्भ: http://blog.phusion.nl/2008/12/ 16/गुजरने-पर्यावरण-चर-से-रूबी-से-फ़्यूज़न-यात्री/और: http://dev.mensfeld.pl/2011/09/phusion-passenger-and-environment-variables-with-ruby-rake- अनुप्रयोग/ – Felixyz

+0

हाल ही में ऐसा लगता है कि सी है फांसी लगा ली। फ़्यूज़न 4.0 के बाद से, आप अपाचे निर्देश 'PassEnv' और 'SetEnv' का उपयोग कर सकते हैं: http://www.modrails.com/documentation/Users%20guide%20Apache.html#env_vars_passenger_apps – nielsbot

1

मैंने इस मुद्दे में भी भाग लिया है। यह appears है कि यात्री SetEnv अपाचे निर्देश का उपयोग करके सेट सेट को पैसथ्रू नहीं करता है - जो दुर्भाग्यपूर्ण है।

शायद यह अपने environment.rb या boot.rb में वातावरण चर सेट करने के लिए संभव हो सकता है (यह मानते हुए कि आप एक रेल अनुप्रयोग के बारे में बात कर रहे हैं, मैं रैक से परिचित नहीं हूँ, लेकिन शायद यह इसी तरह की सुविधा है)

2

इससे पहले कि आप किसी भी आवश्यकता है (विशेष रूप से rubygems की आवश्यकता से पहले) आप कर सकते हैं करते हैं:

ENV['GEM_HOME'] = '/foo' 

यह इस प्रक्रिया के अंदर वातावरण चर बदल जाएगा।

2

मुझे पता चला कि यदि आपके पास कंप्यूटर पर मूल निजीकरण है तो आप "envvars" फ़ाइल में आवश्यक वातावरण चर सेट कर सकते हैं और apachectl अपाचे शुरू करने से पहले इस फ़ाइल को निष्पादित करेगा।

envvars आमतौर पर उसी निर्देशिका में स्थित है जहां apachectl स्थित है - मैक ओएस एक्स पर यह/usr/sbin में स्थित है। यदि आप इसे नहीं ढूंढ पा रहे हैं तो apachectl स्क्रिप्ट के स्रोत में देखें।

envvars फ़ाइल बदलने के बाद अपाचे को "apachectl -k पुनरारंभ" के साथ पुनरारंभ करें।

संबंधित मुद्दे