data_fabric 1.2.4 → 1.2.5

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,5 +1,10 @@
1
1
  DataFabric changelog
2
2
 
3
+ v1.2.5 - 2009-03-28
4
+
5
+ - data_fabric should now work as a gem or plugin.
6
+ - Move from echoe to Jeweler for gem maintenance.
7
+
3
8
  v1.2.4 - 2009-03-09
4
9
 
5
10
  - Add FiveRuns Dash recipe for data_fabric. See http://dash.fiveruns.com for details.
data/README.rdoc CHANGED
@@ -15,6 +15,13 @@ basket. :-)
15
15
 
16
16
  gem install data_fabric
17
17
 
18
+ then in config/environment.rb, add a config.gem entry:
19
+
20
+ Rails::Initializer.run do |config|
21
+ ...
22
+ config.gem 'data_fabric'
23
+
24
+
18
25
  == How does it work?
19
26
 
20
27
  You describe the topology for your database infrastructure in your model(s).
@@ -63,6 +70,7 @@ ActionController around_filter based on the user as follows:
63
70
 
64
71
  * Sharded models should never be placed in the session store or you will get "Shard not set" errors when the session is persisted.
65
72
  * DataFabric does not support running with ActiveRecord's allow_concurrency = true in AR 2.0 and 2.1. allow_concurrency is gone in AR 2.2.
73
+ * DataFabric does not work in development mode with cache_classes = false. You will get an error in ActiveRecord's clear_reloadable_connections! method.
66
74
 
67
75
  == Testing and Bug Reports
68
76
 
data/Rakefile CHANGED
@@ -1,21 +1,54 @@
1
1
  require 'rubygems'
2
- require 'echoe'
3
2
 
4
- require File.dirname(__FILE__) << "/lib/data_fabric/version"
3
+ begin
4
+ require 'jeweler'
5
+
6
+ Jeweler::Tasks.new do |p|
7
+ p.authors = ["Mike Perham"]
8
+ p.email = 'mperham@gmail.com'
9
+ p.rubyforge_project = 'fiveruns'
10
+ p.summary = 'Sharding and replication support for ActiveRecord 2.x'
11
+ p.homepage = "http://github.com/mperham/data_fabric"
12
+ p.name = "data_fabric"
13
+ p.files = FileList['*.rdoc', 'Rakefile', 'VERSION.yml', 'init.rb', 'CHANGELOG', "{lib,test,rails,example,example22}/**/*", ]
14
+ end
15
+ rescue LoadError
16
+ puts "Jeweler, or one of its dependencies, is not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
17
+ end
18
+
19
+ require 'rake/testtask'
20
+
21
+ Rake::TestTask.new do |t|
22
+ t.verbose = true
23
+ t.test_files = FileList['test/*_test.rb']
24
+ end
25
+
26
+ task :gemspec => [:clean]
5
27
 
6
- Echoe.new 'data_fabric' do |p|
7
- p.version = DataFabric::Version::STRING
8
- p.author = "Mike Perham"
9
- p.email = 'mperham@gmail.com'
10
- p.project = 'fiveruns'
11
- p.summary = 'Sharding and replication support for ActiveRecord 2.x'
12
- p.url = "http://github.com/mperham/data_fabric"
13
- p.development_dependencies = []
14
- p.rubygems_version = nil
15
- p.include_rakefile = true
16
- p.test_pattern = 'test/*_test.rb'
28
+ task :clean do
29
+ FileUtils.rm_f Dir['*.gem']
30
+ FileUtils.rm_f Dir['test/*.db']
31
+ FileUtils.rm_rf 'pkg'
32
+ FileUtils.rm_rf 'coverage'
17
33
  end
18
34
 
35
+ desc "Install gem locally"
36
+ task :installer do
37
+ sh "sudo gem install data_fabric-*.gem"
38
+ end
39
+
40
+ task :gem do
41
+ sh "gem build data_fabric.gemspec"
42
+ end
43
+
44
+ desc "Push gem to RubyForge"
45
+ task :publish => [:clean, :gemspec, :gem, :installer] do
46
+ require 'lib/data_fabric/version'
47
+ sh "rubyforge add_release fiveruns data_fabric #{DataFabric::Version::STRING} data_fabric-#{DataFabric::Version::STRING}.gem"
48
+ end
49
+
50
+
51
+ task :default => :test
19
52
  task :test => [:pretest]
