2008-10-21 21 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