Issue #10362 has been updated by Eric Wong.


 On the other hand, maybe we should allow Ruby-level options to `system'
 to raise, but continue hiding errors when running the command itself.
 
 In other words:
 
 	# continue old 1.8 behavior if redirect is done via shell
 	# (n.b. this example is bad practice, but just an example)
 	system('true >bad/file.txt') -> nil
 
 So I think the original example by Dmitry should raise:
 
 	system('true', out: %w(bad/file.txt w)) -> Errno...
 
 Maybe this (potentially incompatible) change can be acceptable
 for 2.2 (if not, then for Ruby 3.0)

----------------------------------------
Bug #10362: spawn doesn't raise exception on redirection error
https://bugs.ruby-lang.org/issues/10362#change-49351

* Author: Dmitry Bolshakov
* Status: Open
* Priority: Normal
* Assignee: 
* Category: 
* Target version: 
* ruby -v: ruby 2.0.0p247 (2013-06-27) [i386-mingw32]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN
----------------------------------------
~~~
irb(main):002:0*
irb(main):003:0*
irb(main):004:0* system 'cmd', '/c', 'echo', 'aaa'
aaa
=> true
irb(main):005:0>
irb(main):006:0*
irb(main):007:0*
irb(main):008:0* system 'cmd', '/c', 'echo', 'aaa', :out => ['bad/file.txt', 'w']
=> nil
irb(main):009:0>
irb(main):010:0*
irb(main):011:0*
irb(main):012:0*
irb(main):013:0* system 'cmd', '/c', 'echo', 'aaa', :out => File.open('bad/file.txt', 'w')
Errno::ENOENT: No such file or directory - bad/file.txt
        from (irb):13:in `initialize'
        from (irb):13:in `open'
        from (irb):13
        from C:/Ruby200/bin/irb:12:in `<main>'
irb(main):014:0>
irb(main):015:0*
irb(main):016:0*
~~~

exception is much more descriptive than just nil



-- 
https://bugs.ruby-lang.org/