2008-10-21 39 views

回答

-2

您可以尝试使用OS命令调用执行此操作。我会引用来自irb的eample,但您也可以在脚本中执行相同的操作。

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 

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

2

它看起来不像它真的被支持。我发现了一个“post_install_message”属性,您应该可以在gem规范中设置该属性,但不会执行代码。

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

+0

我尝试使用post_install_message,它真的不会运行任何代码。我创建了一个执行我的任务并返回一个字符串来满足gemspec的方法,但它不起作用。 – 2016-09-13 18:06:50

1

我有同样的问题。我发现最好的解决办法如下:

# 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

你把Rakefile放在哪里?是否有其他文件,例如extconf.rb? – dinman2022 2015-01-27 19:12:35

相关问题