【问题标题】:How to specify in Gemfile a .gemspec located in a subdirectory of a Git repository如何在 Gemfile 中指定位于 Git 存储库子目录中的 .gemspec
【发布时间】:2011-04-27 01:47:06
【问题描述】:

我在 github 上创建了 spree 存储库,我想在我的 rails 应用程序的 Gemfile 中指定一个 gem,它位于主存储库的 core 子目录中。

仓库的文件夹结构如下:

|~spree                   [git root]
| |-spree.gemspec         [spree gem located here]
|~core
| |-spree_core.gemspec    [spree_core gem located here]

换句话说,我想做一些事情:

gem 'spree-core', :git => 'git://github.com/spree/spree.git'

问题是我在尝试bundle install 时收到以下错误消息:

在 git://github.com/spree/spree.git(在 master)中找不到 gem 'spree-core (>= 0)'。 源不包含任何版本的“spree-core (>= 0)”

【问题讨论】:

    标签: ruby-on-rails github gem bundle bundler


    【解决方案1】:

    您可以创建一个仅包含 core 子目录和关联的 spree_core.gemspec 文件的存储库。这也将导致安装更苗条。您还可以获取目录的内容以与您的应用程序捆绑并像这样分发它:

    gem 'spree-core', :path => 'vendor/gems/spree/core'
    

    bundler 从 git 存储库安装的能力似乎受到了 the documentation 的限制,它期望 spree_core/spree_core.gemspec 而不是 core/spree_core.gemspec

    gem 创建者的这种疏忽很常见,因为大多数人不希望人们安装官方发布的 gem 以外的任何东西。至少很高兴.gemspec 文件可用,因为有些项目甚至没有包含那么多,这让许多人感到沮丧。

    【讨论】:

      【解决方案2】:

      这首先出现在谷歌搜索中,给出的答案要么永远不正确,要么 Bundler 改变了它的行为。

      在 OP 中存在拼写错误,该错误似乎与原始问题一致。特别是 spree-core 不应该连字符。

      以下应该可以正常工作:

      gem 'spree_core', github: 'spree/spree'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-09-19
        • 2012-05-06
        • 2016-09-22
        • 2015-05-15
        • 1970-01-01
        • 1970-01-01
        • 2011-11-03
        相关资源
        最近更新 更多