実際、OptionParser.new のブロック内でon_tailを使用できます。
しかし、単に ARGV.getopts を試しているだけなので、独自のヘルプ メッセージを表示するためのハックは、例外を救うことになります。
require 'optparse'
help_msg = <<EOM
This is help message:
Hello buddy, you may do something wrong
...
EOM
begin
params = ARGV.getopts("a:", "AA")
rescue => e
puts e.message
puts '=' * 80
puts help_msg
end
出力:
ruby a.rb -a
#=>
missing argument: -a
================================================================================
This is help message:
Hello buddy, you may do something wrong
...
ruby a.rb -b
#=>
invalid option: -b
================================================================================
This is help message:
Hello buddy, you may do something wrong
...