2013-11-22 74 views
3

我一直在考慮將我的SAAS應用程序推向國際市場,只是想知道其他人如何處理代碼庫的這種情況。在多個區域管理Ruby On Rails

顯然有些事情需要更新(驗證不同國家的手機號碼),還包括賬單更改。

我預見到平臺的運行方式會有很多不同,但理想情況下會討厭在不同的存儲庫中管理多個版本的Rails源代碼。 (所以如果我在美國版本中修正了一個錯誤,我也必須切換到FRANCE版本並在那裏應用)。

如果我把它全部保存在一個存儲庫中,會出現類似的惱人的事情;

  1. 管理多個的robots.txt和schedule.rb文件(的cron)
  2. 不同的網站促銷和廣告(雖然我想這可以根據DB)
  3. 關閉功能和超鏈接每個區域。 (美國有這個功能,但法國有功能等)
  4. 的源代碼可能會導致混亂量身定製的諧音(_some_partial.en-US.html.erb和_some_parth.en-FR.html.erb)等
  5. 創建代碼而功能則需要開發人員注意跨多個區域的後果。 (如果我爲美國平臺構建FEATURE-A,則必須構建代碼以確保在法國平臺上查看時關閉此功能)。

到目前爲止的解決方案;

  1. 所有地區相同的代碼;但用醜陋的if語句的邏輯(如果美國?ELSIF法國'端)
  2. 單獨的存儲庫對每個區域
  3. 爲每個區域獨立的github分行和我工作過主人和歸併到production_france等(其中有法國相關的提交也)
  4. Rails引擎??

怎麼想Taskrabbit網站(他們只是在英國推出)或yelp跨區域做到這一點?

+1

而不是醜陋的if語句,您可以使用特定於該區域設置的配置文件,該文件將根據您的環境設置加載。 – Nishant

+0

用於配置文件。例如,將用於驗證電話號碼的正則表達式存儲在配置文件中每個區域的配置文件中。在你的模型中,只需根據當前區域進行驗證。 – Max

+0

爲了扮演魔鬼的擁護者,我認爲不同代碼庫的優勢超過了擁有一個單一應用程序的優勢。您可以在每個地區的基礎上測試功能和升級,而不是將它們推廣給所有人,您可以更輕鬆地將您的應用推介到不同地區/經濟體。您已經處於需要測試每個區域的應用程序的位置。我寧願維護比一個大型複雜應用程序更簡單的應用程序。 – fatfrog

回答

0

我不確定是否有正確或錯誤的答案,但這裏有一個意見。

  1. 使您的廣告網站成爲一個完全獨立的代碼庫。在我所從事的項目中,實施營銷變更而不必部署新版本的整個產品生態系統可能是一個真正的優勢。讓他們分開,因爲很容易區分顧慮。針對營銷網站上的簡單內容更改,您並不是真的想要運行整個測試/部署流程。

  2. 我建議您查看現有的i18n插件/解決方案,並確定這些方法是否與您的產品相關。解決這個問題的大多數方法似乎是爲每個區域創建具有自定義字符串/設置等的YML文件,然後讓i18n類從YML文件部分抽取適當的東西。

  3. 我會假設每個地區可以決定每個用戶?在過去,我在用戶模型中設置了用戶區域,我這樣做了。這可以包括時區,語言等。然後我可以單獨更改每個用戶的體驗。您可以通過用戶模型來確定所有i18n選項的範圍,因此,當您需要爲每個用戶獲取某些內容時,會通過用戶所在的區域進行過濾,然後將其擴展到i18n/YML文件設置。

  4. 不同地區真的需要不同的功能嗎?這是似乎使事情複雜化的一個因素。如果您可以重新構建代碼/產品以使所有功能保持一致,則可能會使事情變得更簡單。