rhoconnect 3.1.0.beta1 → 3.1.0.beta2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. data/CHANGELOG.md +17 -0
  2. data/Gemfile +4 -1
  3. data/Gemfile.lock +28 -22
  4. data/Rakefile +6 -5
  5. data/bench/bench_runner.rb +2 -2
  6. data/bench/benchapp/Gemfile +1 -2
  7. data/bench/benchapp/Gemfile.lock +19 -42
  8. data/bench/benchapp/spec/spec_helper.rb +1 -1
  9. data/bench/blobapp/Gemfile +0 -1
  10. data/bench/blobapp/Gemfile.lock +52 -47
  11. data/bench/blobapp/spec/spec_helper.rb +1 -1
  12. data/bench/lib/bench/logging.rb +0 -2
  13. data/bench/lib/bench/utils.rb +3 -3
  14. data/bench/run_bench.sh +4 -3
  15. data/bench/spec/bench_spec_helper.rb +6 -0
  16. data/doc/benchmarks-running.txt +2 -0
  17. data/doc/client.txt +1 -1
  18. data/doc/cud-conflicts.txt +23 -23
  19. data/doc/java-plugin.txt +23 -23
  20. data/doc/net-plugin.txt +21 -10
  21. data/doc/rhoconnect-redis-stack.txt +4 -4
  22. data/doc/supported-platforms.txt +77 -0
  23. data/doc/tutorial.txt +11 -13
  24. data/generators/rhoconnect.rb +1 -1
  25. data/generators/templates/application/Gemfile +4 -4
  26. data/generators/templates/application/spec/spec_helper.rb +10 -8
  27. data/installer/unix-like/rho_connect_install_constants.rb +2 -2
  28. data/installer/utils/package_upload/repos.rake +22 -7
  29. data/installer/utils/package_upload/s3_upload.rb +50 -22
  30. data/installer/windows/rhosync.nsi +5 -5
  31. data/lib/rhoconnect/body_content_type_parser.rb +4 -1
  32. data/lib/rhoconnect/jobs/bulk_data_job.rb +3 -3
  33. data/lib/rhoconnect/tasks.rb +17 -21
  34. data/lib/rhoconnect/version.rb +1 -1
  35. data/rhoconnect.gemspec +2 -1
  36. data/spec/spec_helper.rb +15 -7
  37. data/spec/stats/middleware_spec.rb +0 -1
  38. data/spec/store_spec.rb +0 -1
  39. data/tasks/redis.rake +2 -2
  40. metadata +64 -47
@@ -6,14 +6,19 @@ require 'find'
6
6
 
7
7
  # CONSTANTS
8
8
 
9
- # ACCESS_KEY_FILE = '/home/vagrant/.s3/keys'
10
- START_DIR = ARGV[0]
11
- BUCKET = ARGV[1]
12
- S3_ACCESS_KEY = 'AKIAIFBP7PVF6WBEGLGA'
13
- S3_SECRET_ACCESS_KEY = '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'
9
+ START_DIR = ARGV[0]
10
+ BUCKET = ARGV[1]
11
+ USER_DATA = `wget -q -O - http://169.254.169.254/latest/user-data`.split("\n")
14
12
 
15
13
  # METHODS
16
14
 
15
+ # Facilitates easy use of system calls
16
+ def cmd(cmd)
17
+ puts cmd
18
+ system cmd
19
+ end #cmd
20
+
21
+ # Makes sure parameters are correctly formed
17
22
  def check_params
18
23
  if ARGV.size != 2 && ARGV.size != 3
19
24
  puts "Wrong number of arguments (#{ARGV.size} for 2)"
@@ -34,29 +39,28 @@ def check_params
34
39
  begin
35
40
  found = AWS::S3::Bucket.find(BUCKET)
36
41
  puts "#{BUCKET} is a valid bucket :)" unless @raked
37
- rescue
42
+ rescue => e
38
43
  puts "#{BUCKET} is not a valid bucket."
44
+ puts e.inspect
45
+ puts e.backtrace
39
46
  exit
40
47
  end
41
48
  end #check_params
42
49
 
50
+ # Retrieves S3 credential information
43
51
  def get_keys
