如何将捆绑包安装从默认更改为我的项目gemfile?

时间:2019-04-12 12:28:49

标签: ruby bundler gemfile gem-bundler

我试图将我的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

1 个答案:

答案 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是(仅)运行时依赖项。