我试图将我的Gemfile中的gems安装到我的项目中,但是当我执行“捆绑安装”时,捆绑程序开始安装默认的gems,而不是我的Gemfile中的那个gems。
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 -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 =” 生成失败没有这样的文件或目录-生成“ DESTDIR =“
宝石文件将继续安装在 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
答案 0 :(得分:1)
它没有安装“默认”软件包。它会将软件包安装在您的Gemfile中,并安装这些软件包的依赖项。如果您看到它正在安装未在Gemfile中指定的软件包,那是因为这些软件包是Gemfile中一个或多个软件包的依赖项。
来自bundle install
documentation:
安装Gemfile中指定的依赖项
... Bundler将获取所有远程源,解决依赖关系并 安装所有需要的宝石。
您可以将gem dependency
命令与--reverse-dependencies
标志一起使用,以查看安装gem的原因。例如,在您的案例中,使用gem dependency CFPropertyList --reverse-dependencies
查看为什么安装了CFPropertyList
gem。在命令输出的最底部,它将告诉您哪个软件包需要它作为依赖项。
运行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
是(仅)运行时依赖项。