44
- # lines = IO.readlines ACCESS_KEY_FILE
45
- # @access_key = lines.first.strip
46
- # @secret_access_key = lines.last.strip
47
- @access_key = S3_ACCESS_KEY
48
- @secret_access_key = S3_SECRET_ACCESS_KEY
49
-
52
+ access_key = USER_DATA[0].to_s.strip
53
+ secret_access_key = USER_DATA[1].to_s.strip
54
+ keys = { :access_key_id => access_key,
55
+ :secret_access_key => secret_access_key}
50
56
  end #get_keys
51
57
 
58
+ # Establishes S3 connection
52
59
  def establish_s3_connection
53
- get_keys
54
- @s3_connection = AWS::S3::Base.establish_connection!(
55
- :access_key_id => @access_key,
56
- :secret_access_key => @secret_access_key
57
- )
60
+ @s3_connection = AWS::S3::Base.establish_connection!(get_keys)
58
61
  end #establish_s3_connection
59
62
 
63
+ # Uploads given file to the specified S3 bucket
60
64
  def upload(file)
61
65
  puts "Uploading #{file} to bucket #{BUCKET}..." unless @raked
62
66
  # Upload the given file
@@ -70,6 +74,7 @@ def upload(file)
70
74
  puts unless @raked
71
75
  end #upload
72
76
 
77
+ # Traverses list of file to upload and calls Upload to upload them
73
78
  def upload_files
74
79
  # Get list of files do be added
75
80
  number_of_files = 0
@@ -102,8 +107,31 @@ def upload_files
102
107
  end #if
103
108
  end #upload_files
104
109
 
105
- establish_s3_connection
106
-
107
- check_params
108
-
109
- upload_files
110
+ # SCRIPT
111
+
112
+ begin
113
+ establish_s3_connection
114
+ rescue => e
115
+ puts "Error Connecting to S3!!"
116
+ puts e.inspect
117
+ puts e.backtrace
118
+ exit 1
119
+ end #begin
120
+
121
+ begin
122
+ check_params
123
+ rescue => e
124
+ puts "Error Checking Parameters!!"
125
+ puts e.inspect
126
+ puts e.backtrace
127
+ exit 2
128
+ end #begin
129
+
130
+ begin
131
+ upload_files
132
+ rescue => e
133
+ puts "Error Uploading files!!"
134
+ puts e.inspect
135
+ puts e.backtrace
136
+ exit 3
137
+ end #begin
@@ -99,7 +99,7 @@ section "uninstall"
99
99
  Push "PATH"
100
100
  Push "R"
101
101
  Push "HKLM"
102
- Push "$INSTDIR\redis-2.4.5"
102
+ Push "$INSTDIR\redis-2.4.6"
103
103
  Call un.EnvVarUpdate
104
104
  Pop $R0
105
105
 
@@ -170,25 +170,25 @@ Section "Redis" redisSection
170
170
 
171
171
  SetOutPath $INSTDIR
172
172
 
173
- File /r "redis-2.4.5"
173
+ File /r "redis-2.4.6"
174
174
 
175
175
  ;add to path here
176
176
 
177
177
  Push "PATH"
178
178
  Push "P"
179
179
  Push "HKLM"
180
- Push "$INSTDIR\redis-2.4.5"
180
+ Push "$INSTDIR\redis-2.4.6"
181
181
  Call EnvVarUpdate
182
182
  Pop $R0
183
183
 
184
184
  Push "REDIS_HOME"
185
185
  Push "P"
186
186
  Push "HKLM"
187
- Push "$INSTDIR\redis-2.4.5"
187
+ Push "$INSTDIR\redis-2.4.6"
188
188
  Call EnvVarUpdate
189
189
  Pop $R0
190
190
 
191
- ExecWait '$INSTDIR\redis-2.4.5\redis-service.exe install' $0
191
+ ExecWait '$INSTDIR\redis-2.4.6\redis-service.exe install' $0
192
192
  StrCmp $0 "0" continue wrong
193
193
 
194
194
  wrong:
@@ -13,9 +13,12 @@ module Rhoconnect
13
13
  end
14
14
 
15
15
  def call(env)
16
- if env['CONTENT_TYPE'] && env['CONTENT_TYPE'].match(/^application\/json/)
16
+ if env[CONTENT_TYPE] && env[CONTENT_TYPE].match(/^application\/json/)
17
17
  begin
