milia 0.3.34 → 0.3.38

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -3,14 +3,14 @@ source "http://rubygems.org"
3
3
  # Example:
4
4
  # gem "activesupport", ">= 2.3.5"
5
5
 
6
- gem 'rails', '>= 3.2.9'
6
+ gem 'rails', '3.2.13'
7
7
  gem 'devise', "2.1.2"
8
8
 
9
9
  # Add dependencies to develop your gem here.
10
10
  # Include everything needed to run rake, tests, features, etc.
11
11
  group :development, :test do
12
12
  gem 'pg'
13
- gem "shoulda", ">= 0"
13
+ gem "shoulda", "3.5.0"
14
14
  gem "jeweler", "~> 1.6.4"
15
15
  gem 'rdoc'
16
16
  gem 'turn', :require => false
@@ -1,32 +1,32 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- actionmailer (3.2.9)
5
- actionpack (= 3.2.9)
6
- mail (~> 2.4.4)
7
- actionpack (3.2.9)
8
- activemodel (= 3.2.9)
9
- activesupport (= 3.2.9)
4
+ actionmailer (3.2.13)
5
+ actionpack (= 3.2.13)
6
+ mail (~> 2.5.3)
7
+ actionpack (3.2.13)
8
+ activemodel (= 3.2.13)
9
+ activesupport (= 3.2.13)
10
10
  builder (~> 3.0.0)
11
11
  erubis (~> 2.7.0)
12
12
  journey (~> 1.0.4)
13
- rack (~> 1.4.0)
13
+ rack (~> 1.4.5)
14
14
  rack-cache (~> 1.2)
15
15
  rack-test (~> 0.6.1)
16
16
  sprockets (~> 2.2.1)
17
- activemodel (3.2.9)
18
- activesupport (= 3.2.9)
17
+ activemodel (3.2.13)
18
+ activesupport (= 3.2.13)
19
19
  builder (~> 3.0.0)
20
- activerecord (3.2.9)
21
- activemodel (= 3.2.9)
22
- activesupport (= 3.2.9)
20
+ activerecord (3.2.13)
21
+ activemodel (= 3.2.13)
22
+ activesupport (= 3.2.13)
23
23
  arel (~> 3.0.2)
24
24
  tzinfo (~> 0.3.29)
25
- activeresource (3.2.9)
26
- activemodel (= 3.2.9)
27
- activesupport (= 3.2.9)
28
- activesupport (3.2.9)
29
- i18n (~> 0.6)
25
+ activeresource (3.2.13)
26
+ activemodel (= 3.2.13)
27
+ activesupport (= 3.2.13)
28
+ activesupport (3.2.13)
29
+ i18n (= 0.6.1)
30
30
  multi_json (~> 1.0)
31
31
  ansi (1.4.3)
32
32
  arel (3.0.2)
@@ -39,67 +39,66 @@ GEM
39
39
  warden (~> 1.2.1)
40
40
  erubis (2.7.0)
41
41
  git (1.2.5)
42
- hike (1.2.1)
42
+ hike (1.2.3)
43
43
  i18n (0.6.1)
44
44
  jeweler (1.6.4)
45
45
  bundler (~> 1.0)
46
46
  git (>= 1.2.5)
47
47
  rake
48
48
  journey (1.0.4)
49
- json (1.7.5)
50
- mail (2.4.4)
51
- i18n (>= 0.4.0)
49
+ json (1.8.0)
50
+ mail (2.5.4)
52
51
  mime-types (~> 1.16)
53
52
  treetop (~> 1.4.8)
54
- mime-types (1.19)
55
- multi_json (1.3.7)
53
+ mime-types (1.23)
54
+ multi_json (1.7.6)
56
55
  orm_adapter (0.4.0)
57
- pg (0.14.1)
56
+ pg (0.15.1)
58
57
  polyglot (0.3.3)
59
- rack (1.4.1)
58
+ rack (1.4.5)
60
59
  rack-cache (1.2)
61
60
  rack (>= 0.4)
62
- rack-ssl (1.3.2)
61
+ rack-ssl (1.3.3)
63
62
  rack
64
63
  rack-test (0.6.2)
65
64
  rack (>= 1.0)
66
- rails (3.2.9)
67
- actionmailer (= 3.2.9)
68
- actionpack (= 3.2.9)
69
- activerecord (= 3.2.9)
70
- activeresource (= 3.2.9)
71
- activesupport (= 3.2.9)
65
+ rails (3.2.13)
66
+ actionmailer (= 3.2.13)
67
+ actionpack (= 3.2.13)
68
+ activerecord (= 3.2.13)
69
+ activeresource (= 3.2.13)
70
+ activesupport (= 3.2.13)
72
71
  bundler (~> 1.0)
73
- railties (= 3.2.9)
74
- railties (3.2.9)
75
- actionpack (= 3.2.9)
76
- activesupport (= 3.2.9)
72
+ railties (= 3.2.13)
73
+ railties (3.2.13)
74
+ actionpack (= 3.2.13)
75
+ activesupport (= 3.2.13)
77
76
  rack-ssl (~> 1.3.2)
78
77
  rake (>= 0.8.7)
79
78
  rdoc (~> 3.4)
80
79
  thor (>= 0.14.6, < 2.0)
81
- rake (10.0.2)
82
- rdoc (3.12)
80
+ rake (10.0.4)
81
+ rdoc (3.12.2)
83
82
  json (~> 1.4)
84
- shoulda (3.3.2)
85
- shoulda-context (~> 1.0.1)
86
- shoulda-matchers (~> 1.4.1)
87
- shoulda-context (1.0.1)
88
- shoulda-matchers (1.4.1)
83
+ shoulda (3.5.0)
84
+ shoulda-context (~> 1.0, >= 1.0.1)
85
+ shoulda-matchers (>= 1.4.1, < 3.0)
86
+ shoulda-context (1.1.2)
87
+ shoulda-matchers (2.1.0)
89
88
  activesupport (>= 3.0.0)
90
89
  sprockets (2.2.2)
91
90
  hike (~> 1.2)
92
91
  multi_json (~> 1.0)
93
92
  rack (~> 1.0)
94
93
  tilt (~> 1.1, != 1.3.0)
