जबकि आप अन्य उत्तरों की तरह इनिशियलाइज़र का उपयोग कर सकते हैं, पारंपरिक रेल 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
पर्यावरण चर से पढ़ने के लिए बनाने का सुझाव देते हैं लेकिन इसका मतलब है कि आपको इस फ़ाइल को स्रोत नियंत्रण में जांचना चाहिए। मेरे मामले में, यह अच्छी तरह से काम नहीं करता है क्योंकि मेरे पास विकास और परीक्षण वातावरण के लिए कठिन रहस्य हैं जो मैं जांच नहीं कर रहा हूं।