【问题标题】:Bundle complaining about path of local gem on remote server when deployingBundle在部署时抱怨远程服务器上本地gem的路径
【发布时间】:2012-10-10 21:44:01
【问题描述】:

所以,我有一个 mercurial 存储库,它有一个主项目和 2 个项目扩展。让我们调用项目 A 和扩展 B 和 C。因此,repo 在 repo 中有 3 个文件夹,A、B 和 C,在我的本地计算机中,这些文件夹位于“~/Documents/Aptana Studio 3 Workspace/”中。在项目 A 的 gemfile 中,我有以下几行:

gem "B", :path => "~/Documents/Aptana Studio 3 Workspace/B/"
gem "C", :path => "~/Documents/Aptana Studio 3 Workspace/C/"

当我使用 Capistrano 进行部署时,我收到错误消息:“路径 /home/username/Documents/Aptana Studio 3 Workspace/B 不存在。”这一点也不奇怪。但是,我真的不知道如何解决这个问题,以便远程服务器和我的本地主机中的路径相同。远程服务器上的正确目录是“~/rails/B”。如果我更改了此服务器端,它将在下次部署时被覆盖。从技术上讲,我可以在我的本地计算机上创建一个名为 rails 的文件夹,以便它们都位于相同的目录结构中,但这似乎并不是一个优雅的解决方案。

我读过关于将 3 个文件夹拆分到它们自己的存储库中的信息,但在 mercurials 网站上它说这是不好的做法。

有什么方法可以解决这个问题,而不必在我的本地主机中移动我的项目文件夹?

【问题讨论】:

    标签: ruby-on-rails mercurial capistrano bundler


    【解决方案1】:

    我最终使用了 git 而不是 mercurial。由于 bundler 喜欢 git 并且 git 可以在一个项目中轻松处理多个存储库,所以我切换到它。我在 git 上将项目拆分为 3 个存储库。

    我的 gemfile 现在看起来像这样(在将 SSH 密钥添加到 bitbucket 之后):

    gem "B", :git => "git@bitbucket.org:username/B.git", :branch => 'master'
    gem "C", :git => "git@bitbucket.org:username/C.git", :branch => 'master'
    

    【讨论】:

      猜你喜欢
      • 2018-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-30
      • 1970-01-01
      • 1970-01-01
      • 2014-06-24
      • 2015-05-01
      相关资源
      最近更新 更多