我正在构建一个允许用户通过管理前端界面修改 database.yml 内容的系统。
在重新启动应用程序之前,对 database.yml 的更改显然没有任何影响。与其强迫用户(可能没有对物理框的 SSH 访问权限)手动重新启动应用程序,我想要一种强制 ActiveRecord 在启动后重新加载配置的方法。
有没有办法强制 ActiveRecord 在初始启动后重新初始化,而不是要求他们重新启动服务器?
基本原理
这有两个用例 - a) 初始设置向导 b) 从 sqlite 评估数据库移动到生产支持的数据库。
初始设置向导
在安装我们的应用程序并首次启动后,用户将看到一个设置向导,其中允许用户在使用 sqlite 的内置评估数据库或指定生产支持的数据库之间进行选择。他们需要指定数据库属性。我们不希望用户在服务器上编辑yml
文件,而是希望当前的前端在初始设置期间这样做。
从 sqlite 评估数据库迁移到生产支持数据库
如果用户选择使用内置评估数据库,但 alter 想要迁移到生产数据库,他们需要更新数据库设置以反映此更改。与上述相同的原因,需要一个前端而不是要求用户编辑配置文件,特别是因为我们可以验证应用程序的连接性、权限等,而不是用户在尝试启动应用程序时发现它不起作用他们得到一个 activerecord 异常。