18
18
  if (body = env[POST_BODY].read).length != 0
19
+ # for some reason , if we do not do this
20
+ # Ruby 1.9 will fail
21
+ env[POST_BODY] = StringIO.new(body)
19
22
  env.update(FORM_HASH => JSON.parse(body), FORM_INPUT => env[POST_BODY])
20
23
  end
21
24
  rescue JSON::ParserError => jpe
@@ -71,9 +71,9 @@ module Rhoconnect
71
71
  data.each do |obj,row|
72
72
  args = [obj]
73
73
  columns.each { |col| args << row[col] }
74
- # FIXME: The * is used to expand an array into individual arguments for 'execute' method.
75
- # JRuby (1.6.0) won't work without asterisk, but MRI and 1.9.2 are both doing well!
76
- stmt.execute(*args) # FIXME: !!!
74
+ # The * is used to expand an array into individual arguments for 'execute' method.
75
+ # JRuby (1.6.0) won't work without asterisk, but other rubies doing well!
76
+ stmt.execute(*args)
77
77
  end
78
78
  end
79
79
 
@@ -3,6 +3,7 @@ require 'zip/zip'
3
3
  require 'uri'
4
4
  require File.join(File.dirname(__FILE__),'console','rhoconnect_api')
5
5
 
6
+
6
7
  module Rhoconnect
7
8
  module TaskHelper
8
9
  def post(path,params)
@@ -230,7 +231,6 @@ namespace :rhoconnect do
230
231
 
231
232
  begin
232
233
  require 'rspec/core/rake_task'
233
- require 'rcov/rcovtask' unless (windows? || ruby19?)
234
234
 
235
235
  desc "Run source adapter specs"
236
236
  task :spec do
@@ -238,20 +238,10 @@ namespace :rhoconnect do
238
238
  RSpec::Core::RakeTask.new('rhoconnect:spec') do |t|
239
239
  t.pattern = FileList[files]
240
240
  t.rspec_opts = %w(-fn -b --color)
241
- unless (windows? || ruby19?)
242
- t.rcov = true
243
- t.rcov_opts = ['--exclude', 'spec/*,gems/*']
244
- end
245
241
  end
246
242
  end
247
- rescue LoadError
248
- if windows?
249
- puts "rspec not available. Install it with: "
250
- puts "gem install rspec\n\n"
251
- else
252
- puts "rspec / rcov not available. Install it with: "
253
- puts "gem install rspec rcov\n\n"
254
- end
243
+ rescue Exception => e
244
+ puts "Run source adapter specs error: #{e.inspect}"
255
245
  end
256
246
 
257
247
  desc "Start rhoconnect server"
@@ -273,18 +263,21 @@ namespace :rhoconnect do
273
263
  # desc "Start rhoconnect server in bg mode (Rhostudio) - this is an internal command"
274
264
  task :startbg do
275
265
  cmd = (jruby?) ? trinidad? : (thin? || mongrel? || report_missing_server)
