2013-04-20 6 views
9

मेरे पास रेल आवेदन है। अगर मैं इसे rails s (पोर्ट 3000) से शुरू करता हूं, तो यह आईपी एड्रेस (मेरे मामले में 1 9 2.168.0.3) के माध्यम से मेरी मशीन और मेरे स्थानीय नेटवर्क पर हर डिवाइस पर पूरी तरह से काम करता है।
मेरे पास sinatra आवेदन है। अगर मैं इसे ruby app.rb (पोर्ट 4567) से शुरू करता हूं, तो यह मेरी मशीन पर पूरी तरह से काम करता है, लेकिन यह मेरे स्थानीय नेटवर्क पर अन्य उपकरणों से उपलब्ध नहीं है।स्थानीय नेटवर्क के माध्यम से sinatra ऐप तक नहीं पहुंच सकता

enter image description here

दोनों आवेदन एक अनुप्रयोग सर्वर के रूप में पतला का उपयोग करें।

क्या यह सिनात्रा कैसे काम करता है उससे संबंधित कुछ है?

+0

संभव डुप्लिकेट (http://stackoverflow.com/ निर्दिष्ट प्रश्न/15685528 ​​/ स्थानीय-सीनात्रा-सर्वर-दूसरे-कंप्यूटर-पर-समान नेटवर्क से नहीं पहुंच सकते हैं) – matt

उत्तर

30

ruby app.rb -o 0.0.0.0 या ruby app.rb -e production आज़माएं। या तो काम करना चाहिए।

8

मुझे इवान के उत्तर में कुछ और जानकारी जोड़ने दें। सिनात्रा के README कमांड लाइन पर कहते हैं:

Sinatra applications can be run directly: 

ruby myapp.rb [-h] [-x] [-e ENVIRONMENT] [-p PORT] [-o HOST] [-s 
HANDLER] 

Options are: 

-h # help 
-p # set the port (default is 4567) 
-o # set the host (default is 0.0.0.0) 
-e # set the environment (default is development) 
-s # specify rack server/handler (default is thin) 
-x # turn on the mutex lock (default is off) 

दस्तावेज़ डिफ़ॉल्ट होस्ट 0.0.0.0 है के अनुसार, लेकिन मैं अभी भी निर्दिष्ट करने के लिए एक "-ओ 0.0.0.0" जैसे इवान ने कहा। अन्यथा सर्वर मशीन के बाहर से सर्वर तक नहीं पहुंचा जा सकता है। कितना अजीब है!

+0

दस्तावेज़ डिफ़ॉल्ट होस्ट के बारे में गलत है, कम से कम विकास मोड में। –

6

बस इवान के जवाब और रॉबर्ट की स्पष्टीकरण में जोड़ना चाहते हैं।

डिफ़ॉल्ट रूप से, आप सिनात्रा विकास मोड में नहीं, उत्पादन मोड में चलता है। विकास मोड में, डिफ़ॉल्ट होस्ट जो सिनात्रा बांधता है वह 'लोकलहोस्ट' है, जिसका अर्थ है कि केवल स्थानीय मशीन इसके साथ बातचीत कर सकती है।

एक बार जब आप '-e उत्पादन' निर्दिष्ट करते हैं तो आपका sinatra वेबपैप उत्पादन मोड में चल रहा है, जहां डिफ़ॉल्ट मेजबान यह 0.0.0.0 से बंधे हैं, जिसका अर्थ है कि यह अन्य सभी के साथ बातचीत कर सकता है।

वैकल्पिक रूप से, अगर आप विकास में रहना चाहते हैं, '-ओ 0.0.0.0'

[एक ही नेटवर्क पर किसी अन्य कंप्यूटर से स्थानीय सिनात्रा सर्वर तक नहीं पहुंच पा] की
संबंधित मुद्दे