RubyApp 0.2.4 → 0.2.5

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.
Files changed (32) hide show
  1. data/Gemfile.lock +2 -2
  2. data/lib/ruby_app/configuration.yml +7 -0
  3. data/lib/ruby_app/elements/pages/.cache/default_page.css +37 -0
  4. data/lib/ruby_app/elements/pages/.cache/default_page.js +205 -0
  5. data/lib/ruby_app/elements/pages/test_pages/.cache/button_test_page.css +37 -0
  6. data/lib/ruby_app/elements/pages/test_pages/.cache/button_test_page.js +212 -0
  7. data/lib/ruby_app/elements/pages/test_pages/.cache/default_test_page.css +47 -0
  8. data/lib/ruby_app/elements/pages/test_pages/.cache/default_test_page.js +212 -0
  9. data/lib/ruby_app/elements/pages/test_pages/.cache/dialog_test_page.css +75 -0
  10. data/lib/ruby_app/elements/pages/test_pages/.cache/dialog_test_page.js +230 -0
  11. data/lib/ruby_app/elements/pages/test_pages/.cache/input_test_page.css +47 -0
  12. data/lib/ruby_app/elements/pages/test_pages/.cache/input_test_page.js +241 -0
  13. data/lib/ruby_app/elements/pages/test_pages/.cache/link_test_page.css +37 -0
  14. data/lib/ruby_app/elements/pages/test_pages/.cache/link_test_page.js +212 -0
  15. data/lib/ruby_app/elements/pages/test_pages/.cache/linked_test_page.css +37 -0
  16. data/lib/ruby_app/elements/pages/test_pages/.cache/linked_test_page.js +205 -0
  17. data/lib/ruby_app/elements/pages/test_pages/.cache/list_test_page.css +47 -0
  18. data/lib/ruby_app/elements/pages/test_pages/.cache/list_test_page.js +226 -0
  19. data/lib/ruby_app/elements/pages/test_pages/.cache/markdown_test_page.css +37 -0
  20. data/lib/ruby_app/elements/pages/test_pages/.cache/markdown_test_page.js +205 -0
  21. data/lib/ruby_app/elements/pages/test_pages/.cache/test_page.css +47 -0
  22. data/lib/ruby_app/elements/pages/test_pages/.cache/test_page.js +220 -0
  23. data/lib/ruby_app/mixins/render_mixin.rb +4 -0
  24. data/lib/ruby_app/mixins/template_mixin.rb +5 -0
  25. data/lib/ruby_app/rack/request.rb +1 -1
  26. data/lib/ruby_app/rack/response.rb +1 -1
  27. data/lib/ruby_app/rack/route.rb +2 -1
  28. data/lib/ruby_app/rack/session.rb +1 -1
  29. data/lib/ruby_app/response.rb +24 -0
  30. data/lib/ruby_app/version.rb +1 -1
  31. data/rakefile +26 -10
  32. metadata +88 -68
@@ -10,6 +10,10 @@ module RubyApp
10
10
  module RenderMixin
11
11
  require 'ruby_app'
12
12
 
13
+ def cache(format)
14
+ return self.is_a?(Class) ? self.get_cache(format) : self.class.get_cache(format)
15
+ end
16
+
13
17
  def templates(format)
14
18
  return self.is_a?(Class) ? self.get_templates(format) : self.class.get_templates(format)
15
19
  end
@@ -33,6 +33,11 @@ module RubyApp
33
33
  return (File.exists?(template) ? [template] : []).concat((!self.exclude_parent_template?(format) && self.superclass.respond_to?(:get_templates) ) ? self.superclass.get_templates(format) : [])
34
34
  end
35
35
 
36
+ def get_cache(format)
37
+ template = self.get_template(format)
38
+ return File.join(File.dirname(template), '.cache', File.basename(template)).gsub(/\.haml/, '')
39
+ end
40
+
36
41
  end
37
42
 
38
43
  end
@@ -1,9 +1,9 @@
1
1
  module RubyApp
2
2
 
3
3
  module Rack
4
+ require 'ruby_app'
4
5
 
5
6
  class Request
6
- require 'ruby_app'
7
7
 
8
8
  def initialize(application)
