2015-05-13 7 views
9

पर चल रहा है मेरी स्थानीय मशीन पर, मैं रेल के साथ रेल चलाता हूं। मेरे पास कुछ सामान है जो कॉन्फ़िगर/प्रारंभकर्ताओं में एक फ़ाइल के माध्यम से शुरू होता है, जो puts का उपयोग करता है, यह बताता है कि यह किस डेटाबेस का उपयोग कर रहा है, ईमेल भेजने के लिए क्या उपयोग किया जा रहा है, और जानकारी के कुछ अन्य बिट्स का उपयोग किया जाता है।mongrel_rails - प्रोग्रामिक रूप से रिपोर्ट करें कि यह कौन सा बंदरगाह

जब मैं 3000, 3001 और 3002 बंदरगाहों पर मंगोलियों का समूह चलाता हूं, तो मैं केवल पोर्ट 3000 पर मोंगेल के लिए यह रिपोर्टिंग सामान करना चाहता हूं। इसलिए, मुझे इसे if ब्लॉक में लपेटने की आवश्यकता है जो पोर्ट वर्तमान में चल रहा है mongrel का उपयोग कर रहा है। क्या कोई मुझे बता सकता है कि मैं इसे अपने कोड में कैसे प्राप्त कर सकता हूं?

उत्तर

1

ठीक है, मैं अपने स्वयं के प्रश्न का उत्तर दे रहा हूं क्योंकि मैंने अभी एक उपहार देने के बाद इसे समझ लिया है!

मैं वर्तमान में चल रहे प्रक्रिया के के साथ पिड प्राप्त कर सकता हूं। जो मुझे इस

pid                     port 
    |                     | 
    V                     V 
10761 pts/1 S  0:20 | \_/usr/local/bin/ruby /path/to/mongrel_rails start -p 3000 
10762 pts/1 S  0:18 | \_/usr/local/bin/ruby /path/to/mongrel_rails start -p 3001 
10763 pts/1 S+  0:23 | \_/usr/local/bin/ruby /path/to/mongrel_rails start -p 3002 

की तरह जिसके परिणामस्वरूप मैं तो पीआईडी ​​के लिए grep सकते हैं, और मिलान लाइन से बाहर पोर्ट नंबर पढ़ा है, और देखें कि क्या वह 3000

तो है देता है तो फिर मैं ps afx | grep mongrel कर सकते हैं , मेरे कोड

if `ps afx | grep mongrel_rails`.split("\n").detect{|line| line =~ /^#{Process.pid}.+\-p\s3000/} 
    #this is a mongrel running on port 3000 - do the extra stuff 
    .... 
end 

BTW है, अगर कोई मुझे बता सकता है कि सीधे चल संकर जाति के बंदरगाह प्राप्त करने के लिए, ps afx और Process.pid के माध्यम से जा रहा मैं अभी भी आप इनाम :)

दे देंगे बिना
2
एक प्रारंभकर्ता में

,

puts Rails::Server.new.options[:Port] 

अपने बंदरगाह रिपोर्ट कर सकते हैं।

+0

@Alper धन्यवाद - माफ करना, मैं है कि प्रश्न में एप्लिकेशन चल रहा है ** रेल 2.2.2 ** कहा जाना चाहिए था। आपका कोड 'अनियमित स्थिर रेल :: सर्वर' के साथ मेरे लिए त्रुटि कर रहा है - मुझे नहीं लगता कि आप रेल 2 समकक्ष जानते हैं? –

+0

ENV ['RAILS_ENV'] चर के अंदर कुछ नहीं? –

+0

यह सिर्फ मोड है, उदाहरण के लिए "विकास" –

1

क्या यह 2.2.2 में काम करता है?

class SomeController < ApplicationController 

    def index 
     @port = request.port 
    end 
end 
+1

वह इसे प्रारंभकर्ता के अंदर लाने की कोशिश कर रहा है। तो यह काम नहीं करेगा। –

+0

आह। क्षमा करें, मुझे याद आया। मैं रेल के लिए नया हूं और उस पर चमकदार हूं। –

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