如何在红宝石宝石中使用钩子

时间:2011-05-19 19:13:23

标签: ruby rubygems

我有一个gem需要在安装gem之后执行一些rake任务。使用http://blog.costan.us/2008/11/post-install-post-update-scripts-for.html中描述的方法安装后执行代码有一种hackish方式。

然而,Gem类现在有钩子,其中一个是post_install钩子。我想添加像

这样的行
Gem.post_install { puts 'post hook example' } 

进入Rakefile,它似乎没有在安装过程中执行。这条线应该放在哪里以便挂钩?

1 个答案:

答案 0 :(得分:6)

lib/rubygems_plugin.rb

创建一个文件

在此文件中,您可以定义自定义挂钩。例如:

Gem.post_install do
  puts "post_install called for gem"
end

无需任何要求。
示例输出:

  Successfully built RubyGem
  Name: post_install_test
  Version: 0.1.0
  File: post_install_test-0.1.0.gem
post_install called for gem
Successfully installed post_install_test-0.1.0
1 gem installed

我只在source中找到了相关文档。

如果这不起作用,或者您对post安装挂钩的更改似乎并不总是更新,请在重建和安装之前完全卸载gem。