95
- thor (0.16.0)
96
- tilt (1.3.3)
97
- treetop (1.4.12)
94
+ thor (0.18.1)
95
+ tilt (1.4.1)
96
+ treetop (1.4.14)
98
97
  polyglot
99
98
  polyglot (>= 0.3.1)
100
99
  turn (0.9.6)
101
100
  ansi
102
- tzinfo (0.3.35)
101
+ tzinfo (0.3.37)
103
102
  warden (1.2.1)
104
103
  rack (>= 1.0)
105
104
 
@@ -110,7 +109,7 @@ DEPENDENCIES
110
109
  devise (= 2.1.2)
111
110
  jeweler (~> 1.6.4)
112
111
  pg
113
- rails (>= 3.2.9)
112
+ rails (= 3.2.13)
114
113
  rdoc
115
- shoulda
114
+ shoulda (= 3.5.0)
116
115
  turn
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # milia
2
2
 
3
- Milia is a multi-tenanting gem for hosted Rails 3.1 applications which use
4
- devise for user authentication.
3
+ Milia is a multi-tenanting gem for hosted Rails 3.1 applications which uses
4
+ the devise gem for user authentication.
5
5
 
6
6
  ## Basic concepts
7
7
 
@@ -21,6 +21,14 @@ performance hit, was seriously time-consuming to backup and restore, was invasiv
21
21
  into the Rails code structure (monkey patching), was complex to implement, and
22
22
  couldn't use Rails migration tools as-is.
23
23
 
24
+ A tenant == an organization; users == members of the organization.
25
+ Only organizations sign up for new tenants, not members (users).
26
+ The very first user of an organization, let's call him the Organizer,
27
+ is the one responsible for initiating the organizational signup.
28
+ The Organizer becomes the first member (user) of the organization (tenant).
29
+ Thereafter, other members only obtain entry to the organization (tenant)
30
+ by invitation. New tenants are not created for every new user.
31
+
24
32
  ## Structure
25
33
 
26
34
  * necessary models: user, tenant
