2016-05-18 12 views

回答

0

你應該能夠行添加到您的config/spring.rb

Spring.watch "config/secrets.yml" 

這將允許在變化發生在你的secrets.yml文件春天來檢測。

但是,如果您確實在詢問如何讓您的應用程序知道您已將環境變量更改爲文件,那麼這是不可能的。可以在文件中檢測配置值,但在shell環境中檢測到環境變量。您必須將這些文件加載​​到您的shell中才能起作用,這需要停止服務器,將新更改發佈到環境中,然後再次啓動服務器。

瞭解文件(.yml,.xml,.ini等)中的配置值與shell腳本中的環境變量之間的區別很重要,因爲它如何應用並使其可用是完全不同的。

2

在linux中,每個進程都從其父進程繼承envvars,並且值是按值傳遞的,而不是通過引用傳遞的。此外,他們不像閉包。所以,子進程(你的rails/ruby​​應用程序進程)不會獲得它父進程的任何新的環境變量(你啓動你的rails/ruby​​應用程序的shell進程)。

這就是爲什麼它是不可能的。但是,您可以使用像dotenvfigaro這樣的寶石來查看一些包含環境變量的文件,並在更改時重新加載它們。

相關問題