Issue #10021 has been updated by James Byrne. When I try this: `--re-run x -r --rerun y -- file` Then I see this `:in `eval': Only one output filename is permitted (RuntimeError) ` From which I infer that -r has 'eaten' --rerun as its argument and is treating y as the file name (args[0]) But if I do this: `--re-run x -re-run --rerun y -- file ` Then the program runs. I exposed the structures with a debug routine and this is what they show: `Options before parsing with --debug Number of arguments passed: 8 Arguments passed are: --- - "--debug" - "--re-run" - x - "-re-run" - "--rerun" - y - "--" - file Argument object contains: ["--debug", "--re-run", "x", "-re-run", "--rerun", "y", "--", "file"]` ---------------------------------------- Bug #10021: OptParse does not handle missing arguments bracketed by valid option switches https://bugs.ruby-lang.org/issues/10021#change-47669 * Author: James Byrne * Status: Open * Priority: Normal * Assignee: * Category: core * Target version: * ruby -v: Ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux-gnu] * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN ---------------------------------------- OS=CentOS-6.5 x86_64 Ruby=2.1.2p95 I have this in an optparse structure: # Create parser opts = OptionParser.new do |opts| opts.banner = <<-BANNER . . . opts.on("-r", "--rerun=DATEorTRANSACTION", "--re-run=DATEorTRANSACTION", "Re-run extract for specific date (yyyymmdd)", " or transaction number (SSSSSNNNNNNNNC).", " Multiple specifications are ORed for selections.", " All billable transactions are selectable", " whether previously billed or not.", " Sets and enforces --no-update" ) do |rr| options.rerun << rr options.update = false end . . . If I run a program incorporating this option class so: --re-run x --rerun y -r Then I see this: missing argument: -r However, if I do this: --re-run x --rerun y -r --debug or this --re-run x -r --rerun y Then the program runs and does not report the missing argument. Is this the intended behaviour? It does not seem correct to me. -- https://bugs.ruby-lang.org/