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

恐怕你不能用 runner 来做到这一点 - runner 首先搜索它自己的选项,如果--help-h打印帮助并退出,甚至在检查你的脚本是否存在之前:

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

但是,您可以通过根本不使用 runner 并编写纯 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 回答