我想在預安裝時執行一些代碼,當從rubygems.org安裝gem時,使用類似gem install some-gem
的命令。如何添加(預/後)_install_hook紅寶石
的文檔指出,你可以使用一個http://docs.ruby-lang.org/en/2.2.0/Gem.html pre_install鉤,看起來像這樣:
# File lib/rubygems.rb, line 724
def self.pre_install(&hook)
@pre_install_hooks << hook
end
該文檔還指出:
RubyGems defaults are stored in rubygems/defaults.rb. If you're packaging RubyGems or implementing Ruby you can change RubyGems' defaults. For RubyGems packagers, provide lib/rubygems/defaults/operating_system.rb and override any defaults from lib/rubygems/defaults.rb. For Ruby implementers, provide lib/rubygems/defaults/#{RUBY_ENGINE}.rb and override any defaults from lib/rubygems/defaults.rb. If you need RubyGems to perform extra work on install or uninstall, your defaults override file can set pre and post install and uninstall hooks. See ::pre_install, ::pre_uninstall, ::post_install, ::post_uninstall.
這聽起來正是我想要的。所以,我創建的文件
- 的lib/RubyGems的/默認/ defaults.rb
- 的lib/RubyGems的/默認/ operating_system.rb
- 的RubyGems/defaults.rb
,我把代碼
Gem.pre_install { puts 'pre install hook called!' }
在所有列出的文件中。然後我說他們require_paths在這樣的gemspec:
s.require_paths = ["lib", "test", "rubygems"]
但我看不出有任何輸出端子安裝寶石時。
我在做什麼錯?
應該「我現在看到輸出」其實是「我看不到輸出'? –
是的,它應該是「否」而不是「現在」。編輯了這個問題。謝謝。 –