9
9
  @application = application
@@ -1,9 +1,9 @@
1
1
  module RubyApp
2
2
 
3
3
  module Rack
4
+ require 'ruby_app'
4
5
 
5
6
  class Response
6
- require 'ruby_app'
7
7
 
8
8
  def initialize(application)
9
9
  @application = application
@@ -40,7 +40,8 @@ module RubyApp
40
40
  RubyApp::Response['Content-Type'] = RubyApp::Element.get_content_type(format)
41
41
  page = RubyApp::Session.pages.last
42
42
  RubyApp::Log.duration("GET #{page.class} #{format}") do
43
- RubyApp::Response.write(page.render(format.to_sym))
43
+ RubyApp::Response.write_from_cache(page, format.to_sym)
44
+ #RubyApp::Response.write(page.render(format.to_sym))
44
45
  end
45
46
  end
46
47
 
@@ -1,9 +1,9 @@
1
1
  module RubyApp
2
2
 
3
3
  module Rack
4
+ require 'ruby_app'
4
5
 
5
6
  class Session
6
- require 'ruby_app'
7
7
 
8
8
  def initialize(application)
9
9
  @application = application
@@ -9,6 +9,7 @@ module RubyApp
9
9
 
10
10
  class Response < ::Rack::Response
11
11
  extend RubyApp::Mixins::DelegateMixin
12
+ extend RubyApp::Mixins::ConfigurationMixin
12
13
 
13
14
  def rendered?(template)
14
15
  return @rendered.key?(template)
@@ -32,6 +33,29 @@ module RubyApp
32
33
  @content[element] = {}
33
34
  end
34
35
 
36
+ def write_from_cache(element, format)
37
+ if RubyApp::Response.configuration.cache.formats.include?(format)
38
+ cache = element.cache(format)
39
+ if RubyApp::Response.configuration.cache.read? && File.exists?(cache)
40
+ RubyApp::Log.debug("#{RubyApp::Log.prefix(self, __method__)} READ #{cache.inspect}")
41
+ self.write(File.read(cache))
42
+ else
43
+ content = element.render(format)
44
+ if RubyApp::Response.configuration.cache.write? && !File.exists?(cache)
45
+ FileUtils.mkdir_p(File.dirname(cache))
46
+ RubyApp::Log.debug("#{RubyApp::Log.prefix(self, __method__)} WRITE #{cache.inspect}")
47
+ File.open(cache, 'w') do |file|
48
+ file.write(content)
49
+ file.flush
50
+ end
51
+ end
52
+ self.write(content)
53
+ end
54
+ else
55
+ self.write(element.render(format))
56
+ end
57
+ end
58
+
35
59
  def self.get
36
60
  return Thread.current[:_response]
37
61
  end
@@ -1,4 +1,4 @@
1
1
  module RubyApp
2
- VERSION = "0.2.4"
2
+ VERSION = "0.2.5"
3
3
  ROOT = File.expand_path(File.dirname(__FILE__))
4
4
  end
data/rakefile CHANGED
@@ -10,12 +10,12 @@ namespace :ruby_app do
10
10
 
11
11
  desc 'Create console'
12
12
  task :console do |task|
13
- system("cd ./lib/ruby_app && clear && bundle exec ../../bin/ruby_app console")
13
+ system('cd ./lib/ruby_app && clear && bundle exec ../../bin/ruby_app console')
14
14
  end
15
15
 
16
16
  desc 'Run'
17
- task :run do |task|
18
- system("cd ./lib/ruby_app && clear && bundle exec ../../bin/ruby_app run")
17
+ task :run => ['ruby_app:cache:destroy'] do |task|
18
+ system('cd ./lib/ruby_app && clear && bundle exec ../../bin/ruby_app run')
19
19
  end
20
20
 
21
21
  desc 'Get version'
@@ -25,18 +25,19 @@ namespace :ruby_app do
25
25
 
26
26
  desc 'Push to master, release, and increment version'
27
27
  task :release do |task|
28
- system "git push origin master && rake release"
28
+ system('git push origin master && rake release')
29
29
  version_file = File.join(RubyApp::ROOT, %w[version.rb])
