rubygemsでインストール・アンインストールをフックする方法

satoyamaが2014/09/12 19:06:48に投稿

rubygemsでpre/post-install/uninstall Hookする方法

lib/rubygems_plugin.rb

を以下の様な内容で準備する

require "rubygems/installer"

Gem.pre_install do |installer|
  ui = Gem::DefaultUserInteraction.ui
  ui.say "This is pre  install in #{__FILE__}, #{installer.gem}"
  ui.say $PROGRAM_NAME
end

Gem.post_install do |installer|
  ui = Gem::DefaultUserInteraction.ui
  ui.say "This is post install in #{__FILE__}, #{installer.gem}"
end

Gem.pre_uninstall do |uninstaller|
  ui = Gem::DefaultUserInteraction.ui
  ui.say "This is pre  uninstall in #{__FILE__}"
end

Gem.post_uninstall do |uninstaller|
  ui = Gem::DefaultUserInteraction.ui
  ui.say "This is post uninstall in #{__FILE__}"
end

すべてのgem install/uninstall をHookするので、対象を絞りたい場合は、installer.gemなどで確認してから
Hook後の動作を規定するとよい。