【问题标题】:"Local" gem not working when deploying with capistrano使用 capistrano 部署时“本地”gem 不起作用
【发布时间】:2012-09-27 10:08:02
【问题描述】:

我正在做一个需要 active_admin gem 的项目。但我需要修改 activeadmin :

  • 我在我创建的目录中克隆了 active_admin 存储库:/vendor/gems/
  • 已删除 .git 内部:/vendor/gems/active_admin/
  • 将文件夹添加到我自己的 git 存储库中
  • 我修改了 Gemfile 以指向该文件夹:

    gem "active_admin", :path => "vendor/gems/active_admin"

它在本地开发机器上运行良好:我使用bundle install 并且运行良好:

Using activeadmin (0.5.0) from source at ./vendor/gems/active_admin 

但是当我执行cap deploy 时,bundle 会抱怨:

 ** [out] Could not find activeadmin-0.5.0 in any of the sources

有什么神奇的解决方案吗?我应该将 activeadmin 包含在另一个目录(如 lib)中并将其从 gemfile 中删除吗?

谢谢你帮助我!

扑通

【问题讨论】:

  • 我也一样:*** [err :: myserver.com] 致命:不是 git 存储库(或任何父目录):.git

标签: ruby-on-rails ruby capistrano bundler activeadmin


【解决方案1】:

尝试指定 git 路径而不是本地路径。

gem "active_admin", :git => 'git://........../gem_name.git'

我在部署到 heroku 时遇到了同样的问题,我让它在指定 git 路径而不是本地路径时工作。检查:How to get working a local gem on heroku?

【讨论】:

  • 这就是我所做的,关于需求的紧迫性,但这将代码分成了两个 git repos。我想要做的是真正将 gem 包含在我的代码中,因为特殊的 activeadmin 只会在这个项目中使用......
  • 我知道这不是最好的方法,但我不知道为什么另一种方法不起作用。也许是一个错误......
【解决方案2】:

Bundler v1.2 确实从 github 获取,详情请参阅 here。

还可以使用 bundler 将构建的 gem 打包到 repo 中,而无需为它们克隆 github repos。跑吧

$ bundle package
$ bundle install

在您的 repo 中,并提交 bundler 添加到 repo 的 gem。 或者,您可以使用您在本地构建的 gem 将其放在 /vendor/cache 中,所有其他的最终都在其中。

【讨论】:

  • 这与我的问题无关:D 我不是试图从 git 获取或缓存 gem ......我正在尝试使用本地 gem 并在使用 capistrano 部署时使其工作。
  • 我不认为这无关紧要;) 我一直在这样做,我们有 3 个 gem,我们为我们的软件在本地(或在构建服务器上)构建,并且我们将它们捆绑在一起使用用于测试/暂存/生产代码部署的存储库。然后 capistrano 负责将其安装到正确的 ruby​​ 版本/gemset 组合中
  • 也许你是对的......但重点是将所有内容都放在同一个文件夹中。使用您的解决方案,仍有多个文件夹和 git 需要管理:D
猜你喜欢
  • 2023-03-31
  • 1970-01-01
  • 2012-04-14
  • 1970-01-01
  • 2012-08-06
  • 2016-03-08
  • 1970-01-01
  • 1970-01-01
  • 2013-03-27
相关资源
最近更新 更多