32 votes

Rubygems: Comment ajouter une dépendance spécifique à la plate-forme?

J'ai un joyau rubis qui a différentes dépendances pour chaque système d'exploitation. Je dois tous les écrire explicitement:

Sous Mac OS X:

 gem install livereload
 

sous Linux:

 gem install rb-inotify livereload
 

sous Windows:

 gem install eventmachine-win32 win32-changenotify win32-event livereload
 

Puis-je modifier un peu la gemme pour que les instructions d'installation ressemblent à gem install livereload pour chaque système d'exploitation?

20voto

Fotios Points 1300

La bonne façon de le faire est décrite ici. Depuis le gemspec est évaluée au paquet de temps, vous devez le faire dans une extension native. Ne vous inquiétez pas, il n'est pas effrayant, puisque sa reste juste du code Ruby (pas de compilation C ou quoi que ce soit).

Nous sommes actuellement en utilisant cette approche pour un certain client des outils pour OpenShift (source). Puis dans votre gemspec/Rakefile, au lieu d'ajouter des dépendances, vous ajoutez une extension. Notez que le fichier doit être nommé ext/mkrf_conf.rb pour que cela fonctionne.

-2voto

Matheus Moreira Points 7839

Dans votre Gemfile vous pouvez regrouper les dépendances par plateforme Ruby:

 # Unix Rubies (OSX, Linux)
platform :ruby do
  gem 'rb-inotify'
end

# Windows Rubies (RubyInstaller)
platforms :mswin, :mingw do
  gem 'eventmachine-win32'
  gem 'win32-changenotify'
  gem 'win32-event'
end
 

C'est le plus proche que vous pouvez obtenir, autant que je sache.

Pour plus d'informations, consultez la page de manuel Gemfile .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X