2014-05-06 4 views
8

मैंने स्क्रैच से रेल ऐप (रेल 4.1.0) बनाया है और मुझे एक समस्या हो रही है जिसे मैं हल करने में सक्षम नहीं हूं। मैंने अपाचे पैसेंजर मॉड्यूल को स्थापित और कॉन्फ़िगर किया है, यह ठीक काम करता है।सेमीफिक्स्ड: 'उत्पादन' पर्यावरण के लिए `secret_key_base` गुम है

Missing secret_key_base for 'production' environment, set this value in config/secrets.yml 

secret.yml फ़ाइल निम्न विन्यास शामिल हैं::

secret_key_base: <%= ENV["SECRET_KEY_BASE"] %> 

यहां तक ​​कि जब यह अनुशंसित नहीं है कि मैं इस किया था: किसी भी समय मैं वर्चुअल होस्ट मैं एक त्रुटि 500 ​​मिल तक पहुँचने का प्रयास

# tailf /etc/httpd/logs/error_log 
[Tue May 06 12:56:18 2014] [error] [client 192.168.3.1] Premature end of script headers: 
App 4405 stderr: [ 2014-05-06 12:56:18.5763 4421/0x9d48bdc(Worker 1) utils.rb:68 ]: *** Exception RuntimeError in Rack application object (Missing `secret_key_base` for 'production' environment, set this value in `config/secrets.yml`) (process 4421, thread 0x9d48bdc(Worker 1)): 
App 4405 stderr:  from /usr/local/rvm/gems/ruby-2.1.1/gems/railties-4.1.0/lib/rails/application.rb:440:in `validate_secret_key_config!' 
App 4405 stderr:  from /usr/local/rvm/gems/ruby-2.1.1/gems/railties-4.1.0/lib/rails/application.rb:195:in `env_config' 
App 4405 stderr:  from /usr/local/rvm/gems/ruby-2.1.1/gems/railties-4.1.0/lib/rails/engine.rb:510:in `call' 
App 4405 stderr:  from /usr/local/rvm/gems/ruby-2.1.1/gems/railties-4.1.0/lib/rails/application.rb:144:in `call' 
App 4405 stderr:  from /usr/local/rvm/gems/ruby-2.1.1/gems/passenger-4.0.41/lib/phusion_passenger/rack/thread_handler_extension.rb:74:in `process_request' 
App 4405 stderr:  from /usr/local/rvm/gems/ruby-2.1.1/gems/passenger-4.0.41/lib/phusion_passenger/request_handler/thread_handler.rb:141:in `accept_and_process_next_request' 
App 4405 stderr:  from /usr/local/rvm/gems/ruby-2.1.1/gems/passenger-4.0.41/lib/phusion_passenger/request_handler/thread_handler.rb:109:in `main_loop' 
App 4405 stderr:  from /usr/local/rvm/gems/ruby-2.1.1/gems/passenger-4.0.41/lib/phusion_passenger/request_handler.rb:448:in `block (3 levels) in start_threads' 
:
production: 
    secret_key_base: XXXXXXXXXXXXXXXXXXXXXXXXXXXX (random key) 

लेकिन अपाचे लॉग यह दिखाने

मैं इस त्रुटि को कैसे ठीक कर सकता हूं? मैं विकास पर्यावरण का उपयोग कैसे करूं? मेरा मतलब है कि मैं कोड कैसे लिख सकता हूं, अपने ब्राउज़र में परीक्षण कर सकता हूं और फिर हेरोोकू पर तैनात कर सकता हूं या सिर्फ उत्पादन वातावरण में परीक्षण कर सकता हूं?

अद्यतन

मैं VirtualHost पर RailsEnv development की स्थापना करके ऊपर त्रुटि को ठीक करने का प्रबंधन, लेकिन अब मैं इस अन्य त्रुटि मिलती है:

SQLite3::CantOpenException unable to open database file Rails.root: /var/www/html/moviedb

मैं this GEM का उपयोग के लिए TheMovieDB करने के लिए क्वेरी बनाने के लिए कोशिश कर रहा हूँ वेबसाइट और परिणाम प्राप्त करें। इस नई त्रुटि पर कोई सलाह?

+0

