butler-mainframe 0.8.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 905103b0a75c74a621416783ca7640547705ffc8
4
- data.tar.gz: 96016897c77be9676a6fe2de3bd6871e004a6ce7
3
+ metadata.gz: 7ef1f82ef019d80d63559e5c67ca6f5caf190916
4
+ data.tar.gz: 7560a4984f33ff6505a6cec3b08e4eb928a3bba2
5
5
  SHA512:
6
- metadata.gz: 1c859409e7690859468559bfa7bd5f25bdb884d0c0f28305e45bf953df01e508b86bd4fe3198f1f6d8c4f51439ec67c102fb8169a48c0ecf28aa681a51395661
7
- data.tar.gz: 28ccc959ee5931b50d123e2d173be2ba6f898c136f4ccb6c5c068a0b5219622801b366ad16058c26fdf78347979e89c677eb6171ef6506582a79fd4cfc959ca5
6
+ metadata.gz: fdbecce1c86b27f41c7d0a94d6a6a49437620e81b3c4ced0a047554547235be86f506a253bfaf6a8c810e914c09526127fce0c620f6b6c35a528934fc4b0ecd1
7
+ data.tar.gz: 2e2023ac2ddfbefff4dc76b3914d840b49202bd4a9cffe03bf078564b6df516c882f5bb502479838af6d0ec935510f9dd68dadf9d5980814ca11ae5f14350e78
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ 0.9.0 [☰](https://github.com/marcomd/butler-mainframe/compare/v0.8.0...v0.9.0) June 20th, 2016
2
+ ------------------------------
3
+ * PComm emulator: it attempts to start the connection if the terminal is present
4
+
1
5
  0.8.0 [☰](https://github.com/marcomd/butler-mainframe/compare/v0.7.5...v0.8.0) May 3th, 2016
2
6
  ------------------------------
3
7
  * PComm emulator: the write param 'clean_chars_before_writing' didn't work
data/Gemfile CHANGED
@@ -1,3 +1,4 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem "butler-mainframe", path: "."
3
+ gem 'rake'
4
+ gem 'butler-mainframe', path: '.'
@@ -17,7 +17,7 @@ module ButlerMainframe
17
17
  # :user => ButlerMainframe::Settings.user,
18
18
  # :password => ButlerMainframe::Settings.password,
19
19
  # :raise_on_abend => false raise an exception if an abend is occured
20
- def navigate destination, options={}
20
+ def navigate(destination, options={})
21
21
  options = {
22
22
  :session_user => ButlerMainframe::Settings.session_user,
23
23
  :session_password => ButlerMainframe::Settings.session_password,
@@ -138,7 +138,7 @@ module ButlerMainframe
138
138
  # Login to mainframe
139
139
  # param1 user(array) [text, y, x]
140
140
  # param2 password(array) [text, y, x]
141
- def session_login ar_user, ar_password
141
+ def session_login(ar_user, ar_password)
142
142
  puts "Starting session login..." if @debug
143
143
  user, y_user, x_user = ar_user
144
144
  raise "Check session user configuration! #{user} #{y_user} #{x_user}" unless user && y_user && x_user
@@ -148,8 +148,8 @@ module ButlerMainframe
148
148
  wait_session
149
149
  #inizializza_sessione
150
150
  raise "It was waiting session login map instead of: #{catch_title}" unless session_login?
151
- write user, :y => y_user, :x => x_user
152
- write password, :y => y_password, :x => x_password, :sensible_data => true
151
+ write(user, :y => y_user, :x => x_user)
152
+ write(password, :y => y_password, :x => x_password, :sensible_data => true)
153
153
  do_enter
154
154
  end
155
155
 
@@ -167,7 +167,7 @@ module ButlerMainframe
167
167
 
168
168
  wait_session
169
169
  raise "It was waiting cics selezion map instead of: #{catch_title}, message: #{catch_message}" unless cics_selection?
170
- write cics, :y => y_cics, :x => x_cics
170
+ write(cics, :y => y_cics, :x => x_cics)
171
171
  do_enter
172
172
  wait_session 1
173
173
  end
@@ -186,7 +186,7 @@ module ButlerMainframe
186
186
 
187
187
  wait_session
188
188
  raise "It was waiting company menu map instead of: #{catch_title}, message: #{catch_message}" unless company_menu?
189
- write menu, :y => y_menu, :x => x_menu
189
+ write(menu, :y => y_menu, :x => x_menu)
190
190
  do_enter
191
191
  end
192
192
 
@@ -214,31 +214,27 @@ module ButlerMainframe
214
214
 
215
215
  # Get the title usually the first row
216
216
  # You can change default option :rows to get more lines starting from the first
217
- def catch_title options={}
217
+ def catch_title(options={})
218
218
  options = {
219
219
  :rows => 1
220
220
  }.merge(options)
221
221
  scan(:y1 => 1, :x1 => 1, :y2 => options[:rows], :x2 => 80)
222
222
  end
223
- def screen_title options={}
223
+ def screen_title(options={})
224
224
  show_deprecated_method 'catch_title'
225
- catch_title options
225
+ catch_title(options)
226
226
  end
227
227
 
228
- def execute_cics name
229
- write name, :y => 1, :x => 2
228
+ def execute_cics(name)
229
+ write(name, :y => 1, :x => 2)
230
230
  do_enter
231
231
  end
232
232
 
233
- def do_enter; exec_command "ENTER" end
234
-
235
- def go_back; exec_command "PA2" end
236
-
237
- def do_confirm; exec_command "PF3" end
238
-
239
- def do_quit; exec_command "CLEAR" end
240
-
241
- def do_erase; exec_command "ERASE EOF" end
233
+ def do_enter; exec_command("ENTER") end
234
+ def go_back; exec_command("PA2") end
235
+ def do_confirm; exec_command("PF3") end
236
+ def do_quit; exec_command("CLEAR") end
237
+ def do_erase; exec_command("ERASE EOF") end
242
238
 
243
239
  end
244
240
 
@@ -8,7 +8,7 @@ module ButlerMainframe
8
8
  private
9
9
 
10
10
  # Create objects from emulator library
11
- def sub_create_object options={}
11
+ def sub_create_object(options={})
12
12
  str_obj = 'PASSPORT.System'
13
13
  puts "#{Time.now.strftime "%H:%M:%S"} Creating object #{str_obj}..." if @debug == :full
14
14
  @action[:object] = WIN32OLE.new(str_obj)
@@ -45,19 +45,19 @@ module ButlerMainframe
45
45
  end
46
46
 
47
47
  #Execute keyboard command like PF1 or PA2 or ENTER ...
48
- def sub_exec_command cmd, options={}
48
+ def sub_exec_command(cmd, options={})
49
49
  # Cast cmd to_s cause it could be passed as label
50
50
  @screen.SendKeys "<#{cmd.gsub /\s/, ''}>"
51
51
  @screen.WaitHostQuiet
52
52
  end
53
53
 
54
54
  #It reads one line part of the screen
55
- def sub_scan_row y, x, len
55
+ def sub_scan_row(y, x, len)
56
56
  @screen.GetString(y, x, len)
57
57
  end
58
58
 
59
59
  #It reads a rectangle on the screen
60
- def sub_scan_area y1, x1, y2, x2
60
+ def sub_scan_area(y1, x1, y2, x2)
61
61
  @screen.Area(y1, x1, y2, x2).Value
62
62
  end
63
63
 
@@ -67,31 +67,31 @@ module ButlerMainframe
67
67
  end
68
68
 
69
69
  # Move cursor to given coordinates
70
- def sub_set_cursor_axes y, x, options={}
70
+ def sub_set_cursor_axes(y, x, options={})
71
71
  options = {
72
72
  :wait => true
73
73
  }.merge(options)
74
- @screen.MoveTo y, x
74
+ @screen.MoveTo(y, x)
75
75
  @screen.WaitForCursor(y, x) if options[:wait]
76
76
  end
77
77
 
78
78
  # Write text on the screen at given coordinates
79
79
  # :check_protect => true add sensitivity to protected areas
80
- def sub_write_text text, y, x, options={}
80
+ def sub_write_text(text, y, x, options={})
81
81
  options = {
82
82
  :check_protect => true
83
83
  }.merge(options)
84
84
  if options[:check_protect]
85
85
  # This method is sensitive to protected areas
86
- sub_set_cursor_axes y, x
87
- @screen.SendKeys text
86
+ sub_set_cursor_axes(y, x)
87
+ @screen.SendKeys(text)
88
88
  else
89
89
  @screen.PutString(text, y, x)
90
90
  end
91
91
  end
92
92
 
93
93
  # Wait text at given coordinates and wait the session is available again
94
- def sub_wait_for_string text, y, x
94
+ def sub_wait_for_string(text, y, x)
95
95
  @screen.WaitForString(text, y, x).Value == -1
96
96
  end
97
97
 
@@ -10,13 +10,17 @@ module ButlerMainframe
10
10
  private
11
11
 
12
12
  # Create objects from emulator library
13
- def sub_create_object options={}
13
+ def sub_create_object(options={})
14
14
  str_obj = 'PComm.autECLSession'
15
15
  puts "#{Time.now.strftime "%H:%M:%S"} Creating object #{str_obj}..." if @debug == :full
16
16
  @action[:object] = WIN32OLE.new(str_obj)
17
17
  @action[:object].SetConnectionByName @session_tag
18
18
  @space = @action[:object].autECLPS
19
19
  @screen = @action[:object].autECLOIA
20
+ if @action[:object] && @action[:object].Started && !@action[:object].CommStarted
21
+ @action[:object].StartCommunication
22
+ wait_session(WAIT_AFTER_START_CONNECTION)
23
+ end
20
24
  end
21
25
 
22
26
  # Check is session is started
@@ -49,29 +53,29 @@ module ButlerMainframe
49
53
  # See http://www-01.ibm.com/support/knowledgecenter/SSEQ5Y_6.0.0/com.ibm.pcomm.doc/books/html/admin_guide10.htm?lang=en
50
54
  cmd_stop = "PCOMSTOP /S=#{@session_tag} /q"
51
55
  if /^1.8/ === RUBY_VERSION
52
- Thread.new {system cmd_stop}
56
+ Thread.new { system cmd_stop }
53
57
  else
54
- Process.spawn cmd_stop
58
+ Process.spawn(cmd_stop)
55
59
  end
56
60
  # Process.kill 9, @pid #Another way is to kill the process but the session start 2nd process pcscm.exe
57
61
  end
58
62
  end
59
63
 
60
64
  #Execute keyboard command like PF1 or PA2 or ENTER ...
61
- def sub_exec_command cmd, options={}
65
+ def sub_exec_command(cmd, options={})
62
66
  # Cast cmd to_s cause it could be passed as label
63
- @space.SendKeys "[#{cmd}]"
64
- @screen.WaitForAppAvailable @timeout
65
- @screen.WaitForInputReady @timeout
67
+ @space.SendKeys("[#{cmd}]")
68
+ @screen.WaitForAppAvailable(@timeout)
69
+ @screen.WaitForInputReady(@timeout)
66
70
  end
67
71
 
68
72
  #It reads one line part of the screen
69
- def sub_scan_row y, x, len
73
+ def sub_scan_row(y, x, len)
70
74
  @space.GetText(y, x, len)
71
75
  end
72
76
 
73
77
  #It reads a rectangle on the screen
74
- def sub_scan_area y1, x1, y2, x2
78
+ def sub_scan_area(y1, x1, y2, x2)
75
79
  @space.GetTextRect(y1, x1, y2, x2)
76
80
  end
77
81
 
@@ -81,17 +85,17 @@ module ButlerMainframe
81
85
  end
82
86
 
83
87
  # Move cursor to given coordinates
84
- def sub_set_cursor_axes y, x, options={}
88
+ def sub_set_cursor_axes(y, x, options={})
85
89
  options = {
86
90
  :wait => true
87
91
  }.merge(options)
88
- @space.SetCursorPos y, x
92
+ @space.SetCursorPos(y, x)
89
93
  @space.WaitForCursor(y, x, @timeout) if options[:wait]
90
94
  end
91
95
 
92
96
  # Write text on the screen at given coordinates
93
97
  # :check_protect => true add sensitivity to protected areas
94
- def sub_write_text text, y, x, options={}
98
+ def sub_write_text(text, y, x, options={})
95
99
  options = {
96
100
  :check_protect => true
97
101
  }.merge(options)
@@ -105,9 +109,9 @@ module ButlerMainframe
105
109
  end
106
110
 
107
111
  # Wait text at given coordinates and wait the session is available again
108
- def sub_wait_for_string text, y, x
109
- @space.WaitForString text, y, x, @timeout
110
- @screen.WaitForInputReady @timeout
112
+ def sub_wait_for_string(text, y, x)
113
+ @space.WaitForString(text, y, x, @timeout)
114
+ @screen.WaitForInputReady(@timeout)
111
115
  end
112
116
 
113
117
  end
@@ -8,14 +8,14 @@ module ButlerMainframe
8
8
 
9
9
  private
10
10
 
11
- def sub_create_object options={}
11
+ def sub_create_object(options={})
12
12
  str_obj = "#{options[:session_path]}"
13
13
  puts "#{Time.now.strftime "%H:%M:%S"} Creating object #{str_obj}..." if @debug == :full
14
14
  @action = {}
15
15
  @action[:in], @action[:out], @action[:thr] = Open3.popen2e(str_obj)
16
16
  @action[:object] = true
17
17
  sleep WAIT_AFTER_START_SESSION
18
- @pid = @action[:thr].pid
18
+ @pid = @action[:thr].pid
19
19
  end
20
20
 
21
21
  # Check is session is started
@@ -56,7 +56,7 @@ module ButlerMainframe
56
56
  x_cmd cmd
57
57
 
58
58
  command_skip_wait = %w(^erase ^delete)
59
- x_cmd "Wait(#{@timeout}, Output)" unless /(#{command_skip_wait.join('|')})/i === cmd
59
+ x_cmd("Wait(#{@timeout}, Output)") unless /(#{command_skip_wait.join('|')})/i === cmd
60
60
  end
61
61
 
62
62
  #It reads one line part of the screen
@@ -71,29 +71,29 @@ module ButlerMainframe
71
71
 
72
72
  # Get cursor coordinates
73
73
  def sub_get_cursor_axes
74
- res = x_cmd "Query(Cursor)"
75
- res.split.map{|c| c.to_i + 1}
74
+ res = x_cmd("Query(Cursor)")
75
+ res.split.map { |c| c.to_i + 1 }
76
76
  end
77
77
 
78
78
  # Move cursor to given coordinates
79
- def sub_set_cursor_axes y, x, options={}
79
+ def sub_set_cursor_axes(y, x, options={})
80
80
  options = {
81
81
  :wait => true
82
82
  }.merge(options)
83
- x_cmd "MoveCursor(#{y-1},#{x-1})"
83
+ x_cmd("MoveCursor(#{y-1},#{x-1})")
84
84
  if options[:wait]
85
- x_cmd "Wait(#{@timeout},InputField)"
85
+ x_cmd("Wait(#{@timeout},InputField)")
86
86
  raise "Positioning the cursor at the coordinates (#{y}, #{x}) failed!" unless sub_get_cursor_axes == [y, x]
87
87
  end
88
88
  end
89
89
 
90
90
  # Write text on the screen at given coordinates
91
91
  # :check_protect => true add sensitivity to protected areas
92
- def sub_write_text text, y, x, options={}
92
+ def sub_write_text(text, y, x, options={})
93
93
  options = {
94
94
  :check_protect => true
95
95
  }.merge(options)
96
- sub_set_cursor_axes y, x
96
+ sub_set_cursor_axes(y, x)
97
97
  x_cmd "String(\"#{text}\")", options
98
98
  # TODO
99
99
  # if options[:check_protect]
@@ -101,7 +101,7 @@ module ButlerMainframe
101
101
  end
102
102
 
103
103
  # Wait text at given coordinates
104
- def sub_wait_for_string text, y, x
104
+ def sub_wait_for_string(text, y, x)
105
105
  x_cmd "Wait(#{@timeout},InputField)"
106
106
  total_time = 0.0
107
107
  sleep_time = 0.5
@@ -115,7 +115,7 @@ module ButlerMainframe
115
115
  end
116
116
 
117
117
  # To communicate with executable
118
- def x_cmd cmd, options={}
118
+ def x_cmd(cmd, options={})
119
119
  puts "x_cmd in: #{options[:sensible_data] ? ('*' * cmd.size) : cmd}" if @debug == :full
120
120
  @action[:in].print "#{cmd}\n"
121
121
  @action[:in].flush
@@ -9,11 +9,12 @@ module ButlerMainframe
9
9
  attr_reader :action, :wait
10
10
  attr_accessor :debug, :close_session
11
11
 
12
- MAX_TERMINAL_COLUMNS = 80
13
- MAX_TERMINAL_ROWS = 24
14
- WAIT_AFTER_START_SESSION = 3 #SECONDS
12
+ MAX_TERMINAL_COLUMNS = 80
13
+ MAX_TERMINAL_ROWS = 24
14
+ WAIT_AFTER_START_CONNECTION = 1 #SECONDS
15
+ WAIT_AFTER_START_SESSION = 3 #SECONDS
15
16
 
16
- def initialize options={}
17
+ def initialize(options={})
17
18
  options = {
18
19
  :session_tag => ButlerMainframe.configuration.session_tag,
19
20
  :wait => 0.01, # wait screen in seconds
@@ -74,33 +75,33 @@ module ButlerMainframe
74
75
 
75
76
 
76
77
  # Sleep time between operations
77
- def wait_session wait=nil
78
+ def wait_session(wait=nil)
78
79
  sleep(wait || (@debug ? @wait_debug : @wait))
79
80
  end
80
81
 
81
82
  # Execute keyboard command like PF1 or PA2 or ENTER ...
82
- def exec_command cmd
83
+ def exec_command(cmd)
83
84
  puts "Command: #{cmd}" if @debug
84
85
  sub_exec_command cmd
85
86
  wait_session
86
87
  end
87
88
 
88
89
  # It reads one line or an area on the screen according to parameters supplied
89
- def scan options={}
90
+ def scan(options={})
90
91
  options = {
91
92
  :y => nil, :x => nil, :len => nil,
92
93
  :y1 => nil, :x1 => nil, :y2 => nil, :x2 => nil,
93
94
  }.merge(options)
94
95
  if options[:len]
95
- scan_row options[:y], options[:x], options[:len]
96
+ scan_row(options[:y], options[:x], options[:len])
96
97
  else
97
- scan_area options[:y1], options[:x1], options[:y2], options[:x2]
98
+ scan_area(options[:y1], options[:x1], options[:y2], options[:x2])
98
99
  end
99
100
  end
100
101
 
101
102
  # Scans and returns the text of the entire page
102
103
  def scan_page
103
- scan_area 1, 1, MAX_TERMINAL_ROWS, MAX_TERMINAL_COLUMNS
104
+ scan_area(1, 1, MAX_TERMINAL_ROWS, MAX_TERMINAL_COLUMNS)
104
105
  end
105
106
 
106
107
  # Write text on screen at the coordinates
@@ -114,7 +115,7 @@ module ButlerMainframe
114
115
  # :sensible_data => nil,
115
116
  # :clean_chars_before_writing => nil, # clean x chars before writing a value, it switch off erase_before_writing
116
117
  # :erase_before_writing => nil # execute an erase until end of field before write a text
117
- def write text, options={}
118
+ def write(text, options={})
118
119
  options = show_deprecated_param(:erase_field_first, :erase_before_writing, options) if options[:erase_field_first]
119
120
  options = show_deprecated_param(:clean_first_chars, :clean_chars_before_writing, options) if options[:clean_first_chars]
120
121
  options = {
@@ -129,10 +130,8 @@ module ButlerMainframe
129
130
  }.merge(options)
130
131
  options[:erase_before_writing] = false if options[:clean_chars_before_writing]
131
132
 
132
- y = options[:y]
133
- x = options[:x]
134
- y ||= get_cursor_axes[0]
135
- x ||= get_cursor_axes[1]
133
+ y = options[:y] || get_cursor_axes[0]
134
+ x = options[:x] || get_cursor_axes[1]
136
135
 
137
136
  hooked_rows = 2
138
137
  raise "Missing coordinates! y(row)=#{y} x(column)=#{x} " unless x && y
@@ -143,7 +142,7 @@ module ButlerMainframe
143
142
  (y-hooked_rows..y+hooked_rows).each do |row_number|
144
143
  if /#{options[:hook]}/ === scan_row(row_number, 1, MAX_TERMINAL_COLUMNS)
145
144
  puts "Change y from #{y} to #{row_number} cause hook to:#{options[:hook]}" if row_number != y && @debug
146
- bol_written = write_text_on_map text, row_number, x, options
145
+ bol_written = write_text_on_map(text, row_number, x, options)
147
146
  break
148
147
  end
149
148
  end
@@ -160,8 +159,8 @@ module ButlerMainframe
160
159
  end
161
160
 
162
161
  # Move the cursor at given coordinates
163
- def set_cursor_axes y, x, options={}
164
- sub_set_cursor_axes y, x, options
162
+ def set_cursor_axes(y, x, options={})
163
+ sub_set_cursor_axes(y, x, options)
165
164
  end
166
165
 
167
166
  private
@@ -171,7 +170,7 @@ module ButlerMainframe
171
170
  # These are the options with default values:
172
171
  # :session_tag => Fixnum, String or null depending on emulator
173
172
  # :debug => boolean
174
- def create_object options={}
173
+ def create_object(options={})
175
174
  connection_attempts = 10
176
175
  seconds_between_attempts = 1
177
176
 
@@ -224,7 +223,7 @@ module ButlerMainframe
224
223
  # :browser_path => browser executable path, default value ButlerMainframe::Settings.browser_path (used by web emulator)
225
224
  # :session_url => the session url used by browser
226
225
  # :session_path => terminal session executable path, default value ButlerMainframe::Settings.session_path
227
- def start_terminal_session options
226
+ def start_terminal_session(options)
228
227
  # Check configuration to know emulator starting type
229
228
  executable, args = if options[:browser_path] && !options[:browser_path].empty?
230
229
  [options[:browser_path], options[:session_url]]
@@ -248,22 +247,22 @@ module ButlerMainframe
248
247
  end
249
248
 
250
249
  #It reads one line on the screen
251
- def scan_row y, x, len
252
- str = sub_scan_row y, x, len
250
+ def scan_row(y, x, len)
251
+ str = sub_scan_row(y, x, len)
253
252
  puts "Scan row y:#{y} x:#{x} lungo:#{len} = #{str}" if @debug
254
253
  str
255
254
  end
256
255
 
257
256
  #It reads a rectangle on the screen
258
- def scan_area y1, x1, y2, x2
259
- str = sub_scan_area y1, x1, y2, x2
257
+ def scan_area(y1, x1, y2, x2)
258
+ str = sub_scan_area(y1, x1, y2, x2)
260
259
  puts "Scan area y1:#{y1} x1:#{x1} y2:#{y2} x2:#{x2} = #{str}" if @debug
261
260
  str
262
261
  end
263
262
 
264
263
  # Write a text on the screen
265
264
  # It also contains the logic to control the successful writing
266
- def write_text_on_map text, y, x, options={}
265
+ def write_text_on_map(text, y, x, options={})
267
266
  options = {
268
267
  :check => true,
269
268
  :raise_error_on_check => true,
@@ -281,17 +280,17 @@ module ButlerMainframe
281
280
  end
282
281
 
283
282
  if options[:erase_before_writing]
284
- set_cursor_axes y, x
283
+ set_cursor_axes(y, x)
285
284
  do_erase
286
285
  end
287
286
 
288
- sub_write_text text, y, x, :check_protect => options[:check]
287
+ sub_write_text(text, y, x, :check_protect => options[:check])
289
288
  res = true
290
289
  # If check is required it verify text is on the screen at given coordinates
291
290
  # Sensible data option disable the check because it could be on hidden fields
292
291
  if options[:check] && !options[:sensible_data]
293
292
  # It expects the string is present on the session at the specified coordinates
294
- unless sub_wait_for_string text, y, x
293
+ unless sub_wait_for_string(text, y, x)
295
294
  if options[:raise_error_on_check]
296
295
  raise "write_text_on_map: Impossible to write #{options[:sensible_data] ? ('*' * text.size) : text} at row #{y} column #{x}"
297
296
  else
@@ -302,18 +301,18 @@ module ButlerMainframe
302
301
  res
303
302
  end
304
303
 
305
- def show_deprecated_param old, new, params={}
304
+ def show_deprecated_param(old, new, params={})
306
305
  #Ruby 2+ caller_locations(1,1)[0].label
307
306
  puts "[DEPRECATION] please use param :#{new} instead of :#{old} for method #{caller[0][/`([^']*)'/, 1]}"
308
307
  # Creating new param with the value of the old param
309
308
  {new => params[old]}.merge(params)
310
309
  end
311
- def show_deprecated_method new
310
+ def show_deprecated_method(new)
312
311
  puts "[DEPRECATION] please use #{new} method instead of #{caller[0][/`([^']*)'/, 1]}"
313
312
  end
314
313
 
315
314
  # If is called a not existing method there is the chance that an optional module may not have been added
316
- def method_missing method_name, *args
315
+ def method_missing(method_name, *args)
317
316
  raise NoMethodError, "Method #{method_name} not found! Please check you have included any optional modules"
318
317
  end
319
318
 
data/test/test.rake CHANGED
@@ -99,7 +99,7 @@ def simple_iteration options={}
99
99
 
100
100
  navigate host, :session_login
101
101
 
102
- host.close_session
102
+ host.quit
103
103
  end
104
104
 
105
105
  # Easy navigation for rake test
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: butler-mainframe
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marco Mastrodonato
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-03 00:00:00.000000000 Z
11
+ date: 2016-06-20 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: This gem provides a virtual butler which can perform your custom tasks
14
14
  on a 3270 emulator. Choose your emulator, configure your task and discover a new