如何将bundle install从默认更改为我的项目gemfile?

问题描述 投票:1回答:1

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

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

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

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安装宝石吗?

编辑1:我认为我误解了具有依赖性的宝石。

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

获取json 2.2.0使用本机扩展安装json 2.2.0 Gem :: Ext :: BuildError:错误:无法构建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 -IC: /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 make“DESTDIR =”clean当前目录:C:/ Ruby24-x64 /lib/ruby/gems/2.4.0/gems/json-2.2.0/ext/json/ext/generator make“DESTDIR =”make failedNo这样的文件或目录 - 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,这取决于luffa被解析为2.1.0,这取决于json

ruby bundler gemfile gem-bundler
1个回答
1
投票

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

来自bundle install documentation

安装Gemfile中指定的依赖项

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

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

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

例如,让我们看看为什么安装了to_boolean软件包:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.