मेरे वेबपैप को अपने सत्र डेटा को एन्क्रिप्ट करने की आवश्यकता है। मैं जो सेटअप करता हूं वह है:रेल 3.1: केवल वेब ऐप (रेल सर्वर/यूनिकॉर्न/आदि) के लिए प्रारंभकर्ता को कैसे चलाएं
config/initializers/encryptor.rb:
require 'openssl'
require 'myapp/encryptor'
MyApp::Encryptor.config[ :random_key ] = OpenSSL::Random.random_bytes(128)
Session.delete_all
app/models/session.rb:
require 'attr_encrypted'
class Session < ActiveRecord::Base
attr_accessible :session_id, :data
attr_encryptor :data, :key => proc { MyApp::Encryptor.config[ :random_key ] }, :marshal => true
# Rest of model stuff
end
यह सब अच्छा काम करता है, और सत्र डेटा सुरक्षित रखता है। यहां समस्या है: जब मैं अपने कस्टम रेक कार्यों को चलाता हूं तो यह प्रारंभकर्ता लोड करता है और सभी सत्रों को साफ़ करता है। अच्छा नही!
यह सुनिश्चित करने के लिए कि मैं केवल वेबपैप प्रारंभिकरण के लिए चलता हूं, मेरे प्रारंभकर्ता में क्या रख सकता हूं? या, मैं अपने प्रारंभकर्ता में रेक रेक कार्यों के लिए इसे चलाने के लिए क्या रख सकता हूं?
अद्यतन: ठीक है, मैंने इस पल के लिए क्या किया है MYAPP_IN_RAKE = true unless defined? MYAPP_IN_RAKE
मेरी .rake फ़ाइल में जोड़ें। और फिर मेरे प्रारंभकर्ता में मैं करता हूं:
unless defined?(MYAPP_IN_RAKE) && MYAPP_IN_RAKE
# Web only initialization
end
काम करने लगता है। लेकिन मैं अन्य सुझावों के लिए खुला हूं।
यह भविष्य में अन्य तरीकों से आप काटने के लिए उत्तरदायी है। जब भी सर्वर पुनरारंभ होता है, तो आप अपने सभी सत्रों को खोने जा रहे हैं (जो कि इच्छित व्यवहार प्रतीत होता है), लेकिन इसमें सर्वर बहुत अधिक मेमोरी का उपयोग कर ऑटोकॉल्ड हो रहा है, जिसमें अनुरोध बहुत लंबा चल रहा है, आदि –
I डाउनसाइड्स को समझें, लेकिन मुझे लगता है कि यह इसके लायक है। ऐप रीसेटिंग सत्र को पुनरारंभ किया जा रहा है: स्वीकार्य। बहुत अधिक स्मृति या अनुरोध का बहुत लंबा? यूनिकॉर्न के तहत इन परिस्थितियों को केवल कार्यकर्ता प्रक्रिया में ही होना चाहिए। और चूंकि मैंने 'preload_app = true' सेट किया है, प्रारंभिक केवल मास्टर में होता है। तो यूनिकॉर्न पुन: प्रारंभ करने के बिना श्रमिकों को राहत दे सकता है। – sbutler
संभावित रेल डुप्लिकेट [रेल 3 प्रारंभकर्ता जो केवल \ 'रेल सर्वर \" पर चलते हैं और \ 'रेल उत्पन्न नहीं होते हैं, आदि] (http://stackoverflow.com/questions/8660019/rails-3-initializers-that- रन-इन-ऑन-रेल-सर्वर-और-नहीं-रेल-जेनरेट-ई) – davmac