@@ -143,6 +151,42 @@ catch any exceptions with the following (be sure to also add the designated meth
143
151
  rescue_from ::Milia::Control::InvalidTenantAccess, :with => :invalid_tenant
144
152
  ```
145
153
 
154
+ You'll need to place prep_signup_view method in application_controller.rb; it sets up any attributes required by your signup form. below is the example from my application.
155
+
156
+ ```ruby
157
+ # ------------------------------------------------------------------------------
158
+ # klass_option_obj -- returns a (new?) object of a given klass
159
+ # purpose is to handle the variety of ways to prepare for a view
160
+ # args:
161
+ # klass -- class of object to be returned
162
+ # option_obj -- any one of the following
163
+ # -- nil -- will return klass.new
164
+ # -- object -- will return the object itself
165
+ # -- hash -- will return klass.new( hash ) for parameters
166
+ # ------------------------------------------------------------------------------
167
+ def klass_option_obj(klass, option_obj)
168
+ return option_obj if option_obj.instance_of?(klass)
169
+ option_obj ||= {} # if nil, makes it empty hash
170
+ return klass.send( :new, option_obj )
171
+ end
172
+
173
+ # ------------------------------------------------------------------------------
174
+ # prep_signup_view -- prepares for the signup view
175
+ # args:
176
+ # tenant: either existing tenant obj or params for tenant
177
+ # user: either existing user obj or params for user
178
+ # ------------------------------------------------------------------------------
179
+ def prep_signup_view(tenant=nil, user=nil, coupon='')
180
+ @user = klass_option_obj( User, user )
181
+ @tenant = klass_option_obj( Tenant, tenant )
182
+ @coupon = coupon
183
+ @eula = Eula.get_latest.first
184
+ end
185
+ ```
186
+
187
+ My signup form has fields for user's email, organization's name (tenant model), coupon code, and current EULA version.
188
+
189
+
146
190
  #### routes
147
191
 
148
192
  Add the following line into the devise_for :users block
@@ -150,9 +194,7 @@ Add the following line into the devise_for :users block
150
194
  <i>config/routes.rb</i>
151
195
 
152
196
  ```ruby
153
- devise_for :users do
154
- post "users" => "milia/registrations#create"
155
- end
197
+ devise_for :users, :controllers => { :registrations => "milia/registrations" }
156
198
  ```
157
199
 
158
200
  ### Designate which model determines account
@@ -354,8 +396,6 @@ load when I start the console. This does the following:
354
396
  change_tenant(1,1) # or whatever is an appropriate starting user, tenant
355
397
  ```
356
398
 
357
-
358
-
359
399
  ## Cautions
360
400
 
361
401
  * Milia designates a default_scope for all models (both universal and tenanted). From Rails 3.2 onwards, the last designated default scope overrides any prior scopes and will invalidate multi-tenanting; so *DO NOT USE default_scope*
@@ -364,6 +404,11 @@ change_tenant(1,1) # or whatever is an appropriate starting user, tenant
364
404
  * The tenant_id of a universal model will always be forced to nil.
365
405
  * The tenant_id of a tenanted model will be set to the current_tenant of the current_user upon creation.
366
406
 
407
+ ## Further documentation
408
+ * Check out the three-part blog discussion of _Multi-tenanting Ruby on Rails Applications on Heroku_
409
+ at: http://myrailscraft.blogspot.com/2013/05/multi-tenanting-ruby-on-rails.html
410
+ * See the Milia tutorial at: http://myrailscraft.blogspot.com/2013/05/multi-tenanting-ruby-on-rails_3982.html
411
+
367
412
 
368
413
  ## Contributing to milia
369
414
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.34
1
+ 0.3.38
@@ -28,19 +28,22 @@ module Milia
28
28
 
29
29
  # ..........................callback enforcers............................
30
30
  before_save do |obj| # force tenant_id to be correct for current_user
31
- obj.tenant_id = Thread.current[:tenant_id]
31
+ # raise exception if updates attempted on wrong data
32
+ raise ::Milia::Control::InvalidTenantAccess unless obj.tenant_id == Thread.current[:tenant_id]
32
33
  true # ok to proceed
33
34
  end
34
35
 
35
36
  # ..........................callback enforcers............................
36
- before_update do |obj| # force tenant_id to be correct for current_user
37
- raise ::Control::InvalidTenantAccess unless obj.tenant_id == Thread.current[:tenant_id]
38
- true # ok to proceed
39
- end
37
+ # no longer needed because before_save invoked prior to before_update
38
+ #
39
+ # before_update do |obj| # force tenant_id to be correct for current_user
40
+ # raise ::Milia::Control::InvalidTenantAccess unless obj.tenant_id == Thread.current[:tenant_id]
41
+ # true # ok to proceed
42
+ # end
40
43
 
41
44
  # ..........................callback enforcers............................
42
45
  before_destroy do |obj| # force tenant_id to be correct for current_user
43
- raise ::Control::InvalidTenantAccess unless obj.tenant_id == Thread.current[:tenant_id]
46
+ raise ::Milia::Control::InvalidTenantAccess unless obj.tenant_id == Thread.current[:tenant_id]
44
47
  true # ok to proceed
45
48
  end
46
49
 
@@ -58,19 +61,21 @@ module Milia
58
61
 
59
62
  # ..........................callback enforcers............................
60
63
  before_save do |obj| # force tenant_id to be universal
61
- raise ::Control::InvalidTenantAccess unless obj.tenant_id.nil?
64
+ raise ::Milia::Control::InvalidTenantAccess unless obj.tenant_id.nil?
62
65
  true # ok to proceed
63
66
  end
64
67
 
65
68
  # ..........................callback enforcers............................
66
- before_update do |obj| # force tenant_id to be universal
67
- raise ::Control::InvalidTenantAccess unless obj.tenant_id.nil?
68
- true # ok to proceed
69
- end
69
+ # before_update do |obj| # force tenant_id to be universal
70
+ # no longer needed because before_save invoked prior to before_update
71
+ #
72
+ # raise ::Milia::Control::InvalidTenantAccess unless obj.tenant_id.nil?
73
+ # true # ok to proceed
74
+ # end
70
75
 
71
76
  # ..........................callback enforcers............................
72
77
  before_destroy do |obj| # force tenant_id to be universal
73
- raise ::Control::InvalidTenantAccess unless obj.tenant_id.nil?
78
+ raise ::Milia::Control::InvalidTenantAccess unless obj.tenant_id.nil?
74
79
  true # ok to proceed
75
80
  end
76
81
 
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "milia"
8
- s.version = "0.3.34"
8
+ s.version = "0.3.38"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["David Anderson"]
12
- s.date = "2013-01-19"
12
+ s.date = "2013-06-11"
13
13
  s.description = "Transparent Multi-tenanting for hosted Rails 3.1+/Ruby 1.9.2 applications"
14
14
  s.email = "dsaronin@gmail.com"
15
15
  s.extra_rdoc_files = [
@@ -40,6 +40,7 @@ Gem::Specification.new do |s|
40
40
  "test/rails_app/.gitignore",
41
41
  "test/rails_app/Gemfile",
42
42
  "test/rails_app/Gemfile.lock",
43
+ "test/rails_app/Gemfile.lock.backup",
43
44
  "test/rails_app/Procfile",
44
45
  "test/rails_app/README",
45
46
  "test/rails_app/Rakefile",
@@ -134,27 +135,27 @@ Gem::Specification.new do |s|
134
135
  s.specification_version = 3
135
136
 
136
137
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
137
- s.add_runtime_dependency(%q<rails>, [">= 3.2.9"])
138
+ s.add_runtime_dependency(%q<rails>, ["= 3.2.13"])
138
139
  s.add_runtime_dependency(%q<devise>, ["= 2.1.2"])
139
140
  s.add_development_dependency(%q<pg>, [">= 0"])
140
- s.add_development_dependency(%q<shoulda>, [">= 0"])
141
+ s.add_development_dependency(%q<shoulda>, ["= 3.5.0"])
141
142
  s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
142
143
  s.add_development_dependency(%q<rdoc>, [">= 0"])
143
144
  s.add_development_dependency(%q<turn>, [">= 0"])
144
145
  else
145
- s.add_dependency(%q<rails>, [">= 3.2.9"])
146
+ s.add_dependency(%q<rails>, ["= 3.2.13"])
146
147
  s.add_dependency(%q<devise>, ["= 2.1.2"])
147
148
  s.add_dependency(%q<pg>, [">= 0"])
148
- s.add_dependency(%q<shoulda>, [">= 0"])
149
+ s.add_dependency(%q<shoulda>, ["= 3.5.0"])
149
150
  s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
150
151
  s.add_dependency(%q<rdoc>, [">= 0"])
151
152
  s.add_dependency(%q<turn>, [">= 0"])
152
153
  end
153
154
  else
154
- s.add_dependency(%q<rails>, [">= 3.2.9"])
155
+ s.add_dependency(%q<rails>, ["= 3.2.13"])
155
156
  s.add_dependency(%q<devise>, ["= 2.1.2"])
156
157
  s.add_dependency(%q<pg>, [">= 0"])
157
- s.add_dependency(%q<shoulda>, [">= 0"])
158
+ s.add_dependency(%q<shoulda>, ["= 3.5.0"])
158
159
  s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
159
160
  s.add_dependency(%q<rdoc>, [">= 0"])
160
161
  s.add_dependency(%q<turn>, [">= 0"])
@@ -1,6 +1,6 @@
1
1
  source 'http://rubygems.org'
2
2
 
3
- gem 'rails', '3.1.1'
3
+ gem 'rails', '3.2.13'
4
4
 
5
5
  # Bundle edge Rails instead:
6
6
  # gem 'rails', :git => 'git://github.com/rails/rails.git'
@@ -8,15 +8,15 @@ gem 'rails', '3.1.1'
8
8
  gem 'thin'
9
9
  gem 'pg'
10
10
  gem 'rdoc'
11
- gem 'devise', ">= 1.4.8"
11
+ gem 'devise', ">= 2.1.2"
12
12
  gem 'foreman'
13
13
 
14
14
 
15
15
  # Gems used only for assets and not required
16
16
  # in production environments by default.
17
17
  group :assets do
18
- gem 'sass-rails', '~> 3.1.4'
19
- gem 'coffee-rails', '~> 3.1.1'
18
+ gem 'sass-rails', '> 3.2'
19
+ gem 'coffee-rails', '> 3.2'
20
20
  gem 'uglifier', '>= 1.0.3'
21
21
  gem 'execjs'
22
22
  gem 'therubyracer'
@@ -38,9 +38,11 @@ gem 'jquery-rails'
38
38
 
39
39
  group :test do
40
40
  gem "factory_girl_rails", "~> 1.2"
41
- gem "shoulda", ">= 0"
41
+ gem "shoulda", "3.5.0"
42
+ gem "shoulda-matchers", "~>2.1.0"
43
+ gem "shoulda-context", "~>1.1.2"
42
44
  # Pretty printed test output
43
45
  gem 'turn', :require => false
44
46
  end
45
47
 
46
- gem 'milia', :path => "../../../milia"
48
+ gem 'milia', :path => "../../../milia"
@@ -1,161 +1,167 @@
1
1
  PATH
2
2
  remote: ../../../milia
3
3
  specs:
4
- milia (0.3.7)
5
- devise (>= 1.4.8)
6
- rails (>= 3.1)
4
+ milia (0.3.37)
5
+ devise (= 2.1.2)
6
+ rails (= 3.2.13)
7
7
 
8
8
  GEM
9
9
  remote: http://rubygems.org/
10
10
  specs:
11
- actionmailer (3.1.1)
12
- actionpack (= 3.1.1)
13
- mail (~> 2.3.0)
14
- actionpack (3.1.1)
15
- activemodel (= 3.1.1)
16
- activesupport (= 3.1.1)
11
+ actionmailer (3.2.13)
12
+ actionpack (= 3.2.13)
13
+ mail (~> 2.5.3)
14
+ actionpack (3.2.13)
15
+ activemodel (= 3.2.13)
16
+ activesupport (= 3.2.13)
17
17
  builder (~> 3.0.0)
18
18
  erubis (~> 2.7.0)
19
- i18n (~> 0.6)
20
- rack (~> 1.3.2)
21
- rack-cache (~> 1.1)
22
- rack-mount (~> 0.8.2)
19
+ journey (~> 1.0.4)
20
+ rack (~> 1.4.5)
21
+ rack-cache (~> 1.2)
23
22
  rack-test (~> 0.6.1)
24
- sprockets (~> 2.0.2)
25
- activemodel (3.1.1)
26
- activesupport (= 3.1.1)
23
+ sprockets (~> 2.2.1)
24
+ activemodel (3.2.13)
25
+ activesupport (= 3.2.13)
27
26
  builder (~> 3.0.0)
28
- i18n (~> 0.6)
29
- activerecord (3.1.1)
30
- activemodel (= 3.1.1)
31
- activesupport (= 3.1.1)
32
- arel (~> 2.2.1)
27
+ activerecord (3.2.13)
28
+ activemodel (= 3.2.13)
29
+ activesupport (= 3.2.13)
30
+ arel (~> 3.0.2)
33
31
  tzinfo (~> 0.3.29)
34
- activeresource (3.1.1)
35
- activemodel (= 3.1.1)
36
- activesupport (= 3.1.1)
37
- activesupport (3.1.1)
32
+ activeresource (3.2.13)
33
+ activemodel (= 3.2.13)
34
+ activesupport (= 3.2.13)
35
+ activesupport (3.2.13)
36
+ i18n (= 0.6.1)
38
37
  multi_json (~> 1.0)
39
- ansi (1.3.0)
40
- arel (2.2.1)
38
+ ansi (1.4.3)
39
+ arel (3.0.2)
41
40
  bcrypt-ruby (3.0.1)
42
- builder (3.0.0)
43
- coffee-rails (3.1.1)
41
+ builder (3.0.4)
42
+ coffee-rails (3.2.2)
44
43
  coffee-script (>= 2.2.0)
45
- railties (~> 3.1.0)
44
+ railties (~> 3.2.0)
46
45
  coffee-script (2.2.0)
47
46
  coffee-script-source
48
47
  execjs
49
- coffee-script-source (1.1.2)
50
- daemons (1.1.4)
51
- devise (1.4.9)
48
+ coffee-script-source (1.6.2)
49
+ daemons (1.1.9)
50
+ devise (2.1.2)
52
51
  bcrypt-ruby (~> 3.0)
53
- orm_adapter (~> 0.0.3)
54
- warden (~> 1.0.3)
52
+ orm_adapter (~> 0.1)
53
+ railties (~> 3.1)
54
+ warden (~> 1.2.1)
55
+ dotenv (0.7.0)
55
56
  erubis (2.7.0)
56
- eventmachine (0.12.10)
57
- execjs (1.2.9)
57
+ eventmachine (1.0.3)
58
+ execjs (1.4.0)
58
59
  multi_json (~> 1.0)
59
- factory_girl (2.2.0)
60
- activesupport
61
- factory_girl_rails (1.3.0)
62
- factory_girl (~> 2.2.0)
60
+ factory_girl (2.6.4)
61
+ activesupport (>= 2.3.9)
62
+ factory_girl_rails (1.7.0)
63
+ factory_girl (~> 2.6.0)
63
64
  railties (>= 3.0.0)
64
- foreman (0.25.0)
65
- term-ansicolor (~> 1.0.5)
65
+ foreman (0.63.0)
66
+ dotenv (>= 0.7)
66
67
  thor (>= 0.13.6)
67
- hike (1.2.1)
68
- i18n (0.6.0)
69
- jquery-rails (1.0.16)
70
- railties (~> 3.0)
71
- thor (~> 0.14)
72
- json (1.6.1)
73
- libv8 (3.3.10.2)
74
- mail (2.3.0)
75
- i18n (>= 0.4.0)
68
+ hike (1.2.3)
69
+ i18n (0.6.1)
70
+ journey (1.0.4)
71
+ jquery-rails (3.0.1)
72
+ railties (>= 3.0, < 5.0)
73
+ thor (>= 0.14, < 2.0)
74
+ json (1.8.0)
75
+ libv8 (3.11.8.17)
76
+ mail (2.5.4)
76
77
  mime-types (~> 1.16)
77
78
  treetop (~> 1.4.8)
78
- mime-types (1.17.2)
79
- multi_json (1.0.3)
80
- orm_adapter (0.0.5)
81
- pg (0.11.0)
79
+ mime-types (1.23)
80
+ multi_json (1.7.6)
81
+ orm_adapter (0.4.0)
82
+ pg (0.15.1)
82
83
  polyglot (0.3.3)
83
- rack (1.3.5)
84
- rack-cache (1.1)
84
+ rack (1.4.5)
85
+ rack-cache (1.2)
85
86
  rack (>= 0.4)
86
- rack-mount (0.8.3)
87
- rack (>= 1.0.0)
88
- rack-ssl (1.3.2)
87
+ rack-ssl (1.3.3)
89
88
  rack
90
- rack-test (0.6.1)
89
+ rack-test (0.6.2)
91
90
  rack (>= 1.0)
92
- rails (3.1.1)
93
- actionmailer (= 3.1.1)
94
- actionpack (= 3.1.1)
95
- activerecord (= 3.1.1)
96
- activeresource (= 3.1.1)
97
- activesupport (= 3.1.1)
91
+ rails (3.2.13)
92
+ actionmailer (= 3.2.13)
93
+ actionpack (= 3.2.13)
94
+ activerecord (= 3.2.13)
95
+ activeresource (= 3.2.13)
96
+ activesupport (= 3.2.13)
98
97
  bundler (~> 1.0)
99
- railties (= 3.1.1)
100
- railties (3.1.1)
101
- actionpack (= 3.1.1)
102
- activesupport (= 3.1.1)
98
+ railties (= 3.2.13)
99
+ railties (3.2.13)
100
+ actionpack (= 3.2.13)
101
+ activesupport (= 3.2.13)
103
102
  rack-ssl (~> 1.3.2)
104
103
  rake (>= 0.8.7)
105
104
  rdoc (~> 3.4)
106
- thor (~> 0.14.6)
107
- rake (0.9.2.2)
108
- rdoc (3.11)
105
+ thor (>= 0.14.6, < 2.0)
106
+ rake (10.0.4)
107
+ rdoc (3.12.2)
109
108
  json (~> 1.4)
110
- sass (3.1.10)
111
- sass-rails (3.1.4)
112
- actionpack (~> 3.1.0)
113
- railties (~> 3.1.0)
114
- sass (>= 3.1.4)
115
- sprockets (~> 2.0.0)
116
- tilt (~> 1.3.2)
117
- shoulda (2.11.3)
118
- sprockets (2.0.3)
109
+ ref (1.0.5)
110
+ sass (3.2.9)
111
+ sass-rails (3.2.6)
112
+ railties (~> 3.2.0)
113
+ sass (>= 3.1.10)
114
+ tilt (~> 1.3)
115
+ shoulda (3.5.0)
116
+ shoulda-context (~> 1.0, >= 1.0.1)
117
+ shoulda-matchers (>= 1.4.1, < 3.0)
118
+ shoulda-context (1.1.2)
119
+ shoulda-matchers (2.1.0)
120
+ activesupport (>= 3.0.0)
121
+ sprockets (2.2.2)
119
122
  hike (~> 1.2)
123
+ multi_json (~> 1.0)
120
124
  rack (~> 1.0)
121
125
  tilt (~> 1.1, != 1.3.0)
122
- term-ansicolor (1.0.7)
123
- therubyracer (0.9.8)
124
- libv8 (~> 3.3.10)
125
- thin (1.2.11)
126
+ therubyracer (0.11.4)
127
+ libv8 (~> 3.11.8.12)
128
+ ref
129
+ thin (1.5.1)
126
130
  daemons (>= 1.0.9)
127
131
  eventmachine (>= 0.12.6)
128
132
  rack (>= 1.0.0)
129
- thor (0.14.6)
130
- tilt (1.3.3)
131
- treetop (1.4.10)
133
+ thor (0.18.1)
134
+ tilt (1.4.1)
135
+ treetop (1.4.14)
132
136
  polyglot
133
137
  polyglot (>= 0.3.1)
134
- turn (0.8.3)
138
+ turn (0.9.6)
135
139
  ansi
136
- tzinfo (0.3.30)
137
- uglifier (1.0.4)
140
+ tzinfo (0.3.37)
141
+ uglifier (2.1.1)
138
142
  execjs (>= 0.3.0)
139
- multi_json (>= 1.0.2)
140
- warden (1.0.6)
143
+ multi_json (~> 1.0, >= 1.0.2)
144
+ warden (1.2.1)
141
145
  rack (>= 1.0)
142
146
 
143
147
  PLATFORMS
144
148
  ruby
145
149
 
146
150
  DEPENDENCIES
147
- coffee-rails (~> 3.1.1)
148
- devise (>= 1.4.8)
151
+ coffee-rails (> 3.2)
152
+ devise (>= 2.1.2)
149
153
  execjs
150
154
  factory_girl_rails (~> 1.2)
151
155
  foreman
152
156
  jquery-rails
153
157
  milia!
154
158
  pg
155
- rails (= 3.1.1)
159
+ rails (= 3.2.13)
156
160
  rdoc
157
- sass-rails (~> 3.1.4)
158
- shoulda
161
+ sass-rails (> 3.2)
162
+ shoulda (= 3.5.0)
163
+ shoulda-context (~> 1.1.2)
164
+ shoulda-matchers (~> 2.1.0)
159
165
  therubyracer
160
166
  thin
161
167
  turn
@@ -0,0 +1,167 @@
1
+ PATH
2
+ remote: ../../../milia
3
+ specs:
4
+ milia (0.3.34)
5
+ devise (= 2.1.2)
6
+ rails (>= 3.2.9)
7
+
8
+ GEM
9
+ remote: http://rubygems.org/
10
+ specs:
11
+ actionmailer (3.2.11)
12
+ actionpack (= 3.2.11)
13
+ mail (~> 2.4.4)
14
+ actionpack (3.2.11)
15
+ activemodel (= 3.2.11)
16
+ activesupport (= 3.2.11)
17
+ builder (~> 3.0.0)
18
+ erubis (~> 2.7.0)
19
+ journey (~> 1.0.4)
20
+ rack (~> 1.4.0)
21
+ rack-cache (~> 1.2)
22
+ rack-test (~> 0.6.1)
23
+ sprockets (~> 2.2.1)
24
+ activemodel (3.2.11)
25
+ activesupport (= 3.2.11)
26
+ builder (~> 3.0.0)
27
+ activerecord (3.2.11)
28
+ activemodel (= 3.2.11)
29
+ activesupport (= 3.2.11)
30
+ arel (~> 3.0.2)
31
+ tzinfo (~> 0.3.29)
32
+ activeresource (3.2.11)
33
+ activemodel (= 3.2.11)
34
+ activesupport (= 3.2.11)
35
+ activesupport (3.2.11)
36
+ i18n (~> 0.6)
37
+ multi_json (~> 1.0)
38
+ ansi (1.3.0)
39
+ arel (3.0.2)
40
+ bcrypt-ruby (3.0.1)
41
+ builder (3.0.4)
42
+ coffee-rails (3.2.2)
43
+ coffee-script (>= 2.2.0)
44
+ railties (~> 3.2.0)
45
+ coffee-script (2.2.0)
46
+ coffee-script-source
47
+ execjs
48
+ coffee-script-source (1.6.2)
49
+ daemons (1.1.4)
50
+ devise (2.1.2)
51
+ bcrypt-ruby (~> 3.0)
52
+ orm_adapter (~> 0.1)
53
+ railties (~> 3.1)
54
+ warden (~> 1.2.1)
55
+ erubis (2.7.0)
56
+ eventmachine (0.12.10)
57
+ execjs (1.4.0)
58
+ multi_json (~> 1.0)
59
+ factory_girl (2.2.0)
60
+ activesupport
61
+ factory_girl_rails (1.3.0)
62
+ factory_girl (~> 2.2.0)
63
+ railties (>= 3.0.0)
64
+ foreman (0.25.0)
65
+ term-ansicolor (~> 1.0.5)
66
+ thor (>= 0.13.6)
67
+ hike (1.2.3)
68
+ i18n (0.6.4)
69
+ journey (1.0.4)
70
+ jquery-rails (1.0.16)
71
+ railties (~> 3.0)
72
+ thor (~> 0.14)
73
+ json (1.8.0)
74
+ libv8 (3.3.10.2)
75
+ mail (2.4.4)
76
+ i18n (>= 0.4.0)
77
+ mime-types (~> 1.16)
78
+ treetop (~> 1.4.8)
79
+ mime-types (1.23)
80
+ multi_json (1.7.6)
81
+ orm_adapter (0.4.0)
82
+ pg (0.15.1)
83
+ polyglot (0.3.3)
84
+ rack (1.4.5)
85
+ rack-cache (1.2)
86
+ rack (>= 0.4)
87
+ rack-ssl (1.3.3)
88
+ rack
89
+ rack-test (0.6.2)
90
+ rack (>= 1.0)
91
+ rails (3.2.11)
92
+ actionmailer (= 3.2.11)
93
+ actionpack (= 3.2.11)
94
+ activerecord (= 3.2.11)
95
+ activeresource (= 3.2.11)
96
+ activesupport (= 3.2.11)
97
+ bundler (~> 1.0)
98
+ railties (= 3.2.11)
99
+ railties (3.2.11)
100
+ actionpack (= 3.2.11)
101
+ activesupport (= 3.2.11)
102
+ rack-ssl (~> 1.3.2)
103
+ rake (>= 0.8.7)
104
+ rdoc (~> 3.4)
105
+ thor (>= 0.14.6, < 2.0)
106
+ rake (10.0.4)
107
+ rdoc (3.12.2)
108
+ json (~> 1.4)
109
+ sass (3.2.9)
110
+ sass-rails (3.2.6)
111
+ railties (~> 3.2.0)
112
+ sass (>= 3.1.10)
113
+ tilt (~> 1.3)
114
+ shoulda (3.5.0)
115
+ shoulda-context (~> 1.0, >= 1.0.1)
116
+ shoulda-matchers (>= 1.4.1, < 3.0)
117
+ shoulda-context (1.1.2)
118
+ shoulda-matchers (2.1.0)
119
+ activesupport (>= 3.0.0)
120
+ sprockets (2.2.2)
121
+ hike (~> 1.2)
122
+ multi_json (~> 1.0)
123
+ rack (~> 1.0)
124
+ tilt (~> 1.1, != 1.3.0)
125
+ term-ansicolor (1.0.7)
126
+ therubyracer (0.9.8)
127
+ libv8 (~> 3.3.10)
128
+ thin (1.2.11)
129
+ daemons (>= 1.0.9)
130
+ eventmachine (>= 0.12.6)
131
+ rack (>= 1.0.0)
132
+ thor (0.18.1)
133
+ tilt (1.4.1)
134
+ treetop (1.4.14)
135
+ polyglot
136
+ polyglot (>= 0.3.1)
137
+ turn (0.8.3)
138
+ ansi
139
+ tzinfo (0.3.37)
140
+ uglifier (1.0.4)
141
+ execjs (>= 0.3.0)
142
+ multi_json (>= 1.0.2)
143
+ warden (1.2.1)
144
+ rack (>= 1.0)
145
+
146
+ PLATFORMS
147
+ ruby
148
+
149
+ DEPENDENCIES
150
+ coffee-rails (> 3.2)
151
+ devise (>= 2.1.2)
152
+ execjs
153
+ factory_girl_rails (~> 1.2)
154
+ foreman
155
+ jquery-rails
156
+ milia!
157
+ pg
158
+ rails (= 3.2.11)
159
+ rdoc
160
+ sass-rails (> 3.2)
161
+ shoulda (= 3.5.0)
162
+ shoulda-context (~> 1.1.2)
163
+ shoulda-matchers (~> 2.1.0)
164
+ therubyracer
165
+ thin
166
+ turn
167
+ uglifier (>= 1.0.3)
@@ -92,10 +92,6 @@ Devise.setup do |config|
92
92
  # If true, extends the user's remember period when remembered via cookie.
93
93
  # config.extend_remember_period = false
94
94
 
95
- # If true, uses the password salt as remember token. This should be turned
96
- # to false if you are not using database authenticatable.
97
- config.use_salt_as_remember_token = true
98
-
99
95
  # Options to be passed to the created cookie. For instance, you can set
100
96
  # :secure => true in order to force SSL only cookies.
101
97
  # config.cookie_options = {}
@@ -2,9 +2,7 @@ RailsApp::Application.routes.draw do
2
2
  root :to => "home#index"
3
3
  get "home/index"
4
4
 
5
- devise_for :users do
6
- post "users" => "milia/registrations#create"
7
- end
5
+ devise_for :users , :controllers => { :registrations => "milia/registrations" }
8
6
 
9
7
  # The priority is based upon order of creation:
10
8
  # first created -> highest priority.
@@ -1,15 +1,26 @@
1
1
  class DeviseCreateUsers < ActiveRecord::Migration
2
2
  def self.up
3
3
  create_table(:users) do |t|
4
- t.database_authenticatable :null => false
5
- t.recoverable
6
- t.rememberable
7
- t.trackable
8
-
9
- # t.encryptable
10
- t.confirmable
11
- # t.lockable :lock_strategy => :failed_attempts, :unlock_strategy => :both
12
- t.token_authenticatable
4
+ t.string :email, :null => false, :default => ""
5
+ t.string :encrypted_password, :null => false, :default => ""
6
+ t.string :reset_password_token
7
+ t.datetime :reset_password_sent_at
8
+ t.datetime :remember_created_at
9
+ t.integer :sign_in_count, :default => 0
10
+ t.datetime :current_sign_in_at
11
+ t.datetime :last_sign_in_at
12
+ t.string :current_sign_in_ip
13
+ t.string :last_sign_in_ip
14
+ # t.string :password_salt # t.encryptable
15
+ t.string :confirmation_token
16
+ t.datetime :confirmed_at
17
+ t.datetime :confirmation_sent_at
18
+ t.string :unconfirmed_email # Only if using reconfirmable
19
+ ## Lockable
20
+ # t.integer :failed_attempts, :default => 0 # Only if lock strategy is :failed_attempts
21
+ # t.string :unlock_token # Only if unlock strategy is :email or :both
22
+ # t.datetime :locked_at
23
+ t.string :authentication_token
13
24
 
14
25
  t.references :tenant
15
26
  t.timestamps
@@ -17,8 +17,8 @@ ActiveRecord::Schema.define(:version => 20111013053403) do
17
17
  t.integer "tenant_id"
18
18
  t.integer "user_id"
19
19
  t.string "name"
20
- t.datetime "created_at"
21
- t.datetime "updated_at"
20
+ t.datetime "created_at", :null => false
21
+ t.datetime "updated_at", :null => false
22
22
  end
23
23
 
24
24
  add_index "authors", ["tenant_id"], :name => "index_authors_on_tenant_id"
@@ -29,8 +29,8 @@ ActiveRecord::Schema.define(:version => 20111013053403) do
29
29
  t.integer "team_id"
30
30
  t.datetime "cal_start"
31
31
  t.datetime "cal_end"
32
- t.datetime "created_at"
33
- t.datetime "updated_at"
32
+ t.datetime "created_at", :null => false
33
+ t.datetime "updated_at", :null => false
34
34
  end
35
35
 
36
36
  add_index "calendars", ["team_id"], :name => "index_calendars_on_team_id"
@@ -41,8 +41,8 @@ ActiveRecord::Schema.define(:version => 20111013053403) do
41
41
  t.integer "author_id"
42
42
  t.integer "zine_id"
43
43
  t.string "content"
44
- t.datetime "created_at"
45
- t.datetime "updated_at"
44
+ t.datetime "created_at", :null => false
45
+ t.datetime "updated_at", :null => false
46
46
  end
47
47
 
48
48
  add_index "posts", ["author_id"], :name => "index_posts_on_author_id"
@@ -52,8 +52,8 @@ ActiveRecord::Schema.define(:version => 20111013053403) do
52
52
  create_table "sessions", :force => true do |t|
53
53
  t.string "session_id", :null => false
54
54
  t.text "data"
55
- t.datetime "created_at"
56
- t.datetime "updated_at"
55
+ t.datetime "created_at", :null => false
56
+ t.datetime "updated_at", :null => false
57
57
  end
58
58
 
59
59
  add_index "sessions", ["session_id"], :name => "index_sessions_on_session_id"
@@ -63,8 +63,8 @@ ActiveRecord::Schema.define(:version => 20111013053403) do
63
63
  t.integer "tenant_id"
64
64
  t.integer "author_id"
65
65
  t.integer "team_id"
66
- t.datetime "created_at"
67
- t.datetime "updated_at"
66
+ t.datetime "created_at", :null => false
67
+ t.datetime "updated_at", :null => false
68
68
  end
69
69
 
70
70
  add_index "team_assets", ["author_id"], :name => "index_team_assets_on_author_id"
@@ -74,16 +74,16 @@ ActiveRecord::Schema.define(:version => 20111013053403) do
74
74
  create_table "teams", :force => true do |t|
75
75
  t.integer "tenant_id"
76
76
  t.string "name"
77
- t.datetime "created_at"
78
- t.datetime "updated_at"
77
+ t.datetime "created_at", :null => false
78
+ t.datetime "updated_at", :null => false
79
79
  end
80
80
 
81
81
  add_index "teams", ["tenant_id"], :name => "index_teams_on_tenant_id"
82
82
 
83
83
  create_table "tenants", :force => true do |t|
84
84
  t.integer "tenant_id"
85
- t.datetime "created_at"
86
- t.datetime "updated_at"
85
+ t.datetime "created_at", :null => false
86
+ t.datetime "updated_at", :null => false
87
87
  end
88
88
 
89
89
  create_table "tenants_users", :id => false, :force => true do |t|
@@ -95,12 +95,12 @@ ActiveRecord::Schema.define(:version => 20111013053403) do
95
95
  add_index "tenants_users", ["user_id"], :name => "index_tenants_users_on_user_id"
96
96
 
97
97
  create_table "users", :force => true do |t|
98
- t.string "email", :default => "", :null => false
99
- t.string "encrypted_password", :limit => 128, :default => "", :null => false
98
+ t.string "email", :default => "", :null => false
99
+ t.string "encrypted_password", :default => "", :null => false
100
100
  t.string "reset_password_token"
101
101
  t.datetime "reset_password_sent_at"
102
102
  t.datetime "remember_created_at"
103
- t.integer "sign_in_count", :default => 0
103
+ t.integer "sign_in_count", :default => 0
104
104
  t.datetime "current_sign_in_at"
105
105
  t.datetime "last_sign_in_at"
106
106
  t.string "current_sign_in_ip"
@@ -108,10 +108,11 @@ ActiveRecord::Schema.define(:version => 20111013053403) do
108
108
  t.string "confirmation_token"
109
109
  t.datetime "confirmed_at"
110
110
  t.datetime "confirmation_sent_at"
111
+ t.string "unconfirmed_email"
111
112
  t.string "authentication_token"
112
113
  t.integer "tenant_id"
113
- t.datetime "created_at"
114
- t.datetime "updated_at"
114
+ t.datetime "created_at", :null => false
115
+ t.datetime "updated_at", :null => false
115
116
  end
116
117
 
117
118
  add_index "users", ["authentication_token"], :name => "index_users_on_authentication_token", :unique => true
@@ -122,8 +123,8 @@ ActiveRecord::Schema.define(:version => 20111013053403) do
122
123
  create_table "zines", :force => true do |t|
123
124
  t.integer "tenant_id"
124
125
  t.integer "calendar_id"
125
- t.datetime "created_at"
126
- t.datetime "updated_at"
126
+ t.datetime "created_at", :null => false
127
+ t.datetime "updated_at", :null => false
127
128
  end
128
129
 
129
130
  add_index "zines", ["calendar_id"], :name => "index_zines_on_calendar_id"
@@ -2,11 +2,6 @@ ENV["RAILS_ENV"] = "test"
2
2
  require File.expand_path('../../config/environment', __FILE__)
3
3
  require 'rails/test_help'
4
4
 
5
- # Shoulda looks for RAILS_ROOT before loading shoulda/rails, and Rails 3.1
6
- # doesn't have that anymore.
7
-
8
- require 'shoulda/rails'
9
-
10
5
  class ActiveSupport::TestCase
11
6
 
12
7
  class << self
@@ -46,11 +46,13 @@ class PostTest < ActiveSupport::TestCase
46
46
  should "see jemell in two tenants with dif posts" do
47
47
  ActiveSupport::TestCase.set_tenant( @islesmile )
48
48
  assert_equal 1, @target.posts.size
49
- assert_equal 'mellow_yellow', @target.posts.first.content.sub(/_\d+/,"")
49
+ assert %w(wild_blue passion_pink mellow_yellow).include?( @target.posts.first.content.sub(/_\d+/,"") )
50
50
 
51
51
  ActiveSupport::TestCase.set_tenant( @mangoland )
52
52
  assert_equal 2, @target.posts.size
53
- assert_equal %w(mellow_yellow wild_blue), @target.posts.map{|p| p.content.sub(/_\d+/,"") }.sort
53
+ assert @target.posts.all?{ |p|
54
+ %w(wild_blue passion_pink mellow_yellow).include?( p.content.sub(/_\d+/,"") )
55
+ }
54
56
  end
55
57
 
56
58
  should "zoom get all team posts" do
@@ -1,7 +1,28 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class TenantTest < ActiveSupport::TestCase
4
- # test "the truth" do
5
- # assert true
6
- # end
7
- end
4
+
5
+
6
+ context "a user" do
7
+
8
+ setup do
9
+ setup_world()
10
+ @user = Factory( :user )
11
+ @post = Factory( :post )
12
+ ActiveSupport::TestCase.reset_tenant() # clear the tenant for testing
13
+ end
14
+
15
+
16
+ should "exception if tenant is different" do
17
+ ActiveSupport::TestCase.reset_tenant
18
+
19
+ assert_raise(::Milia::Control::InvalidTenantAccess,
20
+ "InvalidTenantAccess if tenants dont match"){
21
+ @post.update_attributes( :content => "duck walk" )
22
+ }
23
+ end
24
+
25
+
26
+ end # context
27
+
28
+ end # class test
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: milia
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.34
4
+ version: 0.3.38
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,24 +9,24 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-19 00:00:00.000000000 Z
12
+ date: 2013-06-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
- - - ! '>='
19
+ - - '='
20
20
  - !ruby/object:Gem::Version
21
- version: 3.2.9
21
+ version: 3.2.13
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  none: false
26
26
  requirements:
27
- - - ! '>='
27
+ - - '='
28
28
  - !ruby/object:Gem::Version
29
- version: 3.2.9
29
+ version: 3.2.13
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: devise
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -64,17 +64,17 @@ dependencies:
64
64
  requirement: !ruby/object:Gem::Requirement
65
65
  none: false
66
66
  requirements:
67
- - - ! '>='
67
+ - - '='
68
68
  - !ruby/object:Gem::Version
69
- version: '0'
69
+ version: 3.5.0
70
70
  type: :development
71
71
  prerelease: false
72
72
  version_requirements: !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
- - - ! '>='
75
+ - - '='
76
76
  - !ruby/object:Gem::Version
77
- version: '0'
77
+ version: 3.5.0
78
78
  - !ruby/object:Gem::Dependency
79
79
  name: jeweler
80
80
  requirement: !ruby/object:Gem::Requirement
@@ -154,6 +154,7 @@ files:
154
154
  - test/rails_app/.gitignore
155
155
  - test/rails_app/Gemfile
156
156
  - test/rails_app/Gemfile.lock
157
+ - test/rails_app/Gemfile.lock.backup
157
158
  - test/rails_app/Procfile
158
159
  - test/rails_app/README
159
160
  - test/rails_app/Rakefile
@@ -252,7 +253,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
252
253
  version: '0'
253
254
  segments:
254
255
  - 0
255
- hash: 461924509
256
+ hash: 245221263
256
257
  required_rubygems_version: !ruby/object:Gem::Requirement
257
258
  none: false
258
259
  requirements: