2009-11-28 10 views
7

मुझे नहीं पता कि यह एक रूबी प्रश्न या सिनात्रा सवाल है, क्योंकि मैं दोनों के लिए नया हूं। निम्नलिखित कोड काम नहीं करता है, और मैं समझता हूं क्यों, क्योंकि पहला my_variable अपने ब्लॉक के लिए स्थानीय है। मैं इसे सही करने के लिए सिंटैक्स नहीं जानता।मैं सिनात्रा (रूबी वेब ढांचे) में कोड कहां डालूं जिसे मैं सिर्फ एक बार निष्पादित करना चाहता हूं?

require 'rubygems' 
require 'sinatra' 

configure do 
    my_variable = "world" 
end 

get '/' do 
    "Hello " + my_variable 
end 

EDIT1 - निम्न कार्य करता है, लेकिन फिर मुझे लगता है कि मैं कॉन्फ़िगरेशन ब्लॉक के उचित उद्देश्य के बारे में उलझन में हूं।

require 'rubygems' 
require 'sinatra' 

my_variable = "world" 

get '/' do 
    "Hello " + my_variable 
end 

उत्तर

7
require 'rubygems' 
require 'sinatra' 

set :my_variable, "world" 

get '/' do 
    "Hello " + settings.my_variable 
end 
+1

मुझे लगता है, मैं एक ब्लॉक के बाहर कुछ करने के विरुद्ध एक सिनात्रा कॉन्फ़िगरेशन ब्लॉक के उद्देश्य के बारे में उलझन में हूं। –

+2

विकल्प एप्लिकेशन स्तर सेटिंग्स हैं जबकि कॉन्फ़िगरेशन आपको वर्तमान वातावरण के अनुसार व्यवहार को अनुकूलित करने की अनुमति देता है। –

+0

कॉन्फ़िगरेशन केवल कोड का एक ब्लॉक है जिसे एक बार निष्पादित किया जाएगा। –

0

एक अन्य तरीका है:

require 'rubygems' 
require 'sinatra' 

@my_variable="world" 

get '/' do 
    "Hello " + @my_variable 
end 
+0

मैं एक आवृत्ति चर का उपयोग करने की अनुशंसा नहीं करता क्योंकि यह स्पष्ट नहीं है कि आवृत्ति चर किस वस्तु को प्रभावित करता है। –

0

मैं एक वर्ग चर सेट होगा - जैसे। @@my_variable - कॉन्फ़िगर ब्लॉक के अंदर। कॉन्फ़िगरेशन ब्लॉक उस कोड के लिए मौजूद है जिसे आप स्टार्ट अप पर चलाने के लिए चाहते हैं, इसलिए अपने चर को सेट करना उनके समझ में आता है। आपका सिनात्रा एप्लिकेशन Sinatra::Base का उप-वर्ग है, इसलिए इस स्थिति में कक्षा चर का उपयोग करना उचित लगता है।

3

ब्लॉक कॉन्फ़िगर करें केवल ऐप कॉन्फ़िगरेशन से संबंधित है। यदि ऐसा है, तो आपको इसे उचित रूप से समाहित करना चाहिए:

require 'sinatra' 

configure do 
    set :my_option, "world" 
end 

get '/' do 
    "Hello #{options.my_option}" 
end 
+4

ठीक है, लेकिन यह अब 'विकल्प' नहीं है, यह 'सेटिंग्स' है। – pje

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

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