echi-converter 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -102,4 +102,14 @@
102
102
  * Changed 'echi_ftp_delete:' default setting to 'Y'
103
103
  * A fair amount of internal code refactoring
104
104
  * Bug fix(es):
105
- * Fixed bug so that the log file properly reports when a file is processed
105
+ * Fixed bug so that the log file properly reports when a file is processed
106
+
107
+ == 0.3.1 2007-11-TBD
108
+
109
+ * Major enhancement(s):
110
+ * Minor enhancement(s):
111
+ * Removed the need for the default install requirement, Ruby may now be installed anywhere on the Windows system (FR#15302)
112
+ * Modified the return status when creating or manipulating a Windows service
113
+ * Add the 'echi-converter status' command to check the status of a Windows service
114
+ * Bug fix(es):
115
+ * Fixed bug #15293, the service now exists cleanly
@@ -19,6 +19,7 @@ if RUBY_PLATFORM["-mswin32"]
19
19
  echi-converter stop - stop the service
20
20
  echi-converter pause - pause the service
21
21
  echi-converter resume - resume the service
22
+ echi-converter status - check the status of a configured service
22
23
  echi-converter uninstall - uninstall the service
23
24
  echi-converter delete - delete the service"
24
25
  else
@@ -102,9 +103,10 @@ end
102
103
 
103
104
  #Launches as a Windows Service
104
105
  def launch_service run_type, project_name
105
- service_status = nil
106
106
  if project_name != nil
107
- service_exe = "c:\\ruby\\bin\\rubyw.exe " + project_name + "\\lib\\main_win32.rb"
107
+ rubyw_path = Config::CONFIG["bindir"] + "/" + Config::CONFIG["RUBYW_INSTALL_NAME"] + Config::CONFIG["EXEEXT"]
108
+ rubyw_path = rubyw_path.gsub("/","\\")
109
+ service_exe = '"' + rubyw_path + '" "' + project_name + "\\lib\\main_win32.rb" + '"'
108
110
  end
109
111
  begin
110
112
  case run_type
@@ -112,25 +114,32 @@ def launch_service run_type, project_name
112
114
  s = Service.new()
113
115
  s.create_service { |s|
114
116
  s.service_name = "ECHI-Converter"
115
- s.binary_path_name = service_exe
117
+ s.binary_path_name = service_exe.gsub(" ","\s")
116
118
  #s.service_type = Service::AUTO_START
117
119
  s.display_name = "ECHI-Converter"
118
120
  s.service_description = "ECHI-Converter Service for " + project_name
119
121
  }
120
122
  s.close
123
+ service_status = "Service successfully created."
121
124
  when "start"
122
- Service.start("ECHI-Converter")
125
+ service_status = Service.start("ECHI-Converter")
126
+ service_status = "Service successfully started"
123
127
  when "stop"
124
- Service.stop("ECHI-Converter")
128
+ service_status = Service.stop("ECHI-Converter")
129
+ service_status = "Service successfully stopped"
125
130
  when "pause"
126
- Service.pause("ECHI-Converter")
131
+ service_status = Service.pause("ECHI-Converter")
132
+ service_status = "Service successfully paused"
127
133
  when "resume"
128
- Service.resume("ECHI-Converter")
134
+ service_status = Service.resume("ECHI-Converter")
135
+ service_status = "Service successfully resumed"
129
136
  when "delete"
130
137
  Service.delete("ECHI-Converter")
138
+ service_status = "Service successfully deleted"
139
+ when "status"
140
+ service_status = Service.status("ECHI-Converter").current_state
131
141
  end
132
- service_status = Service.status("ECHI-Converter")
133
- return service_status.current_state
142
+ return service_status
134
143
  rescue => err
135
144
  return err
136
145
  end
@@ -243,7 +243,6 @@ module EchiConverter
243
243
  def fetch_ftp_files
244
244
  attempts = 0
245
245
  ftp_session = -1
246
- files_to_process = Array.new
247
246
  while ftp_session == -1 do
248
247
  ftp_session = connect_ftpsession
249
248
  if ftp_session == -1
@@ -262,12 +261,9 @@ module EchiConverter
262
261
  files = ftp_session.list('chr*')
263
262
  file_cnt = 0
264
263
  files.each do | file |
265
- #ACTION: Need to detect which OS we are running on and then parse the ftp data appropriately
266
264
  file_data = file.split(' ')
267
- remote_filename = file_data[8]
268
- local_filename = $workingdir + '/../files/to_process/' + remote_filename
269
- ftp_session.getbinaryfile(remote_filename, local_filename)
270
- files_to_process[file_cnt] = remote_filename
265
+ local_filename = $workingdir + '/../files/to_process/' + file_data[8]
266
+ ftp_session.getbinaryfile(file_data[8], local_filename)
271
267
  if $config["echi_ftp_delete"] == 'Y'
272
268
  begin
273
269
  ftp_session.delete(remote_filename)
@@ -282,7 +278,7 @@ module EchiConverter
282
278
  @log.fatal "Could not fetch from ftp server - " + err
283
279
  end
284
280
  end
285
- return files_to_process
281
+ return
286
282
  end
287
283
  end
288
284
 
@@ -2,7 +2,7 @@ module EchiConverter #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 3
5
- TINY = 0
5
+ TINY = 1
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
@@ -35,7 +35,7 @@ end
35
35
  #Our Main loop
36
36
  loop do
37
37
  #Process the files
38
- ftp_files = fetch_ftp_files
38
+ fetch_ftp_files
39
39
  #Grab filenames from the to_process directory after an FTP fetch, so if the
40
40
  #system fails it may pick up where it left off
41
41
  to_process_dir = $workingdir + "/../files/to_process/"
@@ -9,7 +9,20 @@ class EchiDaemon < Daemon
9
9
  require $workingdir + '/echi-converter.rb'
10
10
  include EchiConverter
11
11
 
12
- def initialize
12
+ def service_stop
13
+ @log.info "ECHI-Converter service stopped"
14
+ @log.close
15
+ end
16
+
17
+ def service_pause
18
+ @log.info "ECHI-Converter service paused"
19
+ end
20
+
21
+ def service_resume
22
+ @log.info "ECHI-Converter service resumed"
23
+ end
24
+
25
+ def service_init
13
26
  #Open the configuration file
14
27
  configfile = $workingdir + '/../config/application.yml'
15
28
  $config = YAML::load(File.open(configfile))
@@ -27,53 +40,53 @@ class EchiDaemon < Daemon
27
40
 
28
41
  #Open the logfile with appropriate output level
29
42
  initiate_logger
30
-
43
+ @log.info "ECHI-Converter service initializing"
44
+
31
45
  #If configured for database insertion, connect to the database
32
46
  if $config["export_type"] == 'database' || $config["export_type"] == 'both'
33
47
  connect_database
34
48
  end
35
-
36
- @log.info "Running..."
37
49
  end
38
50
 
39
51
  def service_main
40
- loop do
41
- #Process the files
42
- ftp_files = fetch_ftp_files
43
- #Grab filenames from the to_process directory after an FTP fetch, so if the
44
- #system fails it may pick up where it left off
45
- to_process_dir = $workingdir + "/../files/to_process/"
52
+ @log.info "ECHI-Converter service started"
53
+ while running?
54
+ if state == RUNNING
55
+ #Process the files
56
+ fetch_ftp_files
57
+ #Grab filenames from the to_process directory after an FTP fetch, so if the
58
+ #system fails it may pick up where it left off
59
+ to_process_dir = $workingdir + "/../files/to_process/"
46
60
 
47
- #Establish where to copy the processed files to
48
- @processeddirectory = set_directory($workingdir)
61
+ #Establish where to copy the processed files to
62
+ @processeddirectory = set_directory($workingdir)
49
63
 
50
- Dir.entries(to_process_dir).each do | file |
51
- if file.slice(0,3) == 'chr'
52
- if $config["echi_format"] == 'BINARY'
53
- record_cnt = convert_binary_file file
54
- elsif $config["echi_format"] == 'ASCII'
55
- record_cnt = process_ascii file
64
+ Dir.entries(to_process_dir).each do | file |
65
+ if file.slice(0,3) == 'chr'
66
+ if $config["echi_format"] == 'BINARY'
67
+ record_cnt = convert_binary_file file
68
+ elsif $config["echi_format"] == 'ASCII'
69
+ record_cnt = process_ascii file
70
+ end
71
+ @log.info "Processed file #{file} with #{record_cnt.to_s} records"
56
72
  end
57
- @log.info "Processed file #{file} with #{record_cnt.to_s} records"
58
73
  end
59
- end
60
74
 
61
- sleep $config["fetch_interval"]
75
+ sleep $config["fetch_interval"]
62
76
 
63
- #Make sure we did not lose our database connection while we slept
64
- if ActiveRecord::Base.connected? == 'FALSE'
65
- connect_database
77
+ #Make sure we did not lose our database connection while we slept
78
+ if ActiveRecord::Base.connected? == 'FALSE'
79
+ connect_database
80
+ end
81
+ end
82
+
83
+ if state == PAUSED
84
+ @log.info "ECHI-Converter service paused"
85
+ sleep $config["fetch_interval"]
66
86
  end
67
87
  end
68
88
  end
69
-
70
- def service_cleanup
71
- #Close the logfile
72
- @log.info "Shutdown..."
73
- @log.close
74
- end
75
89
  end
76
90
 
77
91
  d = EchiDaemon.new
78
- d.mainloop
79
- d.service_cleanup
92
+ d.mainloop
@@ -33,7 +33,7 @@
33
33
  <h1>ECHI Converter</h1>
34
34
  <div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/echi-converter"; return false'>
35
35
  <p>Get Version</p>
36
- <a href="http://rubyforge.org/projects/echi-converter" class="numbers">0.3.0</a>
36
+ <a href="http://rubyforge.org/projects/echi-converter" class="numbers">0.3.1</a>
37
37
  </div>
38
38
  <h1>&#x2192; &#8216;echi-converter&#8217;</h1>
39
39
 
@@ -87,7 +87,7 @@
87
87
  <li><a href="http://daemons.rubyforge.org/">Daemons v1.0.7+</a></li>
88
88
  <li><a href="http://fastercsv.rubyforge.org/">FasterCSV v1.2.0+</a></li>
89
89
  <li><a href="http://rake.rubyforge.org/">Rake v0.7.3+</a>
90
- # <a href="http://win32utils.rubyforge.org/">Win32-service v.0.5.2+</a> (Manual install for Windows only)</li>
90
+ # <a href="http://win32utils.rubyforge.org/">Win32-service v.0.5.0+</a> (Manual install for Windows only)</li>
91
91
  <li><a href="http://rubyforge.org/projects/seattlerb/">Hoe v1.2.2+</a></li>
92
92
  </ol>
93
93
 
@@ -161,11 +161,12 @@
161
161
 
162
162
 
163
163
  <ol>
164
- <li>echi-converter install myproject &#8211; install the service (must specify complete path such as c:\path\to\my\project )</li>
164
+ <li>echi-converter install myproject &#8211; install the service (must specify complete path such as c:\path\to\my\project &#8211; if the directory name or path has any spaces, please enclose the &#8216;myproject&#8217; in double quotes )</li>
165
165
  <li>echi-converter start &#8211; start the service</li>
166
166
  <li>echi-converter stop &#8211; stop the service</li>
167
167
  <li>echi-converter pause &#8211; pause the service</li>
168
168
  <li>echi-converter resume &#8211; resume the service</li>
169
+ <li>echi-converter status &#8211; returns the status of a configured service</li>
169
170
  <li>echi-converter uninstall &#8211; uninstall the service</li>
170
171
  <li>echi-converter delete &#8211; delete the service&#8221;</li>
171
172
  </ol>
@@ -184,21 +185,6 @@
184
185
 
185
186
  <pre syntax="ruby">echi-converter stop myproject</pre>
186
187
 
187
- <h2>Limitations</h2>
188
-
189
-
190
- <p>Items to be done to move this out of alpha stage:</p>
191
-
192
-
193
- <ol>
194
- <li>There are currently two limitations when running on Windows
195
- <ol>
196
- <li>Project directories may not have spaces</li>
197
- <li>The Ruby interpreter must be installed in the default location of c:\ruby\bin</li>
198
- </ol></li>
199
- </ol>
200
-
201
-
202
188
  <h2>Screencast</h2>
203
189
 
204
190
 
@@ -231,7 +217,7 @@
231
217
 
232
218
  <p>Comments are welcome. Send an email to <a href="mailto:jason@goecke.net">jason [at] goecke.net</a>.</p>
233
219
  <p class="coda">
234
- <a href="mailto:drnicwilliams@gmail.com">Dr Nic</a>, 2nd November 2007<br>
220
+ <a href="mailto:drnicwilliams@gmail.com">Dr Nic</a>, 4th November 2007<br>
235
221
  Theme extended from <a href="http://rb2js.rubyforge.org/">Paul Battley</a>
236
222
  </p>
237
223
  </div>
@@ -38,8 +38,8 @@ h2. Requirements
38
38
  # "Daemons v1.0.7+":http://daemons.rubyforge.org/
39
39
  # "FasterCSV v1.2.0+":http://fastercsv.rubyforge.org/
40
40
  # "Rake v0.7.3+":http://rake.rubyforge.org/
41
- # "Win32-service v.0.5.2+":http://win32utils.rubyforge.org/ (Manual install for Windows only)
42
- # "Hoe v1.2.2+":http://rubyforge.org/projects/seattlerb/
41
+ # "Win32-service v.0.5.0+":http://win32utils.rubyforge.org/ (Manual install for Windows only)
42
+ # "Hoe v1.2.2+":http://rubyforge.org/projects/seattlerb/
43
43
 
44
44
 
45
45
  h2. Installing
@@ -86,11 +86,12 @@ For *NIX:
86
86
 
87
87
  For Windows:
88
88
 
89
- # echi-converter install myproject - install the service (must specify complete path such as c:\path\to\my\project )
89
+ # echi-converter install myproject - install the service (must specify complete path such as c:\path\to\my\project - if the directory name or path has any spaces, please enclose the 'myproject' in double quotes )
90
90
  # echi-converter start - start the service
91
91
  # echi-converter stop - stop the service
92
92
  # echi-converter pause - pause the service
93
93
  # echi-converter resume - resume the service
94
+ # echi-converter status - returns the status of a configured service
94
95
  # echi-converter uninstall - uninstall the service
95
96
  # echi-converter delete - delete the service"
96
97
 
@@ -104,15 +105,6 @@ Stop the daemon/service:
104
105
 
105
106
  <pre syntax="ruby">echi-converter stop myproject</pre>
106
107
 
107
-
108
- h2. Limitations
109
-
110
- Items to be done to move this out of alpha stage:
111
-
112
- # There are currently two limitations when running on Windows
113
- ## Project directories may not have spaces
114
- ## The Ruby interpreter must be installed in the default location of c:\ruby\bin
115
-
116
108
  h2. Screencast
117
109
 
118
110
  You may view the screencast on howto install and use the ECHI-Converter "here":http://www.screencast.com/t/lQQkIVkUZMr.
@@ -121,7 +113,6 @@ h2. Forum
121
113
 
122
114
  "Google Groups - ECHI Converter":http://groups.google.com/group/echi-converter
123
115
 
124
-
125
116
  h2. How to submit patches
126
117
 
127
118
  Read the "8 steps for fixing other people's code":http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/ and for section "8b: Submit patch to Google Groups":http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/#8b-google-groups, use the Google Group above.
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.4
3
3
  specification_version: 1
4
4
  name: echi-converter
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.3.0
7
- date: 2007-11-03 00:00:00 -07:00
6
+ version: 0.3.1
7
+ date: 2007-11-04 00:00:00 -07:00
8
8
  summary: ECHI Conversion Utility - Provides a utility to fetch Avaya CMS / ECHI binary files, convert them and insert into a database table via ActiveRecord
9
9
  require_paths:
10
10
  - lib