Actions
Bug #13346
closedprovider native_ms - use of '.each_line' on array breakes smart proxy
Difficulty:
Triaged:
Description
Issue #7766 uses .each_line instead of .each on an array.
I could not find where this got merged; since
https://github.com/theforeman/smart-proxy/pull/294
is still open.
At least with ruby 2.0, .readlines seems to become an array:
std_in, std_out, std_err = Open3.popen3(command)
response = std_out.readlines
response += std_err.readlines
https://github.com/theforeman/smart-proxy/blob/1.10-stable/modules/dhcp/providers/server/native_ms.rb#L211
Using each_line will result in a no method error:
D, [2016-01-23T00:23:58.253684 #3068] DEBUG -- : Loading subnets for 127.0.0.1 D, [2016-01-23T00:23:58.253684 #3068] DEBUG -- : executing: c:\windows\system32\cmd.exe /c c:\Windows\System32\netsh.exe -c dhcp server 127.0.0.1 show scope I, [2016-01-23T00:23:58.331907 #3068] INFO -- : Enumerated the scopes on 127.0.0.1 E, [2016-01-23T00:23:58.331907 #3068] ERROR -- : undefined method `each_line' for #<Array:0x00000000a5b090> D, [2016-01-23T00:23:58.347502 #3068] DEBUG -- : C:/TheForeman/smart-proxy/modules/dhcp/providers/server/native_ms.rb:184:in `find_all_subnets' C:/TheForeman/smart-proxy/modules/dhcp/providers/server/native_ms.rb:197:in `loadSubnets' C:/TheForeman/smart-proxy/modules/dhcp/dhcp_api.rb:29:in `block in <class:DhcpApi>' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/sinatra-1.4.6/lib/sinatra/base.rb:1610:in `call' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/sinatra-1.4.6/lib/sinatra/base.rb:1610:in `block in compile!' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/sinatra-1.4.6/lib/sinatra/base.rb:1014:in `[]' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/sinatra-1.4.6/lib/sinatra/base.rb:1014:in `block in process_route' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/sinatra-1.4.6/lib/sinatra/base.rb:1012:in `catch' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/sinatra-1.4.6/lib/sinatra/base.rb:1012:in `process_route' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/sinatra-1.4.6/lib/sinatra/base.rb:965:in `block in filter!' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/sinatra-1.4.6/lib/sinatra/base.rb:965:in `each' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/sinatra-1.4.6/lib/sinatra/base.rb:965:in `filter!' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/sinatra-1.4.6/lib/sinatra/base.rb:1083:in `block in dispatch!' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/sinatra-1.4.6/lib/sinatra/base.rb:1066:in `block in invoke' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/sinatra-1.4.6/lib/sinatra/base.rb:1066:in `catch' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/sinatra-1.4.6/lib/sinatra/base.rb:1066:in `invoke' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/sinatra-1.4.6/lib/sinatra/base.rb:1081:in `dispatch!' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/sinatra-1.4.6/lib/sinatra/base.rb:906:in `block in call!' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/sinatra-1.4.6/lib/sinatra/base.rb:1066:in `block in invoke' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/sinatra-1.4.6/lib/sinatra/base.rb:1066:in `catch' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/sinatra-1.4.6/lib/sinatra/base.rb:1066:in `invoke' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/sinatra-1.4.6/lib/sinatra/base.rb:906:in `call!' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/sinatra-1.4.6/lib/sinatra/base.rb:894:in `call' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/rack-1.5.5/lib/rack/methodoverride.rb:21:in `call' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/rack-1.5.5/lib/rack/commonlogger.rb:33:in `call' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/sinatra-1.4.6/lib/sinatra/base.rb:218:in `call' C:/TheForeman/smart-proxy/lib/proxy/log.rb:58:in `call' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/rack-protection-1.5.3/lib/rack/protection/xss_header.rb:18:in `call' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/rack-protection-1.5.3/lib/rack/protection/path_traversal.rb:16:in `call' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/rack-protection-1.5.3/lib/rack/protection/json_csrf.rb:18:in `call' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/rack-protection-1.5.3/lib/rack/protection/base.rb:49:in `call' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/rack-protection-1.5.3/lib/rack/protection/base.rb:49:in `call' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/rack-protection-1.5.3/lib/rack/protection/frame_options.rb:31:in `call' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/rack-1.5.5/lib/rack/nulllogger.rb:9:in `call' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/rack-1.5.5/lib/rack/head.rb:11:in `call' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/sinatra-1.4.6/lib/sinatra/show_exceptions.rb:21:in `call' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/sinatra-1.4.6/lib/sinatra/base.rb:181:in `call' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/sinatra-1.4.6/lib/sinatra/base.rb:2021:in `call' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/sinatra-1.4.6/lib/sinatra/base.rb:1486:in `block in call' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/sinatra-1.4.6/lib/sinatra/base.rb:1795:in `synchronize' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/sinatra-1.4.6/lib/sinatra/base.rb:1486:in `call' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/rack-1.5.5/lib/rack/builder.rb:138:in `call' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/rack-1.5.5/lib/rack/urlmap.rb:65:in `block in call' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/rack-1.5.5/lib/rack/urlmap.rb:50:in `each' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/rack-1.5.5/lib/rack/urlmap.rb:50:in `call' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/rack-1.5.5/lib/rack/builder.rb:138:in `call' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/rack-1.5.5/lib/rack/handler/webrick.rb:60:in `service' C:/Ruby200-x64/lib/ruby/2.0.0/webrick/httpserver.rb:138:in `service' C:/Ruby200-x64/lib/ruby/2.0.0/webrick/httpserver.rb:94:in `run' C:/Ruby200-x64/lib/ruby/2.0.0/webrick/server.rb:295:in `block in start_thread'
Actions