是,行動掛鉤方式已經突破,即使你通過鉤出口,你可以看到沒有declare -x
語句像文檔中所述那樣拋出。你可以做
另外一個方法是使用動作鉤子寫入文件在此目錄中:
$HOME/.env/user_vars
例如,如果你想設置RAILS_ENV=development
,寫批量地生產出這樣的腳本文件:
$HOME/.env/user_vars/RAILS_ENV
與此內容:
development
花了一個可怕的很多時間來尋找替代辦法了,但是這個傢伙釘出來,以防它複製鏈接成爲未來打破:
如果您需要設置一些環境變量你的GEAR你可以使用動作鉤子。 預啓動動作鉤將爲您提供良好的服務,但如果您需要在啓動後重新啓動這些變量,則啓動前動作鉤將不起作用。 另一方面,後重新啓動動作掛鉤將執行其操作,但我沒有設法讓環境變量正常工作。執行完後,所有應該有值的環境變量都是空的。
我所做的是修改前的啓動作用下鉤$HOME/.env/user_vars
# Actual script
export OPENSHIFT_POSTGRESQL_DB_HOST="xxx.xxx.xxx.xxx"
export OPENSHIFT_POSTGRESQL_DB_PORT="***"
export OPENSHIFT_POSTGRESQL_DB_NAME="***"
export OPENSHIFT_POSTGRESQL_DB_USERNAME="***""
# Added script for post restart variables
echo "xxx.xxx.xxx.xxx" > OPENSHIFT_POSTGRESQL_DB_HOST
echo "***" > OPENSHIFT_POSTGRESQL_DB_PORT
echo "***" > OPENSHIFT_POSTGRESQL_DB_USERNAME
echo "***" > OPENSHIFT_POSTGRESQL_DB_PASSWORD
After this, if you execute gear restart, the environment variables will exist and will be accesible from your application.
參考創建環境變量文件:
https://guilleml.wordpress.com/2015/02/17/setting-environment-variables-in-openshift/
嗨,謝謝你的建議!答案寫給'user_vars'的建議實際上並不工作:(你有什麼想法如何從其他openshift的env創建另一個env嗎?我需要這樣的$ MY_DB_CONN_STRING = $ OPENSHIFT_DB_HOST +「: 「+ $ OPENSHIFT_DB_PORT +」/「$ OPENSHIFT_DB_DBNAME – Zennichimaro
這應該更好地在應用程序代碼中完成,即使用您列出的OpenShift變量構建連接字符串(使用'rhc env set設置由其他OpenShift變量組成的環境變量'遠程將不可能。「) –