使用多个区域管理Ruby On Rails

时间:2013-11-22 04:37:56

标签: ruby-on-rails ruby-on-rails-3 git

我一直在考虑将我的SAAS应用程序带到国际市场,并且只是想知道其他人如何在代码库方面处理这种情况。

显然,有些问题需要更新验证(验证不同国家/地区的移动电话号码)以及结算更改。

我预计平台的运行方式会有很多差异,但理想情况下不愿意在不同的存储库中管理多个版本的Rails源代码。 (因此,如果我修复了美国版本中的错误,我还必须切换到法国版本并在那里应用它。)

如果我把它全部保存在一个存储库中,就会有令人烦恼的事情,比如;

  
      
  1. 管理多个robots.txt和schedule.rb文件(针对cron)
  2.   
  3. 不同的网站促销和广告(虽然我猜这可能是基于数据库的)
  4.   
  5. 关闭每个区域的功能和超链接。 (美国有此功能,但法国有此功能等)
  6.   
  7. 源代码可能会因定制的部分内容而变得混乱(_some_partial.en-US.html.erb和_some_parth.en-FR.html.erb)等
  8.   
  9. 创建代码和功能需要开发人员注意多个区域的后果。 (如果我为美国平台构建FEATURE-A,我将不得不构建代码以确保在法国平台上查看时关闭它。)
  10.   

到目前为止的解决方案;

  
      
  1. 所有地区的代码库相同;但是使用丑陋的if语句(如果是US?elsif France?end)
  2.   
  3. 为每个区域分隔存储库
  4.   
  5. 为每个区域分隔github分支,然后我解决master并将其合并到production_france等(也有与france相关的提交)
  6.   
  7. Rails引擎??
  8.   

Taskrabbit(他们刚刚在英国推出)或yelp这样的网站如何跨地区进行此操作?

1 个答案:

答案 0 :(得分:0)

我不确定对此有正确或错误的答案,但这是一个意见。

  1. 让您的广告网站成为完全独立的代码库。在我所参与的项目中,实施营销变更可能是一个真正的优势,而无需部署整个产品生态系统的新版本。将它们分开,因为它很容易将问题分开。您并不真的希望针对营销网站上的简单内容更改运行整个测试/部署过程。

  2. 我建议您查看Rails现有的i18n插件/解决方案,并确定这些方法是否与您的产品相关。解决这个问题的大多数方法似乎都是使用自定义字符串/设置等为每个区域创建YML文件,然后让i18n类从YML文件部分中提取相应的内容。

  3. 我会假设每个区域可以根据用户决定吗?我之前在用户模型中设置用户区域时已经这样做了。这可以包括时区,语言等。然后我可以单独更改每个用户的体验。您可以通过用户模型确定所有i18n选项的范围,因此当您需要为每个用户获取某些内容时,它会通过用户区域进行过滤,然后扩展到i18n / YML文件设置。

  4. 不同地区真的需要不同的功能吗?这是使事情复杂化的一个因素。如果您可以重新构建代码/产品以使所有功能相同,则可能会使事情变得更简单。