आपके YAML से पोस्ट किया गया अंश सही ढंग से इंडेंट नहीं किया गया है। क्या यह पेस्ट में एक त्रुटि है? वाईएएमएल इंडेंटेशन के प्रति बहुत संवेदनशील है - 'secret_key_base:' को 'उत्पादन:' से दो रिक्त स्थान से बाहर किया जाना चाहिए। –

+1

बस इतना है कि आप ENV ["SECRET_KEY_BASE"] का उपयोग करके जानते हैं, सिस्टम पर्यावरण चर के लिए SECRET_KEY_BASE नामक है। यदि आप मेजबान पर ssh कर सकते हैं तो रेल निर्देशिका में 'SECRET_KEY_BASE = \' रेक गुप्त \ '' इसे सेट करना चाहिए। इसे जांचने के लिए आपने काम किया है '$ SARERET_KEY_BASE' प्रतिबिंबित करें नोट: यदि आप सीधे कॉन्फ़िगरेशन फ़ाइल में सेट करते हैं तो यह शायद समस्या नहीं है। –

उत्तर

4

मैं क्या किया: मेरी उत्पादन सर्वर पर, मैं पतला (मैं इसे उपयोग कर रहा हूँ) के लिए एक कॉन्फ़िग फ़ाइल (confthin.yml) बना सकते हैं और निम्न जानकारी जोड़ें:

पर्यावरण: उत्पादन उपयोगकर्ता: www- डेटा समूह: www-डेटा SECRET_KEY_BASE: mysecretkeyproduction

मैं तो

पतली शुरुआत के साथ एप्लिकेशन लॉन्च -सी /whereeveristhefieonprod/configthin.yml

एक आकर्षण की तरह काम करते हैं और फिर संस्करण नियंत्रण

उम्मीद है कि यह मदद कर सकता है, लेकिन मुझे यकीन है कि यूनिकॉर्न और अन्य लोगों के साथ भी यही काम किया जा सकता है।

+0

मुझे त्रुटि 'रत्न/पतली -77.0/lib/पतली/runner.rb: 147: \ 'पार्स में!': अमान्य विकल्प: --SECRET-KEY-BASE = (OptionParser :: InvalidOption)' – Daniel

19

रेल एप्लिकेशन बैश के माध्यम से गुप्त कुंजी

आप उपयोगकर्ता रेल एप्लिकेशन चल रहा है, और आप thin का उपयोग नहीं कर रहे हैं की bash कंसोल की ऐक्सेस है, तो आप वातावरण प्रदान कर सकता है

export SECRET_KEY_BASE=`MY_SECRET_KEY` 
: उन के माध्यम से चर ~/.bashrc

सिर्फ निम्नलिखित जोड़ें 10

नोट: MY_SECRET_KEY कुछ भी हो सकता है लेकिन उदाहरण के लिए "MY_SECRET_KEY" के साथ कुंजी पर rake secret के साथ एक कुंजी उत्पन्न करना सुरक्षित होगा।

एक बार ऐसा करने के बाद आपको hash में SECRET_KEY_BASE वैरिएबल देखना चाहिए जो आपके रेल कंसोल में ENV पर कॉल करते समय वापस आ जाता है।

अंतिम लेकिन कम से कम नहीं, अपने रेल ऐप को रीबूट करें और त्रुटि गायब होनी चाहिए।

रेल ऐप्लिकेशन को हर गुप्त कुंजी rbenv-वार्स

इसके अलावा, अगर आप rbenv उपयोग कर रहे हैं, तो आप रेल प्रति एक एप्लिकेशन गुप्त कुंजी वातावरण चर हासिल करने के लिए rbenv-vars प्लगइन का उपयोग कर सकते हैं।

इस पर एक अच्छा पढ़ा होगा here!

देवता का उपयोग करना (godrb.com): धन्यवाद HLCS

आप god terminate करने की जरूरत है और उसके बाद फिर शुरू करते हैं।

+0

उन लोगों के लिए जो [भगवान] (http://godrb.com/) का उपयोग करते हैं, आपको भगवान को समाप्त करने की आवश्यकता है ('भगवान समाप्त') और फिर से शुरू करने की आवश्यकता है। – hlcs

1

मैंने इस तरह की एक समान स्थिति हल की (शायद उबंटू जैसी पर्यावरण में केवल उपयोगी)। देखें: Missing secret key base for production environment। आशा करता हूँ की ये काम करेगा।

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