如何编写安装RubyGem时调用的钩子?

我想写一个Ruby代码片段,当我的Gem首次通过[sudo ]gem install mygem 。 可以吗?

它看起来并不像它真的支持。 我找到了一个“post_install_message”属性,您应该能够在gem规范中设置该属性,但这不会执行代码。

您可以通过将安装后的代码打包为gem中的扩展(就好像它是本机扩展)来实现它,并提供一个Rakefile来“构建”扩展(即调用您的代码)。

我有同样的问题。 我找到的最佳解决方案如下:

 # 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 

您可以尝试使用OS命令调用来执行此操作。 我将引用irb的例子,但你也可以在你的脚本中做同样的事情。

 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 

您可以使用此命令的结果作为代码段执行的条件。