Installer une version précise de Rubygems

Posted by ZedTuX 0n R00t on January 19, 2015

Si comme moi vous utilisez Docker, et que vous l’utilisez pour empaqueter une application Ruby On Rails qui utilise une version assez ancienne de Ruby, vous aurez sûrement besoin d’installer un Rubygems plus ancien afin d’éviter l’erreur:

1
undefined method `source_index' for Gem:Module (NoMethodError)

Dans votre Dockerfile ajoutez une variable d’environment pour y spécifier la version que vous désirez utiliser:

1
ENV RUBYGEMS_VERSION 1.6.2

Puis ajouter une commande RUN pour l’installer:

1
2
3
4
5
6
7
RUN cd /tmp && \
  curl -L -O https://github.com/rubygems/rubygems/archive/v$RUBYGEMS_VERSION.tar.gz && \
  tar xzf /tmp/v$RUBYGEMS_VERSION.tar.gz -C /tmp && \
  cd /tmp/rubygems-$RUBYGEMS_VERSION/ && \
  ruby setup.rb && \
  rm -rf /tmp/rubygems-$RUBYGEMS_VERSION && \
  rm -rf /tmp/v$RUBYGEMS_VERSION.tar.gz

Et voilà ! :-)