2016-06-28 13 views
12

में एक पर्यावरण चर के रूप में होस्ट नाम सेट करें मैं हेरोकू पर गिथब के साथ एकीकृत समीक्षा ऐप्स सुविधा का उपयोग कर रहा हूं। मेरे ऐप्स में से एक में, मैंने HOST_NAME नामक एक पर्यावरण चर सेट किया है। उदाहरण के लिए, यदि साइट http://www.purplebinder.com है, तो HOST_NAMEwww.purplebinder.com पर सेट की जाएगी। इसका उपयोग कुछ स्थानों पर किया जाता है जहां हम कुकीज़ और हमारे लेनदेन संबंधी ईमेल में काम करते हैं।हेरोोकू समीक्षा ऐप

जब मैं एक नया पुल अनुरोध खोलता हूं और एक समीक्षा ऐप स्पिन करता हूं, HOST_NAMEpurplebinder-pr-27.herokuapp.com जैसा कुछ होना चाहिए।

क्या इस मान को स्वचालित रूप से सेट करने का कोई तरीका है? Heroku documentation on review apps का कहना है कि एक env var पैरेंट ऐप से एक मान प्राप्त कर सकता है या app.json में हार्डकोड किया जा सकता है। उन दृष्टिकोणों में से कोई भी यहां काम नहीं करता है, क्योंकि मूल्य हर बार अलग होना चाहिए, और पैरेंट ऐप से भी अलग होना चाहिए।

हेरोकू यह भी कहता है कि एक जनरेटर "जनरेटर के माध्यम से" सेट किया जा सकता है, लेकिन यह क्या है इसके बारे में विस्तार से नहीं जाता है।

यह प्रश्न Setting ROOT_URL for Review Apps का डुप्लिकेट हो सकता है, लेकिन किसी ने इसका उत्तर नहीं दिया। यह How to get Heroku app name from inside the app के समान है, लेकिन ऐप के निर्माण के बाद वहां एक स्क्रिप्ट चलाने में शामिल उत्तर - यहां मैं प्रारंभिक निर्माण के हिस्से के रूप में यह मान सेट करना चाहता हूं।

+4

एक ही बात वर्तमान के साथ संघर्ष: आदेश के बाद कुछ ऐसा दिखाई देगा pr-27' आपके मामले में, पूर्ण यूआरएल नहीं। मुझे यह भी मिला जो दस्तावेज़ों में "जनरेटर" टिप्पणी का स्पष्टीकरण देता है: https://devcenter.heroku.com/articles/app-json-schema – woodardj

उत्तर

8

https://devcenter.heroku.com/articles/github-integration-review-apps#heroku_app_name-and-heroku_parent_app_name से:

पटकथा के साथ मदद करने के लिए, दो विशेष config वार्स समीक्षा एप्लिकेशन के लिए उपलब्ध हैं। यदि आप HEROKU_APP_NAME या HEROKU_PARENT_APP_NAME को app.json फ़ाइल में आवश्यक या वैकल्पिक कॉन्फ़िगरेशन वर्र्स के रूप में निर्दिष्ट करते हैं, तो Heroku उन कॉन्फ़िगर वर्र्स को नए एप्लिकेशन नाम और पैरेंट एप्लिकेशन नाम पर क्रमशः सेट करेगा। वे पोस्टपॉइंट स्क्रिप्ट में उपयोग के लिए उपलब्ध होंगे ताकि आप अधिक उन्नत बूटस्ट्रैपिंग और कॉन्फ़िगरेशन कर सकें।

रिश्तेदार config/<environment>.rb में:

{ 
    "name":"Advanced App", 
    "scripts": { 
     "postdeploy": "rake db:setup && bin/bootstrap" 
    }, 
    "env": { 
     "HEROKU_APP_NAME": { 
      "required": true 
     }, 
     "HEROKU_PARENT_APP_NAME": { 
      "required": true 
     } 
    } 
} 
+1

FYI, 'HEROKU_APP_NAME' सिर्फ नाम है। यानी 'my-app'' my-app.herokuapp.com 'नहीं है, इसलिए आपको उपयोग करने योग्य URL प्राप्त करने के लिए शेष' .herokuapp.com' मैन्युअल रूप से जोड़ना होगा। – aNoble

+1

इस उदाहरण में 'bin/bootstrap' की सामग्री क्या है? मैं ऐप के भीतर से Heroku ENV चर सेट सेट नहीं कर सकता। – toobulkeh

1

यहाँ एक दृष्टिकोण रेल प्रतिष्ठानों के लिए app.json अनदेखी है:

यहाँ एक उदाहरण app.json फ़ाइल HEROKU_APP_NAME और HEROKU_PARENT_APP_NAME उपयोग करता है। मैं व्यक्तिगत रूप से production.rb का उपयोग करता हूं और बस इसे संदर्भित करता हूं।

if ENV.fetch("HEROKU_APP_NAME", "").include?("staging-pr-") 
    ENV["APPLICATION_HOST"] = ENV["HEROKU_APP_NAME"] + ".herokuapp.com" 
    ENV["ASSET_HOST"] = "https://" + ENV["APPLICATION_HOST"] 
    config.action_mailer.default_url_options = { host: ENV.fetch("APPLICATION_HOST") } 
end 
... 

यह थोड़ा भ्रामक है क्योंकि उसकेोकू पर्यावरण चर के पास अभी भी पुराने चर होंगे, लेकिन यह काम करता है।

+0

क्या आपको अपनी रूबी स्क्रिप्ट में डिक्रैड करने के लिए app.json में HEROKU_APP_NAME और HEROKU_PARENT_APP_NAME को भी जोड़ना नहीं है? –

0

तुम भी आप आवेदन नकल staging.rb या production.rbconfig/environments से review माहौल बना सकते हैं। यह उपयोगी होगा।

HEROKU_APP_NAME और HEROKU_PARENT_APP_NAME को app.json में जोड़ने के बाद, आप आसानी से सेट कर सकते हैं;

config.action_mailer.default_url_options = { host: "#{ENV['HEROKU_APP_NAME']}.herokuapp.com" } 
config.action_mailer.asset_host = "http://#{ENV['HEROKU_APP_NAME']}.herokuapp.com" 
config.action_controller.asset_host = "#{ENV['HEROKU_APP_NAME']}.herokuapp.com" 
config.action_cable.url = "wss://#{ENV['HEROKU_APP_NAME']}.herokuapp.com/cable" 
3

आप अपने माता पिता एप्लिकेशन को heroku-buildpack-cli जोड़ते हैं, तो यह आप अपने post-deploy script से वातावरण चर सेट करने के लिए सक्षम बनाता है। - और मैं का तर्क था कि जो नीचे चुनी जवाब वास्तव में इस सवाल का जवाब नहीं है के बाद से `HEROKU_APP_NAME` होगा` purplebinder-

heroku config:set HOST_NAME=${HEROKU_APP_NAME}.herokuapp.com --app ${HEROKU_APP_NAME} 
संबंधित मुद्दे