जबकि आप अन्य उत्तरों की तरह इनिशियलाइज़र का उपयोग कर सकते हैं, पारंपरिक रेल 4.1+ तरीका है config/secrets.yml। रेल टीम के लिए इसे शुरू करने का कारण इस उत्तर के दायरे से परे है, लेकिन टीएल; डीआर यह है कि secret_token.rbकॉन्फ़िगरेशन और कोड को स्वीकार करता है और साथ ही सुरक्षा जोखिम होने के कारण टोकन को स्रोत नियंत्रण इतिहास और एकमात्र प्रणाली की जांच करने की आवश्यकता होती है पता है कि उत्पादन गुप्त टोकन उत्पादन संरचना है।
आपको इस फ़ाइल को उस .gitignoreतरह से जोड़ना चाहिए जैसे आप config/database.ymlस्रोत नियंत्रण में नहीं जोड़ेंगे ।
की स्थापना के लिए Heroku के अपने कोड का संदर्भ config/database.ymlसे DATABASE_URLउनके में रूबी के लिए Buildpack , मैं समाप्त हो गया उनके रेपो forking और बनाने के लिए इसे संशोधित config/secrets.ymlसे SECRETS_KEY_BASEवातावरण चर।
चूँकि यह सुविधा रेल 4.1 में पेश की गई थी, मुझे लगा कि ./lib/language_pack/rails41.rbइस कार्यक्षमता को संपादित करना और जोड़ना उचित था ।
निम्नलिखित मेरी कंपनी में निर्मित संशोधित बिल्डपैक से स्निपेट है:
class LanguagePack::Rails41 < LanguagePack::Rails4
# ...
def compile
instrument "rails41.compile" do
super
allow_git do
create_secrets_yml
end
end
end
# ...
# writes ERB based secrets.yml for Rails 4.1+
def create_secrets_yml
instrument 'ruby.create_secrets_yml' do
log("create_secrets_yml") do
return unless File.directory?("config")
topic("Writing config/secrets.yml to read from SECRET_KEY_BASE")
File.open("config/secrets.yml", "w") do |file|
file.puts <<-SECRETS_YML
<%
raise "No RACK_ENV or RAILS_ENV found" unless ENV["RAILS_ENV"] || ENV["RACK_ENV"]
%>
<%= ENV["RAILS_ENV"] || ENV["RACK_ENV"] %>:
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
SECRETS_YML
end
end
end
end
# ...
end
आप निश्चित रूप से इस कोड को अपने पर्यावरण चर से पढ़े जाने के लिए अन्य रहस्य (जैसे तृतीय पक्ष एपीआई कुंजी, आदि) जोड़ने के लिए बढ़ा सकते हैं:
...
<%= ENV["RAILS_ENV"] || ENV["RACK_ENV"] %>:
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
third_party_api_key: <%= ENV["THIRD_PARTY_API"] %>
इस तरह, आप इस रहस्य को बहुत मानक तरीके से एक्सेस कर सकते हैं:
Rails.application.secrets.third_party_api_key
अपने ऐप को फिर से तैयार करने से पहले, अपने पर्यावरण चर को पहले सेट करना सुनिश्चित करें:

फिर अपने हरोकू ऐप में अपना संशोधित बिल्डपैक जोड़ें (या आप मेरा लिंक से स्वागत है) से अधिक है (देखें हेरोकू के दस्तावेज ) और अपने ऐप को फिर से तैयार करें।
बिल्डपोक config/secrets.ymlहर बार जब आप हरोकू के लिए dyno निर्माण प्रक्रिया के हिस्से के रूप में अपने पर्यावरण चर से स्वचालित रूप से आपका निर्माण करेगा git push।
संपादित करें: हरोकू के स्वयं के प्रलेखनconfig/secrets.yml पर्यावरण चर से पढ़ने के लिए बनाने का सुझाव देते हैं लेकिन इसका मतलब है कि आपको इस फ़ाइल को स्रोत नियंत्रण में जांचना चाहिए। मेरे मामले में, यह अच्छी तरह से काम नहीं करता है क्योंकि मेरे पास विकास और परीक्षण वातावरण के लिए कठिन रहस्य हैं जो मैं जांच नहीं कर रहा हूं।