30
30
  RubyApp::VERSION =~ /(\d+)\.(\d+)\.(\d+)/
31
- system "sed 's|[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*|#{$1}.#{$2}.#{$3.to_i + 1}|g' < '#{version_file}' > '#{version_file}.out'; rm '#{version_file}'; mv '#{version_file}.out' '#{version_file}'"
32
- system "git commit --all --message='Incrementing version'"
31
+ system("sed 's|[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*|#{$1}.#{$2}.#{$3.to_i + 1}|g' < '#{version_file}' > '#{version_file}.out'; rm '#{version_file}'; mv '#{version_file}.out' '#{version_file}'")
32
+ system('git commit --all --message=\'Incrementing version\'')
33
33
  end
34
34
 
35
35
  namespace :test do
36
36
 
37
37
  desc 'Run all tests'
38
- task :all => ['test:specs',
39
- 'test:features']
38
+ task :all => ['ruby_app:cache:destroy',
39
+ 'ruby_app:test:specs',
40
+ 'ruby_app:test:features']
40
41
 
41
42
  desc 'Run RSpec tests'
42
43
  task :specs, :file, :line do |task, arguments|
@@ -47,14 +48,14 @@ namespace :ruby_app do
47
48
  system("bundle exec rspec #{arguments.file} --format=documentation --colour")
48
49
  end
49
50
  else
50
- system("bundle exec rspec spec/ --format=documentation --colour")
51
+ system('bundle exec rspec spec/ --format=documentation --colour')
51
52
  end
52
53
  end
53
54
 
54
55
  desc 'Run feature tests for all features or the given feature file'
55
56
  task :features, :file do |task, arguments|
56
57
  unless arguments.file
57
- system("bundle exec cucumber --format pretty --tags ~@broken --require features")
58
+ system('bundle exec cucumber --format pretty --tags ~@broken --require features')
58
59
  else
59
60
  system("bundle exec cucumber --format pretty --tags ~@broken --require features '#{arguments.file}'")
60
61
  end
@@ -62,4 +63,19 @@ namespace :ruby_app do
62
63
 
63
64
  end
64
65
 
66
+ namespace :cache do
67
+
68
+ desc 'List all cached files'
69
+ task :list do
70
+ system('find . | grep \'\\.cache\'')
71
+ end
72
+
73
+ desc 'Remove all cached files'
74
+ task :destroy do
75
+ puts 'Removing cached files ...'
76
+ system('find . -name \'.cache\' | xargs rm -rv')
77
+ end
78
+
79
+ end
80
+
65
81
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: RubyApp
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
4
+ hash: 29
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 4
10
- version: 0.2.4
9
+ - 5
10
+ version: 0.2.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Frank G. Ficnar
@@ -15,9 +15,11 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-03-22 00:00:00 Z
18
+ date: 2012-03-23 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
+ prerelease: false
22
+ name: BlueCloth
21
23
  version_requirements: &id001 !ruby/object:Gem::Requirement
22
24
  none: false
23
25
  requirements:
@@ -27,11 +29,11 @@ dependencies:
27
29
  segments:
28
30
  - 0
29
31
  version: "0"
30
- requirement: *id001
31
32
  type: :runtime
32
- prerelease: false
33
- name: BlueCloth
33
+ requirement: *id001
34
34
  - !ruby/object:Gem::Dependency
35
+ prerelease: false
36
+ name: chronic
35
37
  version_requirements: &id002 !ruby/object:Gem::Requirement
36
38
  none: false
37
39
  requirements:
@@ -41,11 +43,11 @@ dependencies:
41
43
  segments:
42
44
  - 0
43
45
  version: "0"
44
- requirement: *id002
45
46
  type: :runtime
46
- prerelease: false
47
- name: chronic
47
+ requirement: *id002
48
48
  - !ruby/object:Gem::Dependency
49
+ prerelease: false
50
+ name: chronic_duration
49
51
  version_requirements: &id003 !ruby/object:Gem::Requirement
50
52
  none: false
51
53
  requirements:
@@ -55,11 +57,11 @@ dependencies:
55
57
  segments:
56
58
  - 0
57
59
  version: "0"
58
- requirement: *id003
59
60
  type: :runtime
