设置导出/导入

没什么大问题,但我在运行 site_settings:import 时遇到了一个小麻烦,结果却让我吃了大亏。

有一个简单但丑陋的变通方法(运行两次 rake 任务),但这通常是在无人值守的情况下执行的,所以我一开始并没有注意到错误。

(部分)导出的设置文件(site_settings:export):

sso_overrides_email: 'true'
email_editable: 'false'

将该文件导入到另一个论坛时:

ERROR: sso_overrides_email: 启用此设置前必须先禁用“可编辑邮箱”。
已将 email_editable 从:t 更改为:false

第二次运行自然会检测到该设置:

已将 sso_overrides_email 从:f 更改为:true

可能的解决方案:

  • 接受现状,直接运行两次导入 rake 任务
  • updated_at 顺序导出设置
  • 让 rake 任务自动运行两次导入
  • 在从文件导入时禁用此类检查
3 个赞

您认为哪种解决方案最合理?

我不确定。

这个方法可行,不需要太多精力,也最合乎逻辑,但如果设置完成后又实施了额外的限制,它仍然会失败。

这个方法可行,但难以让人理解。

这确实很丑陋,但能奏效。

可能会引入各种棘手的问题,并且可能需要耗费大量精力。

2 个赞

我认为这行不通。

对我来说,最简单的做法是运行两次:如果第二次运行出错,就直接中止。

不过,这并不像“运行两次”那么简单:

  1. 第一次运行时,捕获设置任何特定配置项时出现的错误。
  2. 第二次运行时,以批量方式执行,如果任何部分失败则中止。

既然我们已经要处理这种混乱情况,就必须应对存在多个依赖关系的场景。

此外,还需要考虑如何干净地回滚,因此这绝非一项简单的任务。

2 个赞