2008-10-21 2 views

Répondre

-2

Vous pouvez essayer de le faire en utilisant les commandes d'appel du système d'exploitation. Je vais citer eample d'irb mais vous pouvez faire la même chose dans vos scripts.

irb(main):001:0> system 'gem list | grep rails' 
rails (2.1.1, 2.1.0) 
=> true 
irb(main):002:0> system 'gem list | grep railssssss' 
=> false 

Vous pouvez utiliser le résultat de cette commande comme condition de l'exécution de votre extrait.

2

Il ne semble pas vraiment pris en charge. J'ai trouvé un attribut "post_install_message" que vous devriez pouvoir définir dans la spécification de gem, mais cela n'exécutera pas de code. Vous pouvez être capable de le faire en empaquetant votre code installé en tant qu'extension dans votre gemme (comme s'il s'agissait d'une extension native), et en fournissant un Rakefile pour "construire" l'extension (c'est-à-dire appeler votre code) .

+0

J'ai essayé d'utiliser post_install_message et ce sera vraiment pas exécuter un code. J'ai créé une méthode exécutant mes tâches et renvoyant une chaîne pour satisfaire le gemspec, mais cela n'a pas fonctionné. –

1

J'ai eu le même problème. La meilleure solution que je trouve est la suivante:

# your_gem.gemspec 
Gem::Specification.new do |spec| 
    # ... 
    spec.extensions = ['Rakefile'] 
end 

-

# Rakefile 
task :prepare do 
    # Execute your post-installation code here 
end 

task default: :prepare 
+0

Où avez-vous placé votre Rakefile? Y a-t-il d'autres fichiers, par exemple extconf.rb? – dinman2022

+0

Vous pouvez placer Rakefile dans le même répertoire que votre gemspec. extconf.rb n'est pas nécessaire. – Panic

Questions connexes