60
- prerelease: false
61
- name: chronic_duration
61
+ requirement: *id003
62
62
  - !ruby/object:Gem::Dependency
63
+ prerelease: false
64
+ name: facets
63
65
  version_requirements: &id004 !ruby/object:Gem::Requirement
64
66
  none: false
65
67
  requirements:
@@ -69,11 +71,11 @@ dependencies:
69
71
  segments:
70
72
  - 0
71
73
  version: "0"
72
- requirement: *id004
73
74
  type: :runtime
74
- prerelease: false
75
- name: facets
75
+ requirement: *id004
76
76
  - !ruby/object:Gem::Dependency
77
+ prerelease: false
78
+ name: fileutils
77
79
  version_requirements: &id005 !ruby/object:Gem::Requirement
78
80
  none: false
79
81
  requirements:
@@ -83,11 +85,11 @@ dependencies:
83
85
  segments:
84
86
  - 0
85
87
  version: "0"
86
- requirement: *id005
87
88
  type: :runtime
88
- prerelease: false
89
- name: fileutils
89
+ requirement: *id005
90
90
  - !ruby/object:Gem::Dependency
91
+ prerelease: false
92
+ name: haml
91
93
  version_requirements: &id006 !ruby/object:Gem::Requirement
92
94
  none: false
93
95
  requirements:
@@ -97,11 +99,11 @@ dependencies:
97
99
  segments:
98
100
  - 0
99
101
  version: "0"
100
- requirement: *id006
101
102
  type: :runtime
102
- prerelease: false
103
- name: haml
103
+ requirement: *id006
104
104
  - !ruby/object:Gem::Dependency
105
+ prerelease: false
106
+ name: json
105
107
  version_requirements: &id007 !ruby/object:Gem::Requirement
106
108
  none: false
107
109
  requirements:
@@ -111,11 +113,11 @@ dependencies:
111
113
  segments:
112
114
  - 0
113
115
  version: "0"
114
- requirement: *id007
115
116
  type: :runtime
116
- prerelease: false
117
- name: json
117
+ requirement: *id007
118
118
  - !ruby/object:Gem::Dependency
119
+ prerelease: false
120
+ name: mime-types
119
121
  version_requirements: &id008 !ruby/object:Gem::Requirement
120
122
  none: false
121
123
  requirements:
@@ -125,11 +127,11 @@ dependencies:
125
127
  segments:
126
128
  - 0
127
129
  version: "0"
128
- requirement: *id008
129
130
  type: :runtime
130
- prerelease: false
131
- name: mime-types
131
+ requirement: *id008
132
132
  - !ruby/object:Gem::Dependency
133
+ prerelease: false
134
+ name: r18n-core
133
135
  version_requirements: &id009 !ruby/object:Gem::Requirement
134
136
  none: false
135
137
  requirements:
@@ -139,11 +141,11 @@ dependencies:
139
141
  segments:
140
142
  - 0
141
143
  version: "0"
142
- requirement: *id009
143
144
  type: :runtime
144
- prerelease: false
145
- name: r18n-core
145
+ requirement: *id009
146
146
  - !ruby/object:Gem::Dependency
147
+ prerelease: false
148
+ name: rack
147
149
  version_requirements: &id010 !ruby/object:Gem::Requirement
148
150
  none: false
149
151
  requirements:
@@ -153,11 +155,11 @@ dependencies:
153
155
  segments:
154
156
  - 0
155
157
  version: "0"
156
- requirement: *id010
157
158
  type: :runtime
158
- prerelease: false
159
- name: rack
159
+ requirement: *id010
160
160
  - !ruby/object:Gem::Dependency
161
+ prerelease: false
162
+ name: ruby-event
161
163
  version_requirements: &id011 !ruby/object:Gem::Requirement
162
164
  none: false
163
165
  requirements:
@@ -167,11 +169,11 @@ dependencies:
167
169
  segments:
168
170
  - 0
169
171
  version: "0"
170
- requirement: *id011
171
172
  type: :runtime
172
- prerelease: false
173
- name: ruby-event
173
+ requirement: *id011
174
174
  - !ruby/object:Gem::Dependency
