【问题标题】:Bundler and hidden gems捆绑器和隐藏的宝石
【发布时间】:2012-03-15 04:23:16
【问题描述】:

直接从 github (:git => 'whatever') 安装 gem 时遇到一个有趣的错误。

首先,当我删除所有 gem 并运行 bundle install 命令时,我得到以下信息:

安装 gem1 安装 gem2 使用 gem3(来自 github)

然后,当我想检查我有什么时,我使用 gem list 看到以下内容:

gem1 (x.x.x) gem2 (年年年月年)

没有 gem3... 现在,靠近文件系统,我看到以下内容:

ls -l ~/.rvm/gems/ruby-1.9.3-p125/gems 宝石1 宝石2

那么宝石 3 在哪里?不是我期望的:

ls -l ~/.rvm/gems/ruby-1.9.3-p125/bundler/gems gem3-213213213

所以它在 bundler/gems 下,对 gem list... 和 Capistrano deploy 不可见,这给了我以下信息:

git://github.com/author/gem3.git (在 master 处)未检出。请运行“捆绑安装”

我更担心 Capistrano 无法部署...有人有任何线索吗?

【问题讨论】:

  • 部署时没有运行bundle install?
  • 是的,我正在部署期间运行捆绑安装。我删除了所有 gem 并直接运行 bundle install 以进行调试。

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


【解决方案1】:

Bundler 从您系统上的各种来源获取它的宝石。只要它们是正确的版本,它就会把它们拉进来。

在部署时,它具有更严格/保守的行为。

来自bundle help install,在关于部署模式的部分中,当指定--deployment标志时使用:

宝石安装到供应商/捆绑包而不是您的默认系统位置 化

在开发中,可以很方便的分享你使用的 gem 应用程序与其他应用程序和其他脚本运行在 系统。

在部署中,隔离是更重要的默认设置。此外, 部署应用程序的用户可能没有权限 将 gems 安装到系统中,否则 Web 服务器可能没有权限 阅读它们。

因此, bundle install --deployment 将 gems 安装到 ven- 应用程序中的 dor/bundle 目录。这可能会被覆盖 使用 --path 选项。

【讨论】:

  • 我想我是在试图让系统使用系统范围的宝石来打一场失败的战斗。您的带有部署标志的解决方案有效,所以我会坚持下去!谢谢。
猜你喜欢
  • 2015-07-17
  • 1970-01-01
  • 1970-01-01
  • 2013-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-02
相关资源
最近更新 更多