【发布时间】:2013-11-22 04:37:55
【问题描述】:
我一直在考虑将我的 SAAS 应用推向国际市场,只是想知道其他人如何处理与代码库相关的这种情况。
显然,有些事情需要更新(验证不同国家/地区的手机号码)以及计费变更。
我预见到平台的运行方式会有相当多的差异,但理想情况下会讨厌必须在不同的存储库中管理多个版本的 Rails 源代码。 (所以如果我修复了美国版本的错误,我还必须切换到法国版本并在那里应用)。
如果我将它们全部保存在一个存储库中,就会出现烦人的事情,例如:
- 管理多个 robots.txt 和 schedule.rb 文件(用于 cron)
- 不同的网站促销和广告(虽然我猜这可能是基于数据库的)
- 关闭每个区域的功能和超链接。 (美国有这个功能,但法国有那个功能等)
- 源代码可能会因定制的部分(_some_partial.en-US.html.erb 和 _some_parth.en-FR.html.erb)等而变得混乱
- 创建代码和功能需要开发人员注意跨多个区域的后果。 (如果我为美国平台构建 FEATURE-A,我必须构建代码以确保在法国平台等上查看时将其关闭)。
目前的解决方案;
- 所有地区的代码库相同;但使用丑陋的 if 语句进行逻辑(If US?elsif France?end)
- 每个区域的独立存储库
- 为每个区域单独的 github 分支,我处理 master 并将其合并到 production_france 等(其中也有与法国相关的提交)
- Rails 引擎??
像Taskrabbit(他们刚刚在英国推出)或yelp 这样的网站如何跨地区做到这一点?
【问题讨论】:
-
您可以使用特定于该语言环境的配置文件,而不是丑陋的 if 语句,这些文件会根据您的环境设置加载。
-
+1 用于配置文件。例如,将用于验证电话号码的正则表达式存储在配置文件中每个区域的配置文件中。在您的模型中,只需根据当前区域进行验证。
-
我认为不同代码库的优势超过了单一应用程序的优势。您可以在每个地区测试功能和升级,而不是将它们推广给所有人,您可以更轻松地将您的应用程序定制到不同的地区/经济体。您已经处于需要为每个区域测试您的应用程序的位置。我宁愿维护更简单的应用程序,而不是 1 个大型复杂的应用程序。
标签: ruby-on-rails ruby-on-rails-3 git