175
+ prerelease: false
176
+ name: ruby-openid
175
177
  version_requirements: &id012 !ruby/object:Gem::Requirement
176
178
  none: false
177
179
  requirements:
@@ -181,11 +183,11 @@ dependencies:
181
183
  segments:
182
184
  - 0
183
185
  version: "0"
184
- requirement: *id012
185
186
  type: :runtime
186
- prerelease: false
187
- name: ruby-openid
187
+ requirement: *id012
188
188
  - !ruby/object:Gem::Dependency
189
+ prerelease: false
190
+ name: sass
189
191
  version_requirements: &id013 !ruby/object:Gem::Requirement
190
192
  none: false
191
193
  requirements:
@@ -195,11 +197,11 @@ dependencies:
195
197
  segments:
196
198
  - 0
197
199
  version: "0"
198
- requirement: *id013
199
200
  type: :runtime
200
- prerelease: false
201
- name: sass
201
+ requirement: *id013
202
202
  - !ruby/object:Gem::Dependency
203
+ prerelease: false
204
+ name: term-ansicolor
203
205
  version_requirements: &id014 !ruby/object:Gem::Requirement
204
206
  none: false
205
207
  requirements:
@@ -209,11 +211,11 @@ dependencies:
209
211
  segments:
210
212
  - 0
211
213
  version: "0"
212
- requirement: *id014
213
214
  type: :runtime
214
- prerelease: false
215
- name: term-ansicolor
215
+ requirement: *id014
216
216
  - !ruby/object:Gem::Dependency
217
+ prerelease: false
218
+ name: yajl-ruby
217
219
  version_requirements: &id015 !ruby/object:Gem::Requirement
218
220
  none: false
219
221
  requirements:
@@ -223,11 +225,11 @@ dependencies:
223
225
  segments:
224
226
  - 0
225
227
  version: "0"
226
- requirement: *id015
227
228
  type: :runtime
228
- prerelease: false
229
- name: yajl-ruby
229
+ requirement: *id015
230
230
  - !ruby/object:Gem::Dependency
231
+ prerelease: false
232
+ name: capybara
231
233
  version_requirements: &id016 !ruby/object:Gem::Requirement
232
234
  none: false
233
235
  requirements:
@@ -237,11 +239,11 @@ dependencies:
237
239
  segments:
238
240
  - 0
239
241
  version: "0"
240
- requirement: *id016
241
242
  type: :development
242
- prerelease: false
243
- name: capybara
243
+ requirement: *id016
244
244
  - !ruby/object:Gem::Dependency
245
+ prerelease: false
246
+ name: cucumber
245
247
  version_requirements: &id017 !ruby/object:Gem::Requirement
246
248
  none: false
247
249
  requirements:
@@ -251,11 +253,11 @@ dependencies:
251
253
  segments:
252
254
  - 0
253
255
  version: "0"
254
- requirement: *id017
255
256
  type: :development
256
- prerelease: false
257
- name: cucumber
257
+ requirement: *id017
258
258
  - !ruby/object:Gem::Dependency
259
+ prerelease: false
260
+ name: launchy
259
261
  version_requirements: &id018 !ruby/object:Gem::Requirement
260
262
  none: false
261
263
  requirements:
@@ -265,11 +267,11 @@ dependencies:
265
267
  segments:
266
268
  - 0
267
269
  version: "0"
268
- requirement: *id018
269
270
  type: :development
270
- prerelease: false
271
- name: launchy
271
+ requirement: *id018
272
272
  - !ruby/object:Gem::Dependency
273
+ prerelease: false
274
+ name: rake
273
275
  version_requirements: &id019 !ruby/object:Gem::Requirement
274
276
  none: false
275
277
  requirements:
@@ -279,11 +281,11 @@ dependencies:
279
281
  segments:
280
282
  - 0
281
283
  version: "0"
282
- requirement: *id019
283
284
  type: :development
284
- prerelease: false
285
- name: rake
285
+ requirement: *id019
286
286
  - !ruby/object:Gem::Dependency
287
+ prerelease: false
288
+ name: rspec
287
289
  version_requirements: &id020 !ruby/object:Gem::Requirement
288
290
  none: false
289
291
  requirements:
