2012-04-29 47 views
8

我有一个响应api调用的Sinatra应用程序,以及处理报告和所有漂亮内容(如图形和网站)的Rails应用程序。两者都需要访问一组通用模型(例如帐户,站点等)在Sinatra和Rails之间共享模型代码

我的问题是:如何有效地共享两个应用程序之间的代码?例如,如果我在Sinatra中编辑帐户模型,我不想记得在Rails应用程序中重复相同的更改。我宁愿不使用Rails机架安装,因为这两个应用程序将位于不同的群集上。

我见过的建议在计算器上约:

  • 的Git模块
  • 符号链接(不会与Windows工作我的同事使用)
  • Rails插件(我怀疑这将与西纳特拉工作)
  • 红宝石宝石(我认为这只是模型数据太矫枉过正,但是这只是我)

两个应用程序一重新在不同的存储库。基本上,我首先开发了API,然后在Rails应用程序中使用帐户特定的逻辑(主要是因为Rails有更多的库可以更容易地开发这些类型的东西)。

你会如何解决这个问题?

+0

这些应用程序是在同一个存储库还是不同的应用程序? –

+0

他们在不同的仓库:)你会推荐他们在同一个仓库吗? – parasquid

+1

不,只是想知道这些选项有所变化。就个人而言,我认为git模块或私人宝石是最好的选择。 –

回答

4

我会去找一个宝石,或者更喜欢宝石,你不需要发布它,然后使用Bundler git dependencies。我们在Travis CI中大量使用它,并且效果很好,尤其是Bundler 1.2中新的“local”git依赖项:http://gembundler.com/man/bundle-config.1.html#LOCAL-GIT-REPOS

+0

只是为了澄清,这意味着我将不得不将两个应用程序之间的共同点提取到宝石中,对吧? 如果是这样的话,你会碰巧知道我可以检查并从中学习的存储库吗? :) – parasquid

+0

是的,这就是我的意思。另一种方法是将Sinatra应用程序作为同一项目中的Rails应用程序,或者让Sinatra应用程序加载Rails应用程序。例如,查看https://github.com/travis-ci/travis-core。 –

+0

我明白了,非常感谢! :) – parasquid

相关问题