我一直在考慮將我的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