Rails rails database.yml 与 config.yml 的配置方法

tonytonyjan · 2014年05月06日 · 最后由 tonytonyjan 回复于 2014年05月07日 · 3921 次阅读

跟这问题很像: http://ruby-china.org/topics/18849

就我所知目前主流的方法就两个:

  1. 将设定档加到 .gitignore
  2. 利用环境变数(environment variable)

老实说一直以来我都是用第一个方法,也用的很习惯,但实在想不出第二个方法应该怎么用比较符合正确的工作流?

问题一 怎么管理本地端众多的 rails app?因为每个 app 所需要的环境变数都不尽相同,这样设来设去的会很麻烦。

问题二 有个东西叫 dotenv,把变数都放在 .env 档里面,可是这种方法还不是要把 .env 加进 .gitignore 吗?跟第一个方法相较起来岂不是脱裤子放屁?

问题三 部署端有时候会由一个帐号执行多个 app(例如 server 上所有的 app 都是由一个叫 deploy 的 user 执行的),这些 app 彼此间的环境变数又该怎么控管?

希望可以向各位前辈们取经,十分感谢!

我用 Figaro gem 管理 ENV。Rails 加载,读取方法和系统变量一样,但不进入系统环境变量。所以每个 app 是独立的。

你说的 dotenv 我不熟,看起来原理类似。

以上两种,不管哪个,肯定是要 ignore 的。部署时由 Capistrano 单独开任务上传到服务器,不通过常规代码的 push, 这个问题就解决了。这并非相互矛盾,因为服务器文件和你的本地文件可以假定是保密的,跟代码 repository 是两回事。

你即使 ignore database.yml 也可以用这个方法上传。

直接写入 deploy 的~/.bashrc 好了…

#2 楼 @cassiuschen 这不就是问题三吗 XD

需要 登录 后方可回复, 如果你还没有账号请 注册新账号