@@ -293,11 +295,11 @@ dependencies:
293
295
  segments:
294
296
  - 0
295
297
  version: "0"
296
- requirement: *id020
297
298
  type: :development
298
- prerelease: false
299
- name: rspec
299
+ requirement: *id020
300
300
  - !ruby/object:Gem::Dependency
301
+ prerelease: false
302
+ name: rspec-mocks
301
303
  version_requirements: &id021 !ruby/object:Gem::Requirement
302
304
  none: false
303
305
  requirements:
@@ -307,10 +309,8 @@ dependencies:
307
309
  segments:
308
310
  - 0
309
311
  version: "0"
310
- requirement: *id021
311
312
  type: :development
312
- prerelease: false
313
- name: rspec-mocks
313
+ requirement: *id021
314
314
  description: A web application framework in Ruby
315
315
  email:
316
316
  - frank.ficnar@gmail.com
@@ -432,6 +432,8 @@ files:
432
432
  - lib/ruby_app/elements/navigation/page_link.js.haml
433
433
  - lib/ruby_app/elements/navigation/page_link.rb
434
434
  - lib/ruby_app/elements/page.rb
435
+ - lib/ruby_app/elements/pages/.cache/default_page.css
436
+ - lib/ruby_app/elements/pages/.cache/default_page.js
435
437
  - lib/ruby_app/elements/pages/authentication/open_id/authentication_page.rb
436
438
  - lib/ruby_app/elements/pages/authentication/open_id/ax_authentication_page.rb
437
439
  - lib/ruby_app/elements/pages/authentication/open_id/base/base_authentication_page.html.haml
@@ -457,6 +459,24 @@ files:
457
459
  - lib/ruby_app/elements/pages/settings_page.js.haml
458
460
  - lib/ruby_app/elements/pages/settings_page.rb
459
461
  - lib/ruby_app/elements/pages/test_pages.rb
462
+ - lib/ruby_app/elements/pages/test_pages/.cache/button_test_page.css
463
+ - lib/ruby_app/elements/pages/test_pages/.cache/button_test_page.js
464
+ - lib/ruby_app/elements/pages/test_pages/.cache/default_test_page.css
465
+ - lib/ruby_app/elements/pages/test_pages/.cache/default_test_page.js
466
+ - lib/ruby_app/elements/pages/test_pages/.cache/dialog_test_page.css
467
+ - lib/ruby_app/elements/pages/test_pages/.cache/dialog_test_page.js
468
+ - lib/ruby_app/elements/pages/test_pages/.cache/input_test_page.css
469
+ - lib/ruby_app/elements/pages/test_pages/.cache/input_test_page.js
470
+ - lib/ruby_app/elements/pages/test_pages/.cache/link_test_page.css
471
+ - lib/ruby_app/elements/pages/test_pages/.cache/link_test_page.js
472
+ - lib/ruby_app/elements/pages/test_pages/.cache/linked_test_page.css
473
+ - lib/ruby_app/elements/pages/test_pages/.cache/linked_test_page.js
474
+ - lib/ruby_app/elements/pages/test_pages/.cache/list_test_page.css
475
+ - lib/ruby_app/elements/pages/test_pages/.cache/list_test_page.js
476
+ - lib/ruby_app/elements/pages/test_pages/.cache/markdown_test_page.css
477
+ - lib/ruby_app/elements/pages/test_pages/.cache/markdown_test_page.js
478
+ - lib/ruby_app/elements/pages/test_pages/.cache/test_page.css
479
+ - lib/ruby_app/elements/pages/test_pages/.cache/test_page.js
460
480
  - lib/ruby_app/elements/pages/test_pages/button_test_page.css.haml
461
481
  - lib/ruby_app/elements/pages/test_pages/button_test_page.html.haml
462
482
  - lib/ruby_app/elements/pages/test_pages/button_test_page.js.haml
@@ -608,7 +628,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
608
628
  requirements: []
609
629
 
610
630
  rubyforge_project:
611
- rubygems_version: 1.8.10
631
+ rubygems_version: 1.8.13
612
632
  signing_key:
613
633
  specification_version: 3
614
634
  summary: A web application framework in Ruby