我想写一个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. 何时调用Promise.then()钩子?
- 5. 从另一个钩子调用一个git钩子
- 6. 如何编写一个svn钩子脚本
- 7. 在原生钩子之前加载可安装的钩子
- 8. 在同一个Drupal模块的挂钩内调用钩子
- 9. woocommerce_email_recipient_customer_completed_order没有被调用的钩子
- 10. 如何编写一个检查openGL支持的安装程序?
- 11. 使用PHP编写git钩子
- 12. 如何在BZR中编写特定于分支的钩子?
- 13. 已安装的窗口钩子列表
- 14. 编写一个git钩子来在本地提交时自动修改代码
- 15. 如何在“npm install”上安装git钩子?
- 16. 如何在prestashop 1.7中注册并安装钩子?
- 17. 如何编写一个自动化的脚本来安装一个新的CMS
- 18. SproutCore的安装 - 找不到RubyGem
- 19. 如何为ubuntu编写安装脚本
- 20. 如何:编写一个只能调用一次的线程安全方法?
- 21. CollabNet预先安装钩子 - 新手
- 22. 如何从我创建的NetBeans安装RubyGem?
- 23. 如何在Eclipse中编译ejabberd钩子
- 24. 无法安装Rubygem“链接解析器”
- 25. 安装sqlite3-rubygem和mysql时出现的问题
- 26. 如何编写一个Git预提交钩子,防止在测试项目失败时提交Android项目?
- 27. 定义“method_called”..我如何制作一个钩子方法,每次调用一个类的任何函数时都会被调用?
- 28. 在“新”电脑上安装一个调试编译的pgm
- 29. Drupal 6:如何实现一个钩子?
- 30. Drupal - 如何做一个搜索钩子
我尝试使用post_install_message,它真的不会运行任何代码。我创建了一个执行我的任务并返回一个字符串来满足gemspec的方法,但它不起作用。 – 2016-09-13 18:06:50