【问题标题】:Bundle install fails to install my gem fork on GitHubBundle install 无法在 GitHub 上安装我的 gem fork
【发布时间】:2012-01-27 08:39:38
【问题描述】:

在 GitHub 上,我创建了一个 gem adammck-rubygsm 的分支。我的叉子在这里https://github.com/khwang1/rubygsm。

我想将我的应用程序从原始应用程序切换到我的分叉 gem。所以,在 Gemfile 我改变了行

gem 'adammck-rubygsm'

到

gem 'adammck-rubygsm', :git => "git://github.com/khwang1/rubygsm.git"

当我运行“捆绑安装”时,出现以下故障

$ bundle install
Updating git://github.com/khwang1/rubygsm.git
Fetching source index for http://rubygems.org/
Could not find gem 'adammck-rubygsm (>= 0)' in git://github.com/khwang1/rubygsm.git (at master).
Source does not contain any versions of 'adammck-rubygsm (>= 0)'

有什么想法吗?

【问题讨论】:

  • 您是否尝试在 ruby​​gsm.gemspec 文件中将 ruby​​gsm 替换为 adammck-rubygsm?对于 s.name 变量。或者它可能在 Gemfile 中用 gem 'khwang1-rubygsm' 替换 gem 'adammck-rubygsm'。
  • 感谢您的建议。原始 gem 和我的 fork 中的 s.name 一直是“rubygsm”。我确实将我的 Gemfile 从“gem 'adammck-rubygsm'”更改为“gem 'rubygsm'”,这确实有点帮助。

标签: rubygems github bundler


【解决方案1】:

git 指令必须用 https 指定,如:

gem 'resque', :require => "resque/server", git: 'https://github.com/defunkt/resque.git'

【讨论】:

    【解决方案2】:

    感谢您的建议。为了从 GitHub 成功捆绑安装 my fork of adammck-rubygsm,我进行了以下更改:

    • 在我的应用程序 Gemfile 中,更改为 gem 'rubygsm', :git => "git://github.com/khwang1/rubygsm.git"。 Gem 的 .gemspec 中的 s.name 一直是“rubygsm”。

    然后,bundle install 抱怨找不到 gem 'toholio-serialport'

    • 在我的 fork gem 的 .gemspec 中,删除行 s.add_dependency("toholio-serialport", ["> 0.7.1"])。提交更改并将其推送到 GitHub。

    捆绑安装抱怨rubygsm did not have a valid gemspec...The validation message from Rubygems was: ["bin/gsm-app-monitor"] are not files

    • 检查 gem 源代码,文件 bin/gsm-app-monitor 确实不存在。在我的 fork gem 的 .gemspec 文件中,从 s.files 中删除 "bin/gsm-app-monitor"。提交更改并将其推送到 GitHub。

    现在,bundle install 从我在 GitHub 上的 fork gem 中成功安装 gem ruby​​gsm!

    【讨论】:

      【解决方案3】:

      你的 fork 的 gemspec 可能包含与 RubyGems 上的 gem 不同的名称,例如,当我在 GitHub 上 fork active_merchant 时,他们的 .gemspec 文件有:

      s.name         = 'activemerchant'
      

      但 gem 在 RubyGems 上被定义为 active_merchant,所以我将 Gemfile 更改为:

      gem "active_merchant", git: "https://github.com/adamwaite/active_merchant.git", require: "active_merchant"
      

      到:

      gem "activemerchant", git: "https://github.com/adamwaite/active_merchant.git", require: "active_merchant"
      

      注意缺少“_”。

      在那之后一切都很顺利。这可能是一个不起眼的案例,但我希望它对某人有所帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-04-11
        • 1970-01-01
        • 1970-01-01
        • 2013-08-25
        • 2021-11-04
        • 1970-01-01
        • 1970-01-01
        • 2012-04-21
        相关资源
        最近更新 更多