20
53
 
21
54
  desc "Test all versions of ActiveRecord installed locally"
data/VERSION.yml ADDED
@@ -0,0 +1,4 @@
1
+ ---
2
+ :minor: 2
3
+ :patch: 5
4
+ :major: 1
data/init.rb CHANGED
@@ -1 +1,3 @@
1
- DataFabric.init
1
+ # This file is just here for Rails 2.0 compatability. Rails 2.1+
2
+ # should use rails/init.rb.
3
+ DataFabric.init
@@ -1,5 +1,10 @@
1
+ require 'yaml'
2
+
1
3
  module DataFabric
2
- module Version
3
- STRING = "1.2.4"
4
- end
4
+ module Version
5
+ STRING = begin
6
+ data = YAML.load(File.read(File.dirname(__FILE__) << "/../../VERSION.yml"))
7
+ "#{data[:major]}.#{data[:minor]}.#{data[:patch]}"
8
+ end
9
+ end
5
10
  end
data/rails/init.rb ADDED
@@ -0,0 +1 @@
1
+ DataFabric.init
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: data_fabric
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.4
4
+ version: 1.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Perham
@@ -9,49 +9,75 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-03-09 00:00:00 -05:00
12
+ date: 2009-03-28 00:00:00 -05:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
16
- description: Sharding and replication support for ActiveRecord 2.x
16
+ description:
17
17
  email: mperham@gmail.com
18
18
  executables: []
19
19
 
20
20
  extensions: []
21
21
 
22
22
  extra_rdoc_files:
23
+ - README.rdoc
24
+ files:
25
+ - README.rdoc
26
+ - TESTING.rdoc
27
+ - Rakefile
28
+ - VERSION.yml
29
+ - init.rb
23
30
  - CHANGELOG
31
+ - lib/data_fabric
24
32
  - lib/data_fabric/ar20.rb
25
33
  - lib/data_fabric/ar22.rb
26
- - lib/data_fabric/version.rb
27
34
  - lib/data_fabric/dash.rb
35
+ - lib/data_fabric/version.rb
28
36
  - lib/data_fabric.rb
29
- - README.rdoc
30
- files:
31
- - CHANGELOG
37
+ - test/connection_test.rb
38
+ - test/database.yml
39
+ - test/database.yml.mysql
40
+ - test/database_test.rb
41
+ - test/shard_test.rb
42
+ - test/test_helper.rb
43
+ - test/thread_test.rb
44
+ - rails/init.rb
45
+ - example/app
46
+ - example/app/controllers
32
47
  - example/app/controllers/accounts_controller.rb
33
48
  - example/app/controllers/application.rb
34
49
  - example/app/controllers/figments_controller.rb
50
+ - example/app/helpers
35
51
  - example/app/helpers/accounts_helper.rb
36
52
  - example/app/helpers/application_helper.rb
37
53
  - example/app/helpers/figments_helper.rb
54
+ - example/app/models
38
55
  - example/app/models/account.rb
39
56
  - example/app/models/figment.rb
57
+ - example/app/views
58
+ - example/app/views/accounts
40
59
  - example/app/views/accounts/index.html.erb
60
+ - example/app/views/layouts
41
61
  - example/app/views/layouts/application.html.erb
62
+ - example/config
42
63
  - example/config/boot.rb
43
64
  - example/config/database.yml
44
65
  - example/config/environment.rb
66
+ - example/config/environments
45
67
  - example/config/environments/development.rb
46
68
  - example/config/environments/production.rb
47
69
  - example/config/environments/test.rb
70
+ - example/config/initializers
48
71
  - example/config/initializers/inflections.rb
49
72
  - example/config/initializers/mime_types.rb
50
73
  - example/config/initializers/new_rails_defaults.rb
51
74
  - example/config/routes.rb
