rutema_web 1.0.0 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,3 +1,8 @@
1
+ === 1.0.2 / 2009-09-10
2
+ * Cleared up the gem dependencies
3
+ * Upgraded gruff
4
+ === 1.0.1 / 2009-07-31
5
+ * not executed test cases now show up in the statistics graphs in yellow. This gives us the trend in test case numbers
1
6
  === 1.0.0 / 2009-07-17
2
7
  * updated gem dependencies for active_record (2.3.2)
3
8
  * renamed gem to rutema_web for consistency
@@ -6,6 +11,7 @@
6
11
  * gem dependencies are enforced in a separate file
7
12
  * fixed the folding javascript - now using jQuery
8
13
  * updated the project infrastructure (hoe etc.)
14
+
9
15
  === 0.9.5 / 2008-11-28
10
16
  * Overlooked conditional in Statistics index action fixed
11
17
  === 0.9.4 / 2008-11-28
data/README.txt CHANGED
@@ -1,7 +1,7 @@
1
- rutemaweb http://patir.rubyforge.org/rutema
1
+ rutema_web http://patir.rubyforge.org/rutema
2
2
 
3
3
  == DESCRIPTION:
4
- rutemaweb is the web frontend for rutema.
4
+ rutema_web is the web frontend for rutema.
5
5
 
6
6
  It can be used as a viewer for database files created with the rutema ActiveRecord reporter.
7
7
  It also provides you with some basic statistics about the tests in your database in the form of
@@ -10,25 +10,25 @@ diagrams of debatable aesthetics but undoubtable value!
10
10
  == FEATURES/PROBLEMS:
11
11
 
12
12
  == SYNOPSIS:
13
- rutemaweb [results.db] and browse to http://localhost:7000 for the glorious view
13
+ rutema_web [results.db] and browse to http://localhost:7000 for the glorious view
14
14
 
15
15
  == REQUIREMENTS:
16
16
  * patir (http://patir.rubyforge.org)
17
+ * rutema (http://patir.rubyforge.org/rutema)
17
18
  * activerecord (http://ar.rubyonrails.com/)
18
19
  * sqlite3 (http://rubyforge.org/projects/sqlite-ruby/)
19
- * ramaze (http://www.ramaze.net/)
20
+ * sinatra (http://www.sinatrarb.com/)
20
21
  * ruport (http://rubyreports.org/)
21
22
  * acts_as_reportable
22
- * erubis
23
23
  * gruff/RMagick (optional, but needed if you want to see the statistics graphs)
24
24
 
25
25
  == INSTALL:
26
- * sudo gem install rutemaweb
26
+ * sudo gem install rutema_web
27
27
 
28
28
  == LICENSE:
29
29
  (The Ruby License)
30
30
 
31
- rutema is copyright (c) 2007 Vassilis Rizopoulos
31
+ rutema is copyright (c) 2007 - 2009 Vassilis Rizopoulos
32
32
 
33
33
  You can redistribute it and/or modify it under either the terms of the GPL
34
34
  (see COPYING.txt file), or the conditions below:
data/Rakefile CHANGED
@@ -14,13 +14,10 @@ Hoe.spec('rutema_web') do |p|
14
14
  p.description = p.paragraphs_of('README.txt', 1..5).join("\n\n")
15
15
  p.url = p.paragraphs_of('README.txt', 0).first.split(/\n/)[1..-1]
16
16
  p.changes = p.paragraphs_of('History.txt', 0..1).join("\n\n")
17
- p.extra_deps<<['patir',">=0.6.0"]
18
- p.extra_deps<<['rutema',"=1.0.5"]
19
- p.extra_deps<<['activerecord','=2.3.2']
20
- p.extra_deps<<['sinatra','=0.9.2']
17
+ p.extra_deps<<['rutema',"1.0.7"]
18
+ p.extra_deps<<['sinatra','0.9.2']
21
19
  p.extra_deps<<['ruport','1.6.1']
22
- p.extra_deps<<['acts_as_reportable','=1.1.1']
23
- p.extra_deps<<['gruff','0.3.4']
20
+ p.extra_deps<<['gruff','0.3.6']
24
21
  p.spec_extras={:executables=>["rutema_web"],
25
22
  :default_executable=>"rutema_web"}
26
23
  end
@@ -1,10 +1,4 @@
1
- gem 'sinatra','=0.9.2'
2
- gem 'activerecord','=2.3.2'
3
- gem 'rutema',"=1.0.5"
4
- gem 'patir',"=0.6.1"
5
- gem 'ruport','=1.6.1'
6
- gem 'acts_as_reportable','=1.1.1'
7
- begin
8
- gem 'gruff',"=0.3.4"
9
- rescue
10
- end
1
+ gem 'sinatra','0.9.2'
2
+ gem 'rutema',"1.0.7"
3
+ gem 'ruport','1.6.1'
4
+ gem 'gruff',"0.3.6"
@@ -8,7 +8,7 @@ module RutemaWeb
8
8
  module Version
9
9
  MAJOR=1
10
10
  MINOR=0
11
- TINY=0
11
+ TINY=2
12
12
  STRING=[ MAJOR, MINOR, TINY ].join( "." )
13
13
  end
14
14
  #Starts App
@@ -36,7 +36,11 @@ module Rutema
36
36
  end
37
37
  #number of unsuccessful scenarios (does not count setup or teardown scripts)
38
38
  def number_of_failed
39
- self.scenarios.select{|sc| !sc.success? && sc.is_test? }.size
39
+ self.scenarios.select{|sc| !sc.success? && !sc.not_executed? && sc.is_test? }.size
40
+ end
41
+ #number of scenarios that did not run (does not count setup or teardown scripts)
42
+ def number_of_not_executed
43
+ self.scenarios.select{|sc| sc.not_executed? && sc.is_test? }.size
40
44
  end
41
45
  #returns the number of actual tests (so, don't take into account setup or teardown tests)
42
46
  def number_of_tests
@@ -69,6 +73,12 @@ module Rutema
69
73
  def success?
70
74
  return self.status=="success"
71
75
  end
76
+ def not_executed?
77
+ return self.status=="not_executed"
78
+ end
79
+ def fail?
80
+ return self.status=="error"
81
+ end
72
82
  end
73
83
  end
74
84
  end
@@ -10,8 +10,7 @@ body {
10
10
  table {
11
11
  font: 0.9em Tahoma, sans-serif;
12
12
  color: #666666;
13
- text-align: left;
14
-
13
+ text-align: left;
15
14
  }
16
15
  #logo{float:left; background-image:url(/images/tie_logo.gif); width:234px; height:213px;}
17
16
  #topheader{float:right; width:566px; height:97px; background-color:#F0F0F0; position:relative}
@@ -102,4 +101,34 @@ table {
102
101
  }
103
102
  .vtable tr td {
104
103
  text-align: left;
104
+ }
105
+ td.success{
106
+ background-color:#00FF00;
107
+ }
108
+ td.error{
109
+ background-color:#FF0000;
110
+ }
111
+ td.not_executed{
112
+ background-color:#FFFF00;
113
+ }
114
+ table.timeline{
115
+ font: 0.9em Tahoma, sans-serif;
116
+ color: #666666;
117
+ text-align: center;
118
+ }
119
+ span.timeline{
120
+ text-align: center;
121
+ }
122
+ a.timeline{
123
+ font: 0.5em Tahoma, sans-serif;
124
+ font-size: 10px;
125
+ font-weight:bold;
126
+ color:#000000;
127
+ text-decoration:none;
128
+ }
129
+ .timeline {
130
+ font: 0.5em Tahoma, sans-serif;
131
+ font-size: 10px;
132
+ font-weight:bold;
133
+ color:#999999;
105
134
  }
@@ -1,16 +1,16 @@
1
- function toggleFolding(){
2
- $(".scenario_output").hide();
3
- $(".scenario_error").hide();
4
- $(".scenario_output").parents("td").prepend("<a class=\"output_link\" href='' title='read the output log'>output</a>");
5
- $(".scenario_error").parents("td").prepend("<a class=\"error_link\" href='' title='read the error log'>errors</a>");
6
- $("a.output_link").click(function(event){
7
- $(this).parents("td").children(".scenario_output").toggle();
1
+ function toggleFolding(container,container_parent,prepend_txt,link){
2
+ $(container).hide();
3
+ $(container).parents(container_parent).prepend(prepend_txt);
4
+ $(link).click(function(event){
5
+ $(this).parents(container_parent).children(container).toggle();
8
6
  // Stop the link click from doing its normal thing
9
7
  event.preventDefault();
10
8
  });
11
- $("a.error_link").click(function(event){
12
- $(this).parents("td").children(".scenario_error").toggle();
13
- // Stop the link click from doing its normal thing
14
- event.preventDefault();
15
- });
16
- };
9
+ };
10
+
11
+ function setupFolding()
12
+ {
13
+ toggleFolding(".scenario_output","td","<a class=\"output_link\" href='' title='read the output log'>output</a>","a.output_link");
14
+ toggleFolding(".scenario_error","td","<a class=\"error_link\" href='' title='read the error log'>errors</a>","a.error_link");
15
+
16
+ };
@@ -60,7 +60,7 @@ module RutemaWeb
60
60
  end
61
61
  return msg
62
62
  end
63
-
63
+
64
64
  def run_link r
65
65
  "<a class=\"smallgreytext\" href=\"#{run_url(r)}\">Run #{r.id}</a>"
66
66
  end
@@ -147,10 +147,10 @@ module RutemaWeb
147
147
  rescue LoadError
148
148
  self.gruff_working=false
149
149
  end
150
-
150
+
151
151
  private
152
152
  #returns a jpg blob
153
- def runs_graph_jpg successful,failed,labels
153
+ def runs_graph_jpg successful,failed,not_executed,labels
154
154
  graph=Gruff::StackedBar.new(640)
155
155
  graph.theme = {
156
156
  :colors => %w(green red yellow blue),
@@ -160,6 +160,7 @@ module RutemaWeb
160
160
  graph.x_axis_label="#{successful.size} runs"
161
161
  graph.data("successful",successful)
162
162
  graph.data("failed",failed)
163
+ graph.data("not executed",not_executed)
163
164
  graph.labels=labels
164
165
  graph.marker_font_size=12
165
166
  return graph.to_blob("PNG")
@@ -178,11 +179,12 @@ module RutemaWeb
178
179
  return ret
179
180
  end
180
181
  end
181
-
182
+
182
183
  class SinatraApp<Sinatra::Base
183
184
  include ViewUtilities
184
185
  include Settings
185
186
  include Statistics
187
+ attr_accessor :title,:panel_content,:content_title,:content
186
188
  enable :logging
187
189
  enable :run
188
190
  enable :static
@@ -194,28 +196,14 @@ module RutemaWeb
194
196
  @@logger = Patir.setup_logger
195
197
 
196
198
  get '/' do
197
- @title="Rutema"
198
- @panel_content=panel_runs
199
- @content_title="Welcome to Rutema"
200
- @content="<p>This is the rutema web interface.<br/>It allows you to browse the contents of the test results database.</p><p>Currently you can view the results for each separate run, the results for a specific scenario (a complete list of all steps executed in the scenario with standard and error output logs) or the complete execution history of a scenario.</p><p>The panel on the left shows a list of the ten most recent runs.</p>"
199
+ page_setup "Rutema",panel_runs,"Welcome to Rutema","<p>This is the rutema web interface.<br/>It allows you to browse the contents of the test results database.</p><p>Currently you can view the results for each separate run, the results for a specific scenario (a complete list of all steps executed in the scenario with standard and error output logs) or the complete execution history of a scenario.</p><p>The panel on the left shows a list of the ten most recent runs.</p>"
201
200
  erb :layout
202
201
  end
203
-
204
- get '/runs/:page' do |page|
205
- runs(page)
206
- erb :layout
207
- end
208
202
  #Displays the details of a run
209
203
  #
210
204
  #Routes to /runs if no id is provided
211
205
  get '/run/:run_id' do |run_id|
212
- @panel_content=nil
213
- if !run_id.empty?
214
- @panel_content=panel_runs
215
- @title="Run #{run_id}"
216
- @content_title="Summary of run #{run_id}"
217
- @content=single_run(run_id)
218
- end
206
+ page_setup "Run #{run_id}",panel_runs,"Summary of run #{run_id}",single_run(run_id)
219
207
  erb :layout
220
208
  end
221
209
 
@@ -228,6 +216,11 @@ module RutemaWeb
228
216
  runs(0)
229
217
  erb :layout
230
218
  end
219
+
220
+ get '/runs/:page' do |page|
221
+ runs(page)
222
+ erb :layout
223
+ end
231
224
  #Displays a paginated list of scenarios
232
225
  get '/scenarios/:page' do |page|
233
226
  scenarios(page)
@@ -235,13 +228,10 @@ module RutemaWeb
235
228
  end
236
229
  #Displays the details of a scenario
237
230
  get '/scenario/:scenario_id' do |scenario_id|
238
- @panel_content=""
239
- if !scenario_id.empty?
240
- if scenario_id.to_i==0
241
- @content=scenario_by_name(scenario_id)
242
- else
243
- @content=scenario_in_a_run(scenario_id.to_i)
244
- end
231
+ if scenario_id.to_i==0
232
+ @content=scenario_by_name(scenario_id)
233
+ else
234
+ @content=scenario_in_a_run(scenario_id.to_i)
245
235
  end
246
236
  erb :layout
247
237
  end
@@ -255,20 +245,18 @@ module RutemaWeb
255
245
  scenarios(0)
256
246
  erb :layout
257
247
  end
258
-
248
+
259
249
  get '/statistics/?' do
260
- @title="Rutema"
261
- @panel_content=panel_configurations
262
- @content_title="Statistics"
250
+ page_setup "Rutema",panel_configurations,"Statistics"
263
251
  @content="<p>rutema statistics provide reports that present the results on a time axis<br/>At present you can see the ratio of successful vs. failed test cases over time grouped per configuration file.</p>"
264
252
  @content<<"statistics reports require the gruff gem which in turn depends on RMagick. gruff does not appear to be available!<br/>rutemaweb will not be able to produce statistics reports" unless Statistics.gruff_working?
265
253
  erb :layout
266
254
  end
267
-
255
+
268
256
  get '/statistics/config_report/:configuration' do |configuration|
269
- @title=configuration || "All configurations"
270
- @panel_content=panel_configurations
271
- @content_title= configuration || "All configurations"
257
+ tt=configuration || "All configurations"
258
+ page_setup(tt,panel_configurations,tt)
259
+
272
260
  if Statistics.gruff_working?
273
261
  @content="<img src=\"/statistics/graph/#{configuration}\"/>"
274
262
  else
@@ -276,37 +264,56 @@ module RutemaWeb
276
264
  end
277
265
  erb :layout
278
266
  end
279
-
267
+
280
268
  get '/statistics/graph/:configuration' do |configuration|
281
269
  content_type "image/png"
282
270
  successful=[]
283
271
  failed=[]
272
+ not_executed=[]
284
273
  labels=Hash.new
285
- runs=Rutema::Model::Run.find(:all)
286
- #find all runs beloging to this configuration
287
- runs=runs.select{|r| r.context[:config_file]==configuration if r.context.is_a?(Hash)} if configuration
274
+ runs=all_runs_in_configuration(configuration)
288
275
  #now extract the data
289
276
  counter=0
290
277
  #the normalizer thins out the labels on the x axis so that they won't overlap
291
- normalizer = 1
292
- normalizer=runs.size/11 unless runs.size<=11
278
+ normalizer = calculate_normalizer(runs.size)
293
279
  runs.each do |r|
294
280
  fails=r.number_of_failed
281
+ no_exec = r.number_of_not_executed
295
282
  #the scenarios array includes setup and teardown scripts as well - we want only the actual testcases
296
283
  #so we use the added number_of_tests method that filters setup and test scripts
297
- successful<<r.number_of_tests-fails
284
+ successful<<r.number_of_tests-fails-no_exec
298
285
  failed<<fails
286
+ not_executed<<no_exec
299
287
  #every Nth label
300
288
  labels[counter]="R#{r.id}" if counter%normalizer==0
301
289
  counter+=1
302
290
  end
303
- runs_graph_jpg(successful,failed,labels)
291
+ runs_graph_jpg(successful,failed,not_executed,labels)
304
292
  end
293
+
305
294
  private
295
+ #calculates a divider to sparse out the laels in statistics graphs
296
+ def calculate_normalizer siz
297
+ #the normalizer thins out the labels on the x axis so that they won't overlap
298
+ return siz<=11 ? 1 : siz/11
299
+ end
300
+ #finds all the runs belonging to a specific configuration
301
+ def all_runs_in_configuration configuration
302
+ runs=Rutema::Model::Run.find(:all)
303
+ #find all runs beloging to this configuration
304
+ runs.select{|r| r.context[:config_file]==configuration if r.context.is_a?(Hash)} if configuration
305
+ end
306
+ #sets the variables used in the layout template
307
+ def page_setup title,panel_content,content_title,content=""
308
+ @title=title
309
+ @panel_content=panel_content
310
+ @content_title=content_title
311
+ @content=content
312
+ end
313
+
306
314
  def runs page
307
- @title="All runs"
308
- @content_title="Runs"
309
- @content=""
315
+ page_setup "All runs",nil,"All runs"
316
+
310
317
  dt=[]
311
318
  total_pages=(Rutema::Model::Run.count/page_size)+1
312
319
  page_number=validated_page_number(page,total_pages)
@@ -321,10 +328,7 @@ module RutemaWeb
321
328
  end
322
329
 
323
330
  def scenarios page
324
- @title="All scenarios"
325
- @content_title="Scenarios"
326
- @content=""
327
- @panel_content=panel_runs
331
+ page_setup "All scenarios",panel_runs,"All scenarios"
328
332
  runs=Hash.new
329
333
  #find which runs contain each scenario with the same name
330
334
  #Ramaze::Log.debug("Getting the runs for each scenario")
@@ -366,8 +370,7 @@ module RutemaWeb
366
370
  #Renders the summary of all runs for a single scenario
367
371
  def scenario_by_name scenario_id
368
372
  ret=""
369
- @title="Runs for #{scenario_id}"
370
- @content_title="Scenario #{scenario_id} runs"
373
+ page_setup "Runs for #{scenario_id}",nil,"Scenario #{scenario_id} runs"
371
374
  begin
372
375
  table=Rutema::Model::Scenario.report_table(:all,:conditions=>["name = :spec_name",{:spec_name=>scenario_id}],
373
376
  :order=>"run_id DESC")
@@ -384,8 +387,8 @@ module RutemaWeb
384
387
  ret<<table.to_html
385
388
  end
386
389
  rescue
387
- @content_title="Error"
388
- @title=@content_title
390
+ content_title="Error"
391
+ title=content_title
389
392
  #Ramaze::Log.error("Could not retrieve data for the scenario name '#{scenario_id}'")
390
393
  #Ramaze::Log.debug("#{$!.message}:\n#{$!.backtrace}")
391
394
  ret="<p>could not retrieve data for the given scenario name</p>"
@@ -395,11 +398,9 @@ module RutemaWeb
395
398
  #Renders the information for a specific executed scenario
396
399
  #giving a detailed list of the steps, with status and output
397
400
  def scenario_in_a_run scenario_id
398
- @panel_content=panel_runs
399
401
  begin
400
402
  scenario=Rutema::Model::Scenario.find(scenario_id)
401
- @content_title="Summary for #{scenario.name} in run #{scenario.run_id}"
402
- @title=@content_title
403
+ page_setup "Summary for #{scenario.name} in run #{scenario.run_id}",panel_runs,"Summary for #{scenario.name} in run #{scenario.run_id}"
403
404
  table=Rutema::Model::Step.report_table(:all,
404
405
  :conditions=>["scenario_id = :scenario_id",{:scenario_id=>scenario_id}],
405
406
  :order=>"number ASC")
@@ -410,8 +411,8 @@ module RutemaWeb
410
411
  ret=table.to_vhtml
411
412
  end
412
413
  rescue
413
- @content_title="Error"
414
- @title=@content_title
414
+ content_title="Error"
415
+ title=content_title
415
416
  #Ramaze::Log.error("Could not find scenario with the id '#{scenario_id}'")
416
417
  @@logger.warn("#{$!.message}:\n#{$!.backtrace}")
417
418
  ret="<p>Could not find scenario with the given id.</p>"
@@ -7,7 +7,7 @@
7
7
  <script src="/js/jquery.js"></script>
8
8
  <script src="/js/folding.js"></script>
9
9
  <script type="text/javascript">
10
- $(document).ready(toggleFolding);
10
+ $(document).ready(setupFolding);
11
11
  </script>
12
12
  <title><%=@title%></title>
13
13
  </head>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rutema_web
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vassilis Rizopoulos
@@ -9,19 +9,9 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-07-16 00:00:00 +02:00
12
+ date: 2009-09-11 00:00:00 +02:00
13
13
  default_executable: rutema_web
14
14
  dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: patir
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: 0.6.0
24
- version:
25
15
  - !ruby/object:Gem::Dependency
26
16
  name: rutema
27
17
  type: :runtime
@@ -30,17 +20,7 @@ dependencies:
30
20
  requirements:
31
21
  - - "="
32
22
  - !ruby/object:Gem::Version
33
- version: 1.0.5
34
- version:
35
- - !ruby/object:Gem::Dependency
36
- name: activerecord
37
- type: :runtime
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
40
- requirements:
41
- - - "="
42
- - !ruby/object:Gem::Version
43
- version: 2.3.2
23
+ version: 1.0.7
44
24
  version:
45
25
  - !ruby/object:Gem::Dependency
46
26
  name: sinatra
@@ -62,16 +42,6 @@ dependencies:
62
42
  - !ruby/object:Gem::Version
63
43
  version: 1.6.1
64
44
  version:
65
- - !ruby/object:Gem::Dependency
66
- name: acts_as_reportable
67
- type: :runtime
68
- version_requirement:
69
- version_requirements: !ruby/object:Gem::Requirement
70
- requirements:
71
- - - "="
72
- - !ruby/object:Gem::Version
73
- version: 1.1.1
74
- version:
75
45
  - !ruby/object:Gem::Dependency
76
46
  name: gruff
77
47
  type: :runtime
@@ -80,7 +50,7 @@ dependencies:
80
50
  requirements:
81
51
  - - "="
82
52
  - !ruby/object:Gem::Version
83
- version: 0.3.4
53
+ version: 0.3.6
84
54
  version:
85
55
  - !ruby/object:Gem::Dependency
86
56
  name: hoe
@@ -90,11 +60,11 @@ dependencies:
90
60
  requirements:
91
61
  - - ">="
92
62
  - !ruby/object:Gem::Version
93
- version: 2.3.2
63
+ version: 2.3.3
94
64
  version:
95
65
  description: |-
96
66
  == DESCRIPTION:
97
- rutemaweb is the web frontend for rutema.
67
+ rutema_web is the web frontend for rutema.
98
68
 
99
69
  It can be used as a viewer for database files created with the rutema ActiveRecord reporter.
100
70
  It also provides you with some basic statistics about the tests in your database in the form of
@@ -103,16 +73,16 @@ description: |-
103
73
  == FEATURES/PROBLEMS:
104
74
 
105
75
  == SYNOPSIS:
106
- rutemaweb [results.db] and browse to http://localhost:7000 for the glorious view
76
+ rutema_web [results.db] and browse to http://localhost:7000 for the glorious view
107
77
 
108
78
  == REQUIREMENTS:
109
79
  * patir (http://patir.rubyforge.org)
80
+ * rutema (http://patir.rubyforge.org/rutema)
110
81
  * activerecord (http://ar.rubyonrails.com/)
111
82
  * sqlite3 (http://rubyforge.org/projects/sqlite-ruby/)
112
- * ramaze (http://www.ramaze.net/)
83
+ * sinatra (http://www.sinatrarb.com/)
113
84
  * ruport (http://rubyreports.org/)
114
85
  * acts_as_reportable
115
- * erubis
116
86
  * gruff/RMagick (optional, but needed if you want to see the statistics graphs)
117
87
  email: riva@braveworld.net
118
88
  executables:
@@ -176,7 +146,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
176
146
  requirements: []
177
147
 
178
148
  rubyforge_project: patir
179
- rubygems_version: 1.3.4
149
+ rubygems_version: 1.3.5
180
150
  signing_key:
181
151
  specification_version: 3
182
152
  summary: rutema_web is the web frontend for rutema