3

私は次のようなスクリプトを持っています

OptionParser.new do |opts|
  opt.on("-h","--help","help") do
    puts opts
  end
end.parse!

しかし、私が呼び出すたびにrails runner my_script.rb --help、私のスクリプトではなく、Rails Runner のヘルプが表示されます。Rails runner がこのオプションを飲み込むのを防ぐ方法はありますか?

4

1 に答える 1

2

ランナーでこれを行うことはできません-ランナーは最初に独自のオプションを検索し、スクリプトが存在する--help-hどうかを確認する前にヘルプを出力して終了します。

# Railites: lib/rails/commands/runner
opts.on("-h", "--help",
    "Show this help message.") { $stdout.puts opts; exit }

ただし、ランナーをまったく使用せず、純粋な Ruby スクリプトを作成するだけで、これを回避できます。

#!/usr/bin/env ruby
require 'optparse'

environment = 'development'

OptionParser.new do |opts|
  opt.on("-e", "--environment") do |v|
    environment = v
  end
  opt.on("-h","--help","help") do
    puts opts
  end
end.parse!

# RAILS_ENV is used by environment.rb file to load correct configuration
ENV['RAILS_ENV'] = environment
# Load your rails application
require_relative "../config/environment.rb"

puts User.count # Your code here
于 2015-12-17T20:51:39.123 に答える