2011-12-17 12 views
21

मैंने कोशिश की:रेल सर्वर शुरू होने के बाद मेरा रूबी कोड कैसे चलाएं?

after_initialize do 
    #code 
end 

लेकिन: (प्रलेखन)

आपके आवेदन के कुछ भागों, विशेष रूप से प्रेक्षकों और मार्ग, अभी तक बिंदु है जहां after_initialize ब्लॉक कहा जाता है में स्थापित नहीं कर रहे हैं।

मैं अपने कोड

कोई भी विचार में मार्ग और लकड़हारा की ज़रूरत है?

+1

क्या आप अपनी समस्या को और स्पष्ट रूप से बता सकते हैं। –

+0

मैं on_server_start ईवेंट चाहता हूं। – user1103291

+3

आप ऐसा क्यों चाहते हैं? आप क्या करना चाहते हैं? अपनी समस्या बताएं और शायद "on_server_start" ईवेंट से बेहतर समाधान हो। –

उत्तर

25

देखें http://guides.rubyonrails.org/configuring.html

से खंड 3.1 मेरा मानना ​​है कि आप config में इस कोड डाल/application.rb

config.after_initialize do 
    # .... 
end 

# config.after_initialize takes a block which will be run after Rails has finished initializing the application. 
# That includes the initialization of the framework itself 

इसके अलावा http://guides.rubyonrails.org/initialization.html

+5

यह तब भी चलता है जब रेल कंसोल ('रेल सी') का आह्वान किया जाता है। – Vortico

+9

... और रेक-कार्यों पर, जो रेल पर निर्भर करता है। क्या अधिसूचित होने के लिए एक भरोसेमंद तंत्र है ** केवल ** जब सर्वर शुरू हो गया है ?! – mugwump

2

एक अन्य विकल्प के लिए एक कस्टम प्रारंभकर्ता तैयार करना है। यह सिर्फ एक रूबी फ़ाइल है जो कॉन्फ़िगर/प्रारंभकर्ताओं के अंतर्गत रहती है/और बिल्कुल "on_server_start" ईवेंट निष्पादित की जाती है :)

2

@house9's answer सही है, टिप्पणियों के अनुसार इंगित किया गया है, यह रेक कार्य, कंसोल इत्यादि चलाने पर भी निष्पादित होगा। मैंने यह पहचानने के लिए निम्नलिखित का उपयोग किया कि जब सर्वर को वास्तव में निष्पादित किया जा रहा था:

# application.rb 
if defined?(Rails::Server) 
    config.after_initialize do 
    # Do stuff here 
    end 
end 
संबंधित मुद्दे