我想寫一個Ruby代碼片段,當我的Gem通過[sudo ]gem install mygem
第一次安裝時運行。可以做到嗎?如何編寫一個在安裝RubyGem時被調用的鉤子?
4
A
回答
-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來「構建」擴展(即調用您的代碼) 。
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
相關問題
- 1. 如何編寫鉤子
- 2. 如何在gitolite中安裝鉤子
- 3. 如何編寫一個git鉤子來限制寫入分支?
- 4. 如何在windows上編寫mercurial鉤子?
- 5. 如何確保Branch.io安裝Web鉤子?
- 6. 何時調用Promise.then()鉤子?
- 7. 從另一個鉤子調用一個git鉤子
- 8. 如何編寫一個svn鉤子腳本
- 9. ar_sendmail - 安裝時找不到RubyGem cyu-ar_mailer
- 10. 在鉤子中調用一個函數
- 11. 在原生鉤子之前加載可安裝的鉤子
- 12. 鉤子安裝錯誤
- 13. 如何在C中編寫函數的通用鉤子?
- 14. 在同一個Drupal模塊的掛鉤內調用鉤子
- 15. woocommerce_email_recipient_customer_completed_order沒有被調用的鉤子
- 16. Puppet:在沒有安裝Rubygems的機器上安裝Rubygem-package
- 17. 如何編寫一個檢查openGL支持的安裝程序?
- 18. 使用PHP編寫git鉤子
- 19. 如何在BZR中編寫特定於分支的鉤子?
- 20. 已安裝的窗口鉤子列表
- 21. 如何編寫這個提交前鉤子
- 22. 編寫一個git鉤子來在本地提交時自動修改代碼
- 23. SproutCore的安裝 - 找不到RubyGem
- 24. 如何在服務器上安裝鉤子?
- 25. 如何在prestashop 1.7中註冊並安裝鉤子?
- 26. 如何在「npm install」上安裝git鉤子?
- 27. 如何編寫一個自動化的腳本來安裝一個新的CMS
- 28. 如何編寫安全的原子對象包裝?
- 29. 在c#安裝項目中未被調用的安裝方法
- 30. 如何在安裝屏蔽時編寫自定義操作?
我嘗試使用post_install_message,它真的不會運行任何代碼。我創建了一個執行我的任務並返回一個字符串來滿足gemspec的方法,但它不起作用。 – 2016-09-13 18:06:50