我一直在考虑将我的SAAS应用程序推向国际市场,只是想知道其他人如何处理代码库的这种情况。在多个区域管理Ruby On Rails
显然有些事情需要更新(验证不同国家的手机号码),还包括账单更改。
我预见到平台的运行方式会有很多不同,但理想情况下会讨厌在不同的存储库中管理多个版本的Rails源代码。 (所以如果我在美国版本中修正了一个错误,我也必须切换到FRANCE版本并在那里应用)。
如果我把它全部保存在一个存储库中,会出现类似的恼人的事情;
- 管理多个的robots.txt和schedule.rb文件(的cron)
- 不同的网站促销和广告(虽然我想这可以根据DB)
- 关闭功能和超链接每个区域。 (美国有这个功能,但法国有功能等)
- 的源代码可能会导致混乱量身定制的谐音(_some_partial.en-US.html.erb和_some_parth.en-FR.html.erb)等
- 创建代码而功能则需要开发人员注意跨多个区域的后果。 (如果我为美国平台构建FEATURE-A,则必须构建代码以确保在法国平台上查看时关闭此功能)。
到目前为止的解决方案;
- 所有地区相同的代码;但用丑陋的if语句的逻辑(如果美国?ELSIF法国'端)
- 单独的存储库对每个区域
- 为每个区域独立的github分行和我工作过主人和归并到production_france等(其中有法国相关的提交也)
- Rails引擎??
怎么想Taskrabbit
网站(他们只是在英国推出)或yelp
跨区域做到这一点?
而不是丑陋的if语句,您可以使用特定于该区域设置的配置文件,该文件将根据您的环境设置加载。 – Nishant
用于配置文件。例如,将用于验证电话号码的正则表达式存储在配置文件中每个区域的配置文件中。在你的模型中,只需根据当前区域进行验证。 – Max
为了扮演魔鬼的拥护者,我认为不同代码库的优势超过了拥有一个单一应用程序的优势。您可以在每个地区的基础上测试功能和升级,而不是将它们推广给所有人,您可以更轻松地将您的应用推介到不同地区/经济体。您已经处于需要测试每个区域的应用程序的位置。我宁愿维护比一个大型复杂应用程序更简单的应用程序。 – fatfrog