[功能请求] 允许 `Scientist::Experiment` 类 *不* 是默认的 Scientist 实验类
我很好奇,为什么要使用默认实验?这里 看起来似乎不可能。从文档中也可以看到:> 当 Scientist::Experiment 被包含在一个类中时,它会自动通过 Scientist::Experiment.set_default 将其设置为默认实现。如果您在一个模块中包含 Scientist::Experiment,则会跳过此 set_default 调用。 我之所以提出这个问题,是因为最近我们的 Rails 应用程序遇到了一个问题: 1. 我们有一个类,通过 include Scientist 使用了默认实验,但并没有发布任何内容,哦哦。 2. 我们为该 include 的 Scientist::Experiment 创建了一个新类,但由于我们的测试不会立即加载我们的类,因此这是一个不稳定的测试,在构建过程中没有被发现。 3. 在生产环境中运行时,我们进行了立即加载并覆盖了默认实验,然后发现了问题。 因此,我有几个问题: 1. 为什么要使用默认实验?在我看来,这有点过激。 2. 我们是否真的能找到一种方法,将默认行为设置为正常行为,并提供一种方法来覆盖它? 3. 或者我们使用它的方式是错误的,并且意图是实际地 include Scientist 并覆盖该类的默认方法?如果是这样,我之所以没有这样做,是因为更好地分离了职责。将一个类的规范与实验规范混合在一起看起来有点混乱,我宁愿将两者分离得很容易。 4. 与点 3 相关,按照当前实现,我们是否无法同时运行多个实验? 我自己也研究了这个问题,但似乎没有一个合理清晰的方法。虽然我认为我们可以添加一个类方法(类似于:) 类 Foo 继承 Scientist::Experiment default_scientist_experiment(false) # 新的 结束 你怎么看?如果是这样 - 我可以尝试一下。
内容来源: github/scientist