chr*_*mer 6 beta roles ruby-on-rails
我们希望开始让我们的用户帮助我们在更广泛的版本之前测试我们的功能更改.我们的rails应用程序已经有角色,但我不知道如何在不移动整个应用程序的情况下实现测试版功能.
有些问题我无法想到解决方案:
一个解决方案(一个糟糕的选择)是在新功能中编码并将其包装在仅在用户具有"beta"角色时才显示/使用它的逻辑中.这个问题就是当你最终把它带到现场时,你可能需要做很多放松/改变.这既浪费时间又可能引入错误.
另一种解决方案是从子域运行应用程序的单独"beta"分支,并将具有beta角色的用户路由到该子域.这样做的问题是,ssl证书,电子邮件链接和其他域依赖性问题的复杂性使得这有点像维护上的痛苦(虽然没有第一个解决方案那么糟糕).
如何最有效地提供此功能,以便最大限度地减少维护的额外工作,然后将测试版转换为完整版?
需要考虑的一种可能性是:对模型进行破坏性(即单向、不可逆)更改可能会产生问题,原因不仅仅是抑制您提供此测试版功能的能力。例如,如果您在迁移过程中遇到问题,可能很难取消更改。
相反,我建议寻找仅添加到模型的方法:添加列,同时保留旧列以实现向后兼容性,版本存储过程(如果您正在使用它们)等。如果您需要更改列数据类型,请改为创建目标数据类型的新列,然后让您的迁移还将现有行数据以新格式从旧列复制到新列。然后,您可以在测试环境中执行数据库迁移,并确认应用程序的新旧版本都可以继续使用数据库更改。
提供应用程序多个版本的一种可能方法是为您的测试站点使用替代的 respond_to 格式。您可以在 ApplicationController 中创建一个方法来检查用户是否处于测试版中。如果为 true,您可以覆盖 request.format 值,并在您的 respond_to 块中包含“format.beta”类型响应。
这种方法的挑战在于控制器逻辑。如果不在控制器方法中嵌入某种切换逻辑,您将无法更改控制器代码路径。这可能不是一个主要问题,具体取决于您有多少控制器更改。
(顺便说一句,看起来我们的名字非常相似!:-))
| 归档时间: |
|
| 查看次数: |
520 次 |
| 最近记录: |