75
+ - example/db
76
+ - example/db/migrate
52
77
  - example/db/migrate/20080702154628_create_accounts.rb
53
78
  - example/db/migrate/20080702154820_create_figments.rb
54
79
  - example/db/schema.rb
80
+ - example/public
55
81
  - example/public/404.html
56
82
  - example/public/422.html
57
83
  - example/public/500.html
@@ -59,48 +85,70 @@ files:
59
85
  - example/public/dispatch.fcgi
60
86
  - example/public/dispatch.rb
61
87
  - example/public/favicon.ico
88
+ - example/public/images
62
89
  - example/public/images/rails.png
63
90
  - example/public/robots.txt
64
91
  - example/Rakefile
92
+ - example/script
65
93
  - example/script/about
66
94
  - example/script/console
67
95
  - example/script/dbconsole
68
96
  - example/script/destroy
69
97
  - example/script/generate
98
+ - example/script/performance
70
99
  - example/script/performance/benchmarker
71
100
  - example/script/performance/profiler
72
101
  - example/script/performance/request
73
102
  - example/script/plugin
103
+ - example/script/process
74
104
  - example/script/process/inspector
75
105
  - example/script/process/reaper
76
106
  - example/script/process/spawner
77
107
  - example/script/runner
78
108
  - example/script/server
109
+ - example/test
110
+ - example/test/fixtures
79
111
  - example/test/fixtures/accounts.yml
112
+ - example/test/functional
80
113
  - example/test/functional/accounts_controller_test.rb
114
+ - example/test/integration
81
115
  - example/test/integration/account_figments_test.rb
82
116
  - example/test/test_helper.rb
117
+ - example22/app
118
+ - example22/app/controllers
83
119
  - example22/app/controllers/accounts_controller.rb
84
120
  - example22/app/controllers/application.rb
85
121
  - example22/app/controllers/figments_controller.rb
122
+ - example22/app/helpers
86
123
  - example22/app/helpers/application_helper.rb
124
+ - example22/app/models
87
125
  - example22/app/models/account.rb
88
126
  - example22/app/models/figment.rb
127
+ - example22/app/views
128
+ - example22/app/views/accounts
89
129
  - example22/app/views/accounts/index.html.erb
130
+ - example22/app/views/layouts
90
131
  - example22/app/views/layouts/application.html.erb
132
+ - example22/config
91
133
  - example22/config/boot.rb
92
134
  - example22/config/database.yml
93
135
  - example22/config/environment.rb
136
+ - example22/config/environments
94
137
  - example22/config/environments/development.rb
95
138
  - example22/config/environments/production.rb
96
139
  - example22/config/environments/test.rb
140
+ - example22/config/initializers
97
141
  - example22/config/initializers/inflections.rb
98
142
  - example22/config/initializers/mime_types.rb
99
143
  - example22/config/initializers/new_rails_defaults.rb
144
+ - example22/config/locales
100
145
  - example22/config/locales/en.yml
101
146
  - example22/config/routes.rb
147
+ - example22/db
148
+ - example22/db/migrate
102
149
  - example22/db/migrate/20080702154628_create_accounts.rb
103
150
  - example22/db/migrate/20080702154820_create_figments.rb
151
+ - example22/public
104
152
  - example22/public/404.html
105
153
  - example22/public/422.html
106
154
  - example22/public/500.html
@@ -108,57 +156,44 @@ files:
108
156
  - example22/public/dispatch.fcgi
109
157
  - example22/public/dispatch.rb
110
158
  - example22/public/favicon.ico
159
+ - example22/public/images
111
160
  - example22/public/images/rails.png
112
161
  - example22/public/index.html
113
162
  - example22/public/robots.txt
114
163
  - example22/Rakefile
164
+ - example22/script
115
165
  - example22/script/about
116
166
  - example22/script/console
117
167
  - example22/script/dbconsole
118
168
  - example22/script/destroy
119
169
  - example22/script/generate
170
+ - example22/script/performance
120
171
  - example22/script/performance/benchmarker
121
172
  - example22/script/performance/profiler
122
173
  - example22/script/performance/request
123
174
  - example22/script/plugin
