2012-05-04 4 views
15
use Rack::Session::Pool 
... 
session[:msg]="Hello Rack" 

संपादित करें: शब्द सत्र हल नहीं होता है। मैंने अपने config.ru में सत्र पूल मिडलवेयर शामिल किया है, और एक ईआरबी फ़ाइल में एक चर सेट करने का प्रयास किया है (मैं रूबी सेवा का उपयोग कर रहा हूं) और यह शिकायत करता है कि "अपरिभाषित स्थानीय चर या विधि 'सत्र'"मैं रैक ऐप में सत्र वर्र्स कैसे सेट/प्राप्त करूं?

धन्यवाद!

+2

वास्तव में क्या काम नहीं करता है? क्या सत्र सहायक काम नहीं कर रहा है, या बस यह सत्र है [: msg] सेट नहीं है? session.inspect आपको क्या देता है? – oliverbarnes

उत्तर

26

session एक विधि कि कुछ वेब चौखटे का हिस्सा है, उदाहरण के Sinatra और Rails के लिए दोनों session तरीकों है। सादा rack अनुप्रयोगों में session विधि नहीं है, जब तक कि आप स्वयं को एक नहीं जोड़ते।

सत्र हैश कुंजी rack.session तहत रैक env हैश में संग्रहीत किया जाता है, तो आप इस तरह उस तक पहुँच सकते (यह मानते हुए आप अपने अनुप्रयोग env को रैक पर्यावरण नाम दिया है): वैकल्पिक रूप से

env['rack.session'][:msg]="Hello Rack" 

, आप request object में रैक के निर्माण का उपयोग कर सकते हैं, जैसे:

request = Rack::Request.new(env) 
request.session[:msg]="Hello Rack" 
+0

स्पष्ट स्पष्टीकरण! वास्तव में मदद करता है, चीयर्स साथी! – rebnoob

+0

लेकिन फिर आप यह क्यों कर सकते हैं: 'request.env ['rack.session'] [: msg] =" हैलो रैक "'? अगर मैं इसे सही ढंग से समझता हूं, 'रैक :: अनुरोध' 'env' के चारों ओर एक रैपर है, लेकिन यदि ऐसा है, तो request.env [... 'समझ में आता है? मैं इसके चारों ओर अपना सिर नहीं प्राप्त कर सकता: \ –

+0

@ jj_'Rack :: Request' 'env' हैश के चारों ओर एक रैपर है जो आपको विभिन्न सामान्य चीजों को आसानी से करने की अनुमति देता है, और यह' env' हैश तक पहुंच प्रदान करता है n मामले में आपको सीधे उस चीज़ के लिए इसका उपयोग करने की आवश्यकता है जो 'रैक :: अनुरोध' प्रदान नहीं करता है। – matt