Installer une Ruby gem depuis le dépôt Git

Le 17/01/2021 13:04 par grz

Dev Ruby Gem Mastodon API

Il peut être parfois nécessaire d'installer une gem depuis son dépôt Git, plus précisément depuis un commit, une branche ou un tag pour bénéficier de mise à jour/correction de bug.

J'ai un cas d'usage avec la gem mastodon-api. Avec Ruby 2.6.6, la gem est fonctionnelle, en revanche après mise à jour vers Ruby 2.7.2, ça cafouille.

    6: from /usr/home/gregory/.gem/ruby/2.7/gems/mastodon-api-2.0.0/lib/mastodon/rest/media.rb:17:in `upload_media'               
   5: from /usr/home/gregory/.gem/ruby/2.7/gems/mastodon-api-2.0.0/lib/mastodon/rest/utils.rb:18:in `perform_request_with_object'
   4: from /usr/home/gregory/.gem/ruby/2.7/gems/mastodon-api-2.0.0/lib/mastodon/rest/utils.rb:10:in `perform_request'            
   3: from /usr/home/gregory/.gem/ruby/2.7/gems/mastodon-api-2.0.0/lib/mastodon/rest/request.rb:26:in `perform'                  
   2: from /usr/local/lib/ruby/2.7/forwardable.rb:229:in `empty?'                                                                
   1: from /usr/home/gregory/.gem/ruby/2.7/gems/http-3.3.0/lib/http/response/body.rb:52:in `to_s'                                
/usr/home/gregory/.gem/ruby/2.7/gems/http-3.3.0/lib/http/response/body.rb:52:in `force_encoding': can't modify frozen String: "" (Froz
enError)

L'origine du bug vient de Ruby. Une correction a déjà été apportée mais les gems concernées doivent se mettre à jour. Ce qui n'est pas le cas de celle-ci.

Un fix a été apporté par un contributeur sur GitHub, mais pas intégré à ce jour dans la gem. Pour en profiter, il faut créer la gem depuis le dépôt Git. Source

Cloner le dépôt

git clone https://github.com/tootsuite/mastodon-api.git

Se positionner sur le bon commit

cd mastodon-api
git checkout 60b0ed0

Installer les dépendances

Voir le fichier Gemfile.

Dans mon cas, installation côté user uniquement.

gem install --user-install rake yard rspec fuubar rubocop simplecov timecop webmock yardstick

Construire la gem

rake build mastodon.gemspec
mastodon-api 2.0.0 built to pkg/mastodon-api-2.0.0.gem.

Installer la gem

Dans mon cas, installation côté user uniquement.

gem install --user-install pkg/mastodon-api-2.0.0.gem