【问题标题】:How to change bundle install from default to my project gemfile?如何将捆绑安装从默认更改为我的项目 gemfile?
【发布时间】:2019-04-12 12:28:48
【问题描述】:

我正在尝试将 Gemfile 中的 gem 安装到我的项目中,但是当我执行“捆绑安装”时,捆绑器开始安装默认 gem,而不是我的 Gemfile 中的那个。

Gemfile 目录:C:\Users\ipinhei5\Desktop\Automation\napps-ANDROIDmation

见下文: [捆绑安装默认 gem]

C:\Users\ipinhei5\Desktop\Automation\napps-ANDROIDmation>bundle install
Fetching gem metadata from https://rubygems.org/............
Fetching gem metadata from https://rubygems.org/..
Resolving dependencies...
Using CFPropertyList 3.0.0
Using to_boolean 1.0.2
Using android-adb-extension 0.1.2
Using awesome_print 1.8.0
Using backports 3.13.0
Using builder 3.2.3
Using bundler 2.0.1
Fetching byebug 11.0.1
Installing byebug 11.0.1 with native extensions

[我的项目 Gemfile]:

source "https://rubygems.org"

gem "calabash-cucumber"
gem 'calabash-android'
gem 'cucumber'
gem 'rspec'
gem 'yml_reader'
gem 'rest-client'
gem 'android-adb-extension', '~> 0.1.1'
gem 'pry', '~> 0.10.4'
gem 'pry-byebug', '~> 3.4'
gem 'rubysl-rexml'
gem 'cpf_generator', '~> 1.0'
gem 'meglish', '~> 1.0', '>= 1.0.5'
gem 'pluoa-mapper', '~> 1.0', '>= 1.0.2'

您能帮我从我的 Gemfile 中安装 gem 吗?

编辑 1:我认为我误解了具有依赖关系的 gem。

编辑 2: 我在安装 json 包时遇到了一些错误

获取 json 2.2.0 使用本机扩展安装 json 2.2.0 Gem::Ext::BuildError: ERROR: 未能构建 gem 原生扩展。

当前目录: C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/json-2.2.0/ext/json/ext/generator C:/Ruby24-x64/bin/ruby.exe -I C:/Ruby24-x64/lib/ruby/site_ruby/2.4.0 -r ./siteconf20190412-3460-119pn5l.rb extconf.rb 创建 Makefile

当前目录: C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/json-2.2.0/ext/json/ext/generator 使“DESTDIR=”干净 当前目录: C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/json-2.2.0/ext/json/ext/generator 制作“DESTDIR=” make failed没有这样的文件或目录 - make "DESTDIR="

Gem 文件将继续安装在 C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/json-2.2.0 供检查。 结果记录到 C:/Ruby24-x64/lib/ruby/gems/2.4.0/extensions/x64-mingw32/2.4.0/json-2.2.0/gem_make.out

安装 json (2.2.0) 时出错,Bundler 无法继续。 确保gem install json -v '2.2.0' --source 'https://rubygems.org/' 在捆绑之前成功。

在 Gemfile 中: calabash-android 被解析为 0.9.8,这取决于 lufa 被解析为 2.1.0,这取决于 json

【问题讨论】:

    标签: ruby bundler gemfile gem-bundler


    【解决方案1】:

    它没有安装“默认”包。它正在安装您的 Gemfile 中的包以及这些包的依赖项。如果您发现它正在安装您未在 Gemfile 中指定的包,那是因为这些包是 Gemfile 中一个或多个包的依赖项。

    来自bundle installdocumentation

    安装 Gemfile 中指定的依赖项

    ...Bundler 将获取所有远程源、解决依赖关系和 安装所有需要的 gem。

    您可以使用带有--reverse-dependencies 标志的gem dependency 命令来查看安装gem 的原因。例如,在您的情况下,使用gem dependency CFPropertyList --reverse-dependencies 查看为什么安装了CFPropertyList gem。在命令输出的最底部,它将告诉您哪个包需要它作为依赖项。

    您还可以在运行 bundle install 后检查您的 Gemfile.lock 文件,以查看您已安装的软件包列表及其依赖项。在specs 标题下,您将看到已安装的所有软件包的列表。一些包在它们下面有一个缩进包的列表。这些是包的依赖项。

    例如,让我们看看为什么要安装to_boolean 包:

    specs:
      android-adb-extension (0.1.2)
        to_boolean (~> 1.0)
    

    您的 Gemfile 中有 android-adb-extension 作为依赖项,如果我们检查 ruby​​gems 上的 android-adb-extension 页面,我们会看到 to_boolean 它是(仅)运行时依赖项。

    【讨论】:

    • 它没有在我的 gemfile 中安装软件包,正如您在第一个 cmd 中看到的那样,有例如CFPropertyList,而我的 gemfile(第二个代码)不包含那个。如何强制捆绑包在我的项目中安装我的 gemfile(第二个代码)?
    • @ItaloPinheiro 你知道依赖是什么吗?
    • @ItaloPinheiro 您可以使用带有--reverse-dependencies 标志的gem dependency 命令来查看安装gem 的原因。在您的情况下使用gem dependency CFPropertyList --reverse-dependencies。在最底部,它会告诉你哪个包需要它作为依赖项。
    • 依赖包是 gem 需要的包吗?我想我误解了。
    • 我在尝试安装 json 时出错,你能看看吗?
    猜你喜欢
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    • 1970-01-01
    • 2010-09-15
    • 2012-04-18
    • 1970-01-01
    • 2012-08-19
    • 1970-01-01
    相关资源
    最近更新 更多