2012-06-19 14 views
7

मैं अपने वेबपैप के लिए सिनात्रा का उपयोग कर रहा हूं। मेरे पास कुछ क्लीनअप कोड है जिसे मैं निष्पादित करना चाहता हूं जब मेरा ऐप बंद हो रहा हो। क्या सिनात्रा में इसके लिए कोई हुक है या क्या मुझे एक अलग तंत्र का उपयोग करना है?मैं सिनात्रा में कोड कहां डालूं कि ऐप बंद होने पर मैं निष्पादित करना चाहता हूं?

उत्तर

8

Kernel#at_exit पर देखो, मुझे नहीं लगता कि यह सिनात्रा ऐप में क्यों काम नहीं करना चाहिए यदि आप अपनी मुख्य ऐप फ़ाइल में कहीं ऐसा ब्लॉक परिभाषित करते हैं।

अपडेट: मैट की टिप्पणी के अनुसार, आपको सिनात्रा की आवश्यकता से पहले अपने at_exit हैंडलर को परिभाषित करना होगा।

+0

मैं इस धारणा के तहत था कि सभी धागे निकलने के बाद ही बुलाया जाता है। मैं खुद परीक्षण करूँगा। मुझे विशिष्ट चीजों में से एक को कुछ थ्रेड बंद करना है, इसलिए यदि ऐसा है, तो यह मेरे लिए काम नहीं करेगा। – pquimo

+0

यह सिनात्रा शुरू करने के तरीके के आधार पर काम नहीं कर सकता है, क्योंकि [सिनात्रा 'at_exit' स्वयं का उपयोग करता है] (https://github.com/sinatra/sinatra/blob/v1.3.2/lib/sinatra/main.rb#L25) सर्वर में निर्मित करने के लिए, इसलिए आपके द्वारा जोड़े गए किसी भी 'at_exit' हैंडलर वास्तव में _before_ सिनात्रा शुरू होगा। – matt

+0

दिलचस्प। मुझे आश्चर्य है कि मुझे अपना जवाब हटाना चाहिए या समय के लिए इसे चारों ओर रखना चाहिए। हो सकता है कि मैं @pquimo रिपोर्ट वापस आने तक प्रतीक्षा करूंगा। –

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