276
- Thread.new {
266
+ require 'win32/process' if windows?
267
+
268
+ p1 = Process.fork {
277
269
  if windows?
278
- puts 'Starting rhoconnect...'
270
+ puts 'Starting rhoconnect ...'
279
271
  system("#{cmd} config.ru -P #{rhoconnect_pid}")
280
272
  elsif jruby?
281
273
  puts 'Starting rhoconnect in jruby environment...'
282
274
  system("#{cmd}")
283
275
  else
284
- system("#{cmd} config.ru -P #{rhoconnect_pid}")
276
+ system("bundle exec #{cmd} config.ru -P #{rhoconnect_pid}")
285
277
  end
286
278
  }
287
-
279
+ Process.detach(p1)
280
+
288
281
  exit
289
282
  end
290
283
 
@@ -292,18 +285,21 @@ namespace :rhoconnect do
292
285
  task :startdebug do
293
286
  cmd = (jruby?) ? trinidad? : (thin? || mongrel? || report_missing_server)
294
287
  ENV['DEBUG'] = 'yes'
295
- Thread.new {
288
+ require 'win32/process' if windows?
289
+
290
+ p1 = Process.fork {
296
291
  if windows?
297
- puts 'Starting rhoconnect...'
292
+ puts 'Starting rhoconnect ...'
298
293
  system("#{cmd} config.ru -P #{rhoconnect_pid}")
299
294
  elsif jruby?
300
295
  puts 'Starting rhoconnect in jruby environment...'
301
296
  system("#{cmd}")
302
297
  else
303
- system("#{cmd} config.ru -P #{rhoconnect_pid}")
298
+ system("bundle exec #{cmd} config.ru -P #{rhoconnect_pid}")
304
299
  end
305
300
  }
306
-
301
+ Process.detach(p1)
302
+
307
303
  exit
308
304
  end
309
305
 
@@ -1,3 +1,3 @@
1
1
  module Rhoconnect
2
- VERSION = '3.1.0.beta1'
2
+ VERSION = '3.1.0.beta2'
3
3
  end
data/rhoconnect.gemspec CHANGED
@@ -37,9 +37,10 @@ Gem::Specification.new do |s|
37
37
  ]
38
38
 
39
39
  s.add_dependency('bundler', '~> 1.0')
40
+ s.add_dependency("rack", '~> 1.4.1')
40
41
  s.add_dependency("sinatra", '~> 1.3')
41
42
  s.add_dependency('rake', '~> 0.9.2')
42
- s.add_dependency('json', '~> 1.5.0')
43
+ s.add_dependency('json', '~> 1.6.0')
43
44
  s.add_dependency('rubyzip', '~> 0.9.4')
44
45
  s.add_dependency('uuidtools', '>= 2.1.1')
45
46
  s.add_dependency('redis', '>= 2.2.0')
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1,12 @@
1
1
  require 'rubygems'
2
2
  require 'webmock/rspec'
3
3
  require 'rspec'
4
+
5
+ if RUBY_VERSION =~ /1.9/ || defined?(JRUBY_VERSION)
6
+ require 'simplecov'
7
+ SimpleCov.start
8
+ end
9
+
4
10
  require 'rhoconnect'
5
11
  include Rhoconnect
6
12
  ENV['RACK_ENV'] = 'test'
@@ -8,13 +14,15 @@ ENV['RACK_ENV'] = 'test'
8
14
  ERROR = '0_broken_object_id' unless defined? ERROR
9
15
 
10
16
  # Monkey patch to fix the following issue:
11
- # /Library/Ruby/Gems/1.8/gems/rspec-core-2.5.1/lib/rspec/core/shared_example_group.rb:45:
12
- # in `ensure_shared_example_group_name_not_taken': Shared example group '...' already exists (ArgumentError)
13
- module RSpec
14
- module Core
15
- module SharedExampleGroup
16
- private
17
- def ensure_shared_example_group_name_not_taken(name)
17
+ # /usr/local/rvm/gems/ruby-1.8.7-p352/gems/rspec-core-2.6.4/lib/rspec/core/shared_example_group.rb:59:
18
+ # in `ensure_shared_example_group_name_not_taken': Shared example group 'SharedRhoconnectHelper' already exists (ArgumentError)
19
+ if RUBY_VERSION =~ /1.8/
20
+ module RSpec
21
+ module Core
22
+ module SharedExampleGroup
23
+ private
24
+ def ensure_shared_example_group_name_not_taken(name)
25
+ end
18
26
  end
19
27
  end
20
28
  end
@@ -30,7 +30,6 @@ describe "Middleware" do
30
30
  metric = 'http:GET:/api/application/query:SampleAdapter'
31
31
  Record.key(metric).should == "stat:#{metric}"
32
32
 
33
- # FIXME:
34
33
  # The conversion algorithm (float to string) currently checks two precisions.
35
34
  # In Ruby 1.9, it tries 16 digits and if that's not enough it then uses 17.
36
35
  # In 1.8, it's the same but with 15 and 16.
data/spec/store_spec.rb CHANGED
@@ -225,7 +225,6 @@ describe "Store" do
225
225
  end
226
226
 
227
227
  if defined?(JRUBY_VERSION)
228
- # FIXME:
229
228
  it "should lock document" do
230
229
  doc = "locked_data"
231
230
  m_lock = Store.get_lock(doc)
data/tasks/redis.rake CHANGED
@@ -7,7 +7,7 @@ def windows?
7
7
  end
8
8
 
9
9
  if windows?
10
- $redis_ver = "redis-2.4.5"
10
+ $redis_ver = "redis-2.4.6"
11
11
  $redis_zip = "C:/#{$redis_ver}.zip"
12
12
  $redis_dest = "C:/"
13
13
  end
@@ -181,7 +181,7 @@ namespace :redis do
181
181
  else
182
182
  sh 'rm -rf /tmp/redis/' if File.exists?("#{RedisRunner.redisdir}")
183
183
  sh 'git clone git://github.com/antirez/redis.git /tmp/redis -n'
184
- sh "cd #{RedisRunner.redisdir} && git reset --hard && git checkout 2.4.5"
184
+ sh "cd #{RedisRunner.redisdir} && git reset --hard && git checkout 2.4.6"
185
185
  end
186
186
  end
187
187
 
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rhoconnect
3
3
  version: !ruby/object:Gem::Version
4
- hash: 62196433
4
+ hash: 62196439
5
5
  prerelease: 6
6
6
  segments:
7
7
  - 3
8
8
  - 1
9
9
  - 0
10
10
  - beta
11
- - 1
12
- version: 3.1.0.beta1
11
+ - 2
12
+ version: 3.1.0.beta2
13
13
  platform: ruby
14
14
  authors:
15
15
  - Rhomobile
@@ -17,12 +17,12 @@ autorequire:
17
17
  bindir: bin
18
18
  cert_chain: []
19
19
 
20
- date: 2011-12-29 00:00:00 Z
20
+ date: 2012-01-24 00:00:00 Z
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
23
23
  prerelease: false
24
- name: bundler
25
- version_requirements: &id001 !ruby/object:Gem::Requirement
24
+ type: :runtime
25
+ requirement: &id001 !ruby/object:Gem::Requirement
26
26
  none: false
27
27
  requirements:
28
28
  - - ~>
@@ -32,12 +32,28 @@ dependencies:
32
32
  - 1
33
33
  - 0
34
34
  version: "1.0"
35
+ name: bundler
36
+ version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ prerelease: false
35
39
  type: :runtime
36
- requirement: *id001
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ hash: 5
46
+ segments:
47
+ - 1
48
+ - 4
49
+ - 1
50
+ version: 1.4.1
51
+ name: rack
52
+ version_requirements: *id002
37
53
  - !ruby/object:Gem::Dependency
38
54
  prerelease: false
39
- name: sinatra
40
- version_requirements: &id002 !ruby/object:Gem::Requirement
55
+ type: :runtime
56
+ requirement: &id003 !ruby/object:Gem::Requirement
41
57
  none: false
42
58
  requirements:
43
59
  - - ~>
@@ -47,12 +63,12 @@ dependencies:
47
63
  - 1
48
64
  - 3
49
65
  version: "1.3"
50
- type: :runtime
51
- requirement: *id002
66
+ name: sinatra
67
+ version_requirements: *id003
52
68
  - !ruby/object:Gem::Dependency
53
69
  prerelease: false
54
- name: rake
55
- version_requirements: &id003 !ruby/object:Gem::Requirement
70
+ type: :runtime
71
+ requirement: &id004 !ruby/object:Gem::Requirement
56
72
  none: false
57
73
  requirements:
58
74
  - - ~>
@@ -63,28 +79,28 @@ dependencies:
63
79
  - 9
64
80
  - 2
65
81
  version: 0.9.2
66
- type: :runtime
67
- requirement: *id003
82
+ name: rake
83
+ version_requirements: *id004
68
84
  - !ruby/object:Gem::Dependency
69
85
  prerelease: false
70
- name: json
71
- version_requirements: &id004 !ruby/object:Gem::Requirement
86
+ type: :runtime
87
+ requirement: &id005 !ruby/object:Gem::Requirement
72
88
  none: false
73
89
  requirements:
74
90
  - - ~>
75
91
  - !ruby/object:Gem::Version
76
- hash: 3
92
+ hash: 15
77
93
  segments:
78
94
  - 1
79
- - 5
95
+ - 6
80
96
  - 0
81
- version: 1.5.0
82
- type: :runtime
83
- requirement: *id004
97
+ version: 1.6.0
98
+ name: json
99
+ version_requirements: *id005
84
100
  - !ruby/object:Gem::Dependency
85
101
  prerelease: false
86
- name: rubyzip
87
- version_requirements: &id005 !ruby/object:Gem::Requirement
102
+ type: :runtime
103
+ requirement: &id006 !ruby/object:Gem::Requirement
88
104
  none: false
89
105
  requirements:
90
106
  - - ~>
@@ -95,12 +111,12 @@ dependencies:
95
111
  - 9
96
112
  - 4
97
113
  version: 0.9.4
98
- type: :runtime
99
- requirement: *id005
114
+ name: rubyzip
115
+ version_requirements: *id006
100
116
  - !ruby/object:Gem::Dependency
101
117
  prerelease: false
102
- name: uuidtools
103
- version_requirements: &id006 !ruby/object:Gem::Requirement
118
+ type: :runtime
119
+ requirement: &id007 !ruby/object:Gem::Requirement
104
120
  none: false
105
121
  requirements:
106
122
  - - ">="
@@ -111,12 +127,12 @@ dependencies:
111
127
  - 1
112
128
  - 1
113
129
  version: 2.1.1
114
- type: :runtime
115
- requirement: *id006
130
+ name: uuidtools
131
+ version_requirements: *id007
116
132
  - !ruby/object:Gem::Dependency
117
133
  prerelease: false
118
- name: redis
119
- version_requirements: &id007 !ruby/object:Gem::Requirement
134
+ type: :runtime
135
+ requirement: &id008 !ruby/object:Gem::Requirement
120
136
  none: false
121
137
  requirements:
122
138
  - - ">="
@@ -127,12 +143,12 @@ dependencies:
127
143
  - 2
128
144
  - 0
129
145
  version: 2.2.0
130
- type: :runtime
131
- requirement: *id007
146
+ name: redis
147
+ version_requirements: *id008
132
148
  - !ruby/object:Gem::Dependency
133
149
  prerelease: false
134
- name: resque
135
- version_requirements: &id008 !ruby/object:Gem::Requirement
150
+ type: :runtime
151
+ requirement: &id009 !ruby/object:Gem::Requirement
136
152
  none: false
137
153
  requirements:
138
154
  - - ~>
@@ -143,12 +159,12 @@ dependencies:
143
159
  - 19
144
160
  - 0
145
161
  version: 1.19.0
146
- type: :runtime
147
- requirement: *id008
162
+ name: resque
163
+ version_requirements: *id009
148
164
  - !ruby/object:Gem::Dependency
149
165
  prerelease: false
150
- name: rest-client
151
- version_requirements: &id009 !ruby/object:Gem::Requirement
166
+ type: :runtime
167
+ requirement: &id010 !ruby/object:Gem::Requirement
152
168
  none: false
153
169
  requirements:
154
170
  - - ~>
@@ -159,12 +175,12 @@ dependencies:
159
175
  - 6
160
176
  - 1
161
177
  version: 1.6.1
162
- type: :runtime
163
- requirement: *id009
178
+ name: rest-client
179
+ version_requirements: *id010
164
180
  - !ruby/object:Gem::Dependency
165
181
  prerelease: false
166
- name: templater
167
- version_requirements: &id010 !ruby/object:Gem::Requirement
182
+ type: :runtime
183
+ requirement: &id011 !ruby/object:Gem::Requirement
168
184
  none: false
169
185
  requirements:
170
186
  - - ~>
@@ -175,8 +191,8 @@ dependencies:
175
191
  - 0
176
192
  - 0
177
193
  version: 1.0.0
178
- type: :runtime
179
- requirement: *id010
194
+ name: templater
195
+ version_requirements: *id011
180
196
  description: RhoConnect App Integration Server and related command-line utilities
181
197
  email: dev@rhomobile.com
182
198
  executables:
@@ -311,6 +327,7 @@ files:
311
327
  - doc/settings.txt
312
328
  - doc/source-adapters.txt
313
329
  - doc/stats-middleware.txt
330
+ - doc/supported-platforms.txt
314
331
  - doc/testing.txt
315
332
  - doc/tutorial.txt
316
333
  - doc/web-console.txt
@@ -617,7 +634,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
617
634
  requirements: []
618
635
 
619
636
  rubyforge_project:
620
- rubygems_version: 1.8.13
637
+ rubygems_version: 1.8.15
621
638
  signing_key:
622
639
  specification_version: 3
623
640
  summary: RhoConnect App Integration Server