加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails-3 – 如何组织Rails应用程序和多个引擎的开发

发布时间:2020-12-17 02:37:40 所属栏目:百科 来源:网络整理
导读:实际上很难形成这个问题所以我只是解释一下情况. 我正在开发一个由多个子应用程序组成的应用程序.主应用程序只提供导航栏和一些基本功能,如用户配置和权限,而子应用程序提供实际功能. 现在这是一个Rails 2应用程序,子应用程序嵌入到框架中,它不是很好的设计,
实际上很难形成这个问题所以我只是解释一下情况.

我正在开发一个由多个子应用程序组成的应用程序.主应用程序只提供导航栏和一些基本功能,如用户配置和权限,而子应用程序提供实际功能.

现在这是一个Rails 2应用程序,子应用程序嵌入到框架中,它不是很好的设计,而且设置起来非常复杂.
幸运的是,我们现在有了Engines,这将是这个应用程序的更好的解决方案.

到目前为止,所有内容都存在于颠覆中并且可以立即更新,共享代码使用外部.在我们进行重组和重构时,我们想转向git.
过去几天我一直在搜索关于bundler,git子模块和git子树的网页,但我还没有找到一个很好的描述如何正确地管理一个包含多个Engines / Gems的大型项目,当你开发所有这些项目时同一时间.

特别是我希望能够:

>使用Bundler来管理依赖项
>不要将我们自己的Gems和Engines安装到全局gem路径中,而是相对于主应用程序,作为git存储库
>将我们自己的Gems和Engines设置为git存储库(可能使用Bundler的本地路径覆盖)
>一个简单的方法来获取所有依赖项(捆绑安装),它提取我们自己的宝石和引擎的最新版本,如果这是不可能的,那么git的一个命令拉动所有自己的宝石和引擎(可能是一个rake任务?)
>让新开发人员可以轻松快速地设置整个开发环境(git克隆应用程序,捆绑安装依赖项,包括所有自己的Gems和Engines,本地)
>轻松部署Capistrano

我已经想过的:

>将所有内容整合到一个存储库中,似乎为我打败了单独的Gems / Engines的目的,我认为它也不允许我们通过Bundler管理我们的引擎上的主应用程序的依赖关系
>使用子模块,我读了很多关于它为什么不好的帖子,而且我们的开发人员数量只是时间问题,直到有人提交一个子模块指针指向一个只存在于他的本地仓库中的提交
> git子树实用程序,对我来说似乎相当复杂

那么你有没有类似的设置,你如何管理它,以尽可能简单地更新和提交更改?您在哪里放置应用程序所依赖的Engine / Gem代码?

TL; DR如何管理由多个引擎和宝石组成的大型铁路项目?

解决方法

我们公司有一个类似的(但可能不那么复杂)的案例.我们做什么(就像现在一样),这也可能对你有用:

将您的Rails应用程序放在自己的git存储库中.各种宝石每个都有自己的存储库(虽然可以这样做,“一个gem =一个git存储库”将使你的生活更轻松).

然后在您的Rails应用程序Gemfile中,您有几个选项

>默认应该是将每个gem引用到它的git存储库(以便bundle从那里加载它们)
>在本地处理某些gem和Rails应用程序时,可以通过在本地覆盖路径来更改Gemfile以使用本地路径(http://gembundler.com/v1.2/gemfile.html)或更高版本(请参阅:http://gembundler.com/v1.2/git.html).请注意,这两个选项是不同的:第一个使用路径,第二个使用本地git存储库(因此第一个将显示新的未提交更改,而不是第二个).

为了轻松更新所有宝石,我会创建一个小的.sh脚本(只是为了启动各种克隆或更新操作,以及捆绑安装,以便一切都干净),并使用主应用程序提交.我还会在团队中找到一个“标准文件夹组织”(即,每个人都使用他们选择的基本文件夹,在其下面使用Rails应用程序和每个gem的文件夹),以使该过程更容易.

我希望这可以帮助或获得你的想法(你的问题非常复杂和多方面,所以我不是100%确定这是你正在寻找的).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读