175
+ - example22/script/process
124
176
  - example22/script/process/inspector
125
177
  - example22/script/process/reaper
126
178
  - example22/script/process/spawner
127
179
  - example22/script/runner
128
180
  - example22/script/server
181
+ - example22/test
182
+ - example22/test/fixtures
129
183
  - example22/test/fixtures/accounts.yml
184
+ - example22/test/functional
130
185
  - example22/test/functional/accounts_controller_test.rb
186
+ - example22/test/integration
131
187
  - example22/test/integration/account_figments_test.rb
188
+ - example22/test/performance
132
189
  - example22/test/performance/browsing_test.rb
133
190
  - example22/test/test_helper.rb
134
- - init.rb
135
- - lib/data_fabric/ar20.rb
136
- - lib/data_fabric/ar22.rb
137
- - lib/data_fabric/version.rb
138
- - lib/data_fabric/dash.rb
139
- - lib/data_fabric.rb
140
- - Manifest
141
- - Rakefile
142
- - README.rdoc
143
- - test/connection_test.rb
144
- - test/database.yml
145
- - test/database.yml.mysql
146
- - test/database_test.rb
147
- - test/shard_test.rb
148
- - test/test_helper.rb
149
- - test/thread_test.rb
150
- - TESTING.rdoc
151
- - data_fabric.gemspec
152
191
  has_rdoc: true
153
192
  homepage: http://github.com/mperham/data_fabric
154
193
  post_install_message:
155
194
  rdoc_options:
156
- - --line-numbers
157
195
  - --inline-source
158
- - --title
159
- - Data_fabric
160
- - --main
161
- - README.rdoc
196
+ - --charset=UTF-8
162
197
  require_paths:
163
198
  - lib
164
199
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -180,8 +215,5 @@ rubygems_version: 1.3.1
180
215
  signing_key:
181
216
  specification_version: 2
182
217
  summary: Sharding and replication support for ActiveRecord 2.x
183
- test_files:
184
- - test/connection_test.rb
185
- - test/database_test.rb
186
- - test/shard_test.rb
187
- - test/thread_test.rb
218
+ test_files: []
219
+
data/Manifest DELETED
@@ -1,120 +0,0 @@
1
- CHANGELOG
2
- example/app/controllers/accounts_controller.rb
3
- example/app/controllers/application.rb
4
- example/app/controllers/figments_controller.rb
5
- example/app/helpers/accounts_helper.rb
6
- example/app/helpers/application_helper.rb
7
- example/app/helpers/figments_helper.rb
8
- example/app/models/account.rb
9
- example/app/models/figment.rb
10
- example/app/views/accounts/index.html.erb
11
- example/app/views/layouts/application.html.erb
12
- example/config/boot.rb
13
- example/config/database.yml
14
- example/config/environment.rb
15
- example/config/environments/development.rb
16
- example/config/environments/production.rb
17
- example/config/environments/test.rb
18
- example/config/initializers/inflections.rb
19
- example/config/initializers/mime_types.rb
20
- example/config/initializers/new_rails_defaults.rb
21
- example/config/routes.rb
22
- example/db/migrate/20080702154628_create_accounts.rb
23
- example/db/migrate/20080702154820_create_figments.rb
24
- example/db/schema.rb
25
- example/public/404.html
26
- example/public/422.html
27
- example/public/500.html
28
- example/public/dispatch.cgi
29
- example/public/dispatch.fcgi
30
- example/public/dispatch.rb
31
- example/public/favicon.ico
32
- example/public/images/rails.png
33
- example/public/robots.txt
34
- example/Rakefile
35
- example/script/about
36
- example/script/console
37
- example/script/dbconsole
38
- example/script/destroy
39
- example/script/generate
40
- example/script/performance/benchmarker
41
- example/script/performance/profiler
42
- example/script/performance/request
43
- example/script/plugin
44
- example/script/process/inspector
45
- example/script/process/reaper
46
- example/script/process/spawner
47
- example/script/runner
48
- example/script/server
49
- example/test/fixtures/accounts.yml
50
- example/test/functional/accounts_controller_test.rb
51
- example/test/integration/account_figments_test.rb
52
- example/test/test_helper.rb
53
- example22/app/controllers/accounts_controller.rb
54
- example22/app/controllers/application.rb
55
- example22/app/controllers/figments_controller.rb
56
- example22/app/helpers/application_helper.rb
57
- example22/app/models/account.rb
58
- example22/app/models/figment.rb
59
- example22/app/views/accounts/index.html.erb
60
- example22/app/views/layouts/application.html.erb
61
- example22/config/boot.rb
62
- example22/config/database.yml
63
- example22/config/environment.rb
64
- example22/config/environments/development.rb
65
- example22/config/environments/production.rb
66
- example22/config/environments/test.rb
67
- example22/config/initializers/inflections.rb
68
- example22/config/initializers/mime_types.rb
69
- example22/config/initializers/new_rails_defaults.rb
70
- example22/config/locales/en.yml
71
- example22/config/routes.rb
72
- example22/db/migrate/20080702154628_create_accounts.rb
73
- example22/db/migrate/20080702154820_create_figments.rb
74
- example22/public/404.html
75
- example22/public/422.html
76
- example22/public/500.html
77
- example22/public/dispatch.cgi
78
- example22/public/dispatch.fcgi
79
- example22/public/dispatch.rb
80
- example22/public/favicon.ico
81
- example22/public/images/rails.png
82
- example22/public/index.html
83
- example22/public/robots.txt
84
- example22/Rakefile
85
- example22/script/about
86
- example22/script/console
87
- example22/script/dbconsole
88
- example22/script/destroy
89
- example22/script/generate
90
- example22/script/performance/benchmarker
91
- example22/script/performance/profiler
92
- example22/script/performance/request
93
- example22/script/plugin
94
- example22/script/process/inspector
95
- example22/script/process/reaper
96
- example22/script/process/spawner
97
- example22/script/runner
98
- example22/script/server
99
- example22/test/fixtures/accounts.yml
100
- example22/test/functional/accounts_controller_test.rb
101
- example22/test/integration/account_figments_test.rb
102
- example22/test/performance/browsing_test.rb
103
- example22/test/test_helper.rb
104
- init.rb
105
- lib/data_fabric/ar20.rb
106
- lib/data_fabric/ar22.rb
107
- lib/data_fabric/version.rb
108
- lib/data_fabric/dash.rb
109
- lib/data_fabric.rb
110
- Manifest
111
- Rakefile
112
- README.rdoc
113
- test/connection_test.rb
114
- test/database.yml
115
- test/database.yml.mysql
116
- test/database_test.rb
117
- test/shard_test.rb
118
- test/test_helper.rb
119
- test/thread_test.rb
120
- TESTING.rdoc
data/data_fabric.gemspec DELETED
@@ -1,32 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
-
3
- Gem::Specification.new do |s|
4
- s.name = %q{data_fabric}
5
- s.version = "1.2.4"
6
-
7
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
- s.authors = ["Mike Perham"]
9
- s.date = %q{2009-03-09}
10
- s.description = %q{Sharding and replication support for ActiveRecord 2.x}
11
- s.email = %q{mperham@gmail.com}
12
- s.extra_rdoc_files = ["CHANGELOG", "lib/data_fabric/ar20.rb", "lib/data_fabric/ar22.rb", "lib/data_fabric/version.rb", "lib/data_fabric/dash.rb", "lib/data_fabric.rb", "README.rdoc"]
13
- s.files = ["CHANGELOG", "example/app/controllers/accounts_controller.rb", "example/app/controllers/application.rb", "example/app/controllers/figments_controller.rb", "example/app/helpers/accounts_helper.rb", "example/app/helpers/application_helper.rb", "example/app/helpers/figments_helper.rb", "example/app/models/account.rb", "example/app/models/figment.rb", "example/app/views/accounts/index.html.erb", "example/app/views/layouts/application.html.erb", "example/config/boot.rb", "example/config/database.yml", "example/config/environment.rb", "example/config/environments/development.rb", "example/config/environments/production.rb", "example/config/environments/test.rb", "example/config/initializers/inflections.rb", "example/config/initializers/mime_types.rb", "example/config/initializers/new_rails_defaults.rb", "example/config/routes.rb", "example/db/migrate/20080702154628_create_accounts.rb", "example/db/migrate/20080702154820_create_figments.rb", "example/db/schema.rb", "example/public/404.html", "example/public/422.html", "example/public/500.html", "example/public/dispatch.cgi", "example/public/dispatch.fcgi", "example/public/dispatch.rb", "example/public/favicon.ico", "example/public/images/rails.png", "example/public/robots.txt", "example/Rakefile", "example/script/about", "example/script/console", "example/script/dbconsole", "example/script/destroy", "example/script/generate", "example/script/performance/benchmarker", "example/script/performance/profiler", "example/script/performance/request", "example/script/plugin", "example/script/process/inspector", "example/script/process/reaper", "example/script/process/spawner", "example/script/runner", "example/script/server", "example/test/fixtures/accounts.yml", "example/test/functional/accounts_controller_test.rb", "example/test/integration/account_figments_test.rb", "example/test/test_helper.rb", "example22/app/controllers/accounts_controller.rb", "example22/app/controllers/application.rb", "example22/app/controllers/figments_controller.rb", "example22/app/helpers/application_helper.rb", "example22/app/models/account.rb", "example22/app/models/figment.rb", "example22/app/views/accounts/index.html.erb", "example22/app/views/layouts/application.html.erb", "example22/config/boot.rb", "example22/config/database.yml", "example22/config/environment.rb", "example22/config/environments/development.rb", "example22/config/environments/production.rb", "example22/config/environments/test.rb", "example22/config/initializers/inflections.rb", "example22/config/initializers/mime_types.rb", "example22/config/initializers/new_rails_defaults.rb", "example22/config/locales/en.yml", "example22/config/routes.rb", "example22/db/migrate/20080702154628_create_accounts.rb", "example22/db/migrate/20080702154820_create_figments.rb", "example22/public/404.html", "example22/public/422.html", "example22/public/500.html", "example22/public/dispatch.cgi", "example22/public/dispatch.fcgi", "example22/public/dispatch.rb", "example22/public/favicon.ico", "example22/public/images/rails.png", "example22/public/index.html", "example22/public/robots.txt", "example22/Rakefile", "example22/script/about", "example22/script/console", "example22/script/dbconsole", "example22/script/destroy", "example22/script/generate", "example22/script/performance/benchmarker", "example22/script/performance/profiler", "example22/script/performance/request", "example22/script/plugin", "example22/script/process/inspector", "example22/script/process/reaper", "example22/script/process/spawner", "example22/script/runner", "example22/script/server", "example22/test/fixtures/accounts.yml", "example22/test/functional/accounts_controller_test.rb", "example22/test/integration/account_figments_test.rb", "example22/test/performance/browsing_test.rb", "example22/test/test_helper.rb", "init.rb", "lib/data_fabric/ar20.rb", "lib/data_fabric/ar22.rb", "lib/data_fabric/version.rb", "lib/data_fabric/dash.rb", "lib/data_fabric.rb", "Manifest", "Rakefile", "README.rdoc", "test/connection_test.rb", "test/database.yml", "test/database.yml.mysql", "test/database_test.rb", "test/shard_test.rb", "test/test_helper.rb", "test/thread_test.rb", "TESTING.rdoc", "data_fabric.gemspec"]
14
- s.has_rdoc = true
15
- s.homepage = %q{http://github.com/mperham/data_fabric}
16
- s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Data_fabric", "--main", "README.rdoc"]
17
- s.require_paths = ["lib"]
18
- s.rubyforge_project = %q{fiveruns}
19
- s.rubygems_version = %q{1.3.1}
20
- s.summary = %q{Sharding and replication support for ActiveRecord 2.x}
21
- s.test_files = ["test/connection_test.rb", "test/database_test.rb", "test/shard_test.rb", "test/thread_test.rb"]
22
-
23
- if s.respond_to? :specification_version then
24
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
25
- s.specification_version = 2
26
-
27
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
28
- else
29
- end
30
- else
31
- end
32
- end