При установке пакета невозможно установить драгоценный камень из GitHub

Я пытаюсь установить драгоценный камень из разветвленного репозитория aws-sdk-ruby, куда я добавил несколько новых коммитов.

Ниже приведен контент, который я добавил в свой Gemfile:

gem 'aws-sdk', :git => 'https://github.com/suvrat-joshi/aws-sdk-ruby.git', :branch => 'retry-throttled-cf-requests'

Но когда я пытаюсь запустить bundle install, я получаю следующую ошибку:

Could not find gem 'aws-sdk' in [email protected]:suvrat-joshi/aws-sdk-ruby.git (at
retry-throttled-cf-requests@b77de6d).

Кроме того, я могу установить этот драгоценный камень из исходного кода, запустив gem install aws-sdk -s https://github.com/suvrat-joshi/aws-sdk-ruby.git. Однако я хотел бы установить это через bundle install.

Обратите внимание, что я уже попробовал некоторые ответы, которые нашел в Интернете. Но ни один из них не пригодился в моем случае. Нравиться:

  1. Добавление

    require 'bundler/setup'
    

    в config.ru файл.

  2. Добавление

    require 'bundler'
    Bundler.setup(:default)
    

    в config.ru файл.

  3. Использование команды specific_install

    gem install specific_install
    gem specific_install -l https://github.com/suvrat-joshi/aws-sdk-ruby.git
    
  4. Создайте драгоценный камень из файла aws-sdk.gemspec (gem build aws-sdk.gemspec), представленного по ссылке , а затем скопируйте сгенерированный файл драгоценного камня в статический путь другого проекта и затем добавьте следующее в файл Gemfile.

    gem 'aws-sdk-3.2.0.gem', path: 'vendor/gems/aws-sdk'
    

    Но для моего случая этот вариант не подходит, так как для каждого нового обновления мне придется собирать гем заново и копировать его по статическому пути.

Может ли кто-нибудь с опытом работы с Ruby помочь мне понять, почему это не работает и как это исправить?

🤔 А знаете ли вы, что...
Ruby имеет динамическую систему исключений, что упрощает обработку ошибок.


51
1

Ответ:

Решено

Согласно https://bundler.io/guides/git.html:

If the gem is located within a subdirectory of a git repository, 
you can use the :glob option to specify the location of its .gemspec

На той же странице приведен пример:

gem 'cf-copilot',
  git: 'https://github.com/cloudfoundry/copilot',
  glob: 'sdk/ruby/*.gemspec'

Итак, в вашем случае это должно быть:

gem 'aws-sdk',
  :git => 'https://github.com/suvrat-joshi/aws-sdk-ruby.git',
  :branch => 'retry-throttled-cf-requests',
  :glob => 'gems/aws-sdk/aws-sdk.gemspec'