Упаковка Git Gem для развертывания в Ruby Lambda Runtime - PullRequest
0 голосов
/ 05 августа 2020

Я создаю приложение Ruby 2.7 Lambda.

Мое приложение зависит от драгоценного камня, существующего в github.

gem 'my-gem', git: 'https://github.com/my-org/my-gem', branch: 'main'

Я хочу написать сценарий, который может построить zip-файл развертывания, содержащий эту зависимость.

Когда я запускаю bundle install, мой гем устанавливается в vendor / bundle / ruby ​​/ 2.7.0 / bundler / gems / my-gem-GITHA SH.

Для упаковки Lambda, я считаю, что мне нужно построить следующее

  • vendor / bundle / ruby ​​/ 2.7.0 / gems / my-gem-1.0.0 / * (ruby code)
  • vendor / bundle / ruby ​​/ 2.7.0 / specs / my-gem-1.0.0.gemspe c

Следующие действия сценария могут собрать эту структуру, но у меня был sh подход попроще.

    cd vendor/bundle/ruby/2.7.0/bundler/gems/my-gem-* 
    # build the git gem (*.gem)
    gem build 
    # copy the gem and the gemspec to the vendor/bundle/ruby/2.7.0 directories
    cp *.gem ../../../gems 
    cp *.gemspec ../../../specifications/my-gem-1.0.0.gemspec 
    # upack the .gem file in the proper directory
    cd ../../../gems 
    gem unpack *.gem 
    # return to the working directory
    cd ../../../../.. 
    # Zip the dependencies 
    zip -r deploy.zip \
           vendor/bundle/ruby/2.7.0/gems \
           vendor/bundle/ruby/2.7.0/specifications \
           vendor/bundle/ruby/2.7.0/extensions \
           lib

Мне было бы любопытно найти более простой подход к этой проблеме.

1 Ответ

0 голосов
/ 05 августа 2020

Запуск bundle install --deployment должен делать то, что вы хотите ( страница документации ).

Обновление: кажется, что AWS документы используют bundle install --path vendor/bundle.

...