sublease 0.1.0

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 (100) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +62 -0
  3. data/.travis.yml +68 -0
  4. data/CHANGELOG.md +3 -0
  5. data/CODE_OF_CONDUCT.md +74 -0
  6. data/Gemfile +29 -0
  7. data/Gemfile.lock +141 -0
  8. data/LICENSE +21 -0
  9. data/README.md +126 -0
  10. data/Rakefile +36 -0
  11. data/app/models/sublease/lodger.rb +71 -0
  12. data/app/models/sublease/tenant.rb +29 -0
  13. data/bin/rails +14 -0
  14. data/config/locales/de.yml +28 -0
  15. data/config/locales/en.yml +28 -0
  16. data/config/locales/es.yml +28 -0
  17. data/config/locales/fr.yml +28 -0
  18. data/config/locales/it.yml +28 -0
  19. data/config/locales/po.yml +28 -0
  20. data/gemfiles/Gemfile.jruby.rails-4.1-stable +29 -0
  21. data/gemfiles/Gemfile.jruby.rails-4.1-stable.lock +129 -0
  22. data/gemfiles/Gemfile.jruby.rails-4.2-stable +29 -0
  23. data/gemfiles/Gemfile.jruby.rails-4.2-stable.lock +152 -0
  24. data/gemfiles/Gemfile.jruby.rails-5.0-stable +29 -0
  25. data/gemfiles/Gemfile.jruby.rails-5.0-stable.lock +163 -0
  26. data/gemfiles/Gemfile.rails-4.1-stable +29 -0
  27. data/gemfiles/Gemfile.rails-4.1-stable.lock +115 -0
  28. data/gemfiles/Gemfile.rails-4.2-stable +29 -0
  29. data/gemfiles/Gemfile.rails-4.2-stable.lock +140 -0
  30. data/gemfiles/Gemfile.rails-5.0-stable +29 -0
  31. data/gemfiles/Gemfile.rails-5.0-stable.lock +141 -0
  32. data/lib/generators/sublease/install/USAGE +5 -0
  33. data/lib/generators/sublease/install/install_generator.rb +9 -0
  34. data/lib/generators/sublease/install/templates/sublease.rb +23 -0
  35. data/lib/sublease.rb +132 -0
  36. data/lib/sublease/engine.rb +5 -0
  37. data/lib/sublease/errors.rb +10 -0
  38. data/lib/sublease/tenant_switcher.rb +75 -0
  39. data/lib/sublease/version.rb +5 -0
  40. data/sublease.gemspec +28 -0
  41. data/test/dummy/README.rdoc +28 -0
  42. data/test/dummy/Rakefile +6 -0
  43. data/test/dummy/app/assets/images/.keep +0 -0
  44. data/test/dummy/app/assets/javascripts/application.js +13 -0
  45. data/test/dummy/app/assets/javascripts/lodgers.js +2 -0
  46. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  47. data/test/dummy/app/assets/stylesheets/lodgers.css +4 -0
  48. data/test/dummy/app/controllers/application_controller.rb +7 -0
  49. data/test/dummy/app/controllers/concerns/.keep +0 -0
  50. data/test/dummy/app/controllers/lodgers_controller.rb +7 -0
  51. data/test/dummy/app/helpers/application_helper.rb +2 -0
  52. data/test/dummy/app/helpers/lodgers_helper.rb +2 -0
  53. data/test/dummy/app/mailers/.keep +0 -0
  54. data/test/dummy/app/models/.keep +0 -0
  55. data/test/dummy/app/models/concerns/.keep +0 -0
  56. data/test/dummy/app/models/lodger.rb +3 -0
  57. data/test/dummy/app/models/tenant.rb +3 -0
  58. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  59. data/test/dummy/app/views/lodgers/index.html.erb +6 -0
  60. data/test/dummy/bin/bundle +3 -0
  61. data/test/dummy/bin/rails +4 -0
  62. data/test/dummy/bin/rake +4 -0
  63. data/test/dummy/config.ru +4 -0
  64. data/test/dummy/config/application.rb +23 -0
  65. data/test/dummy/config/boot.rb +5 -0
  66. data/test/dummy/config/database.yml +23 -0
  67. data/test/dummy/config/environment.rb +5 -0
  68. data/test/dummy/config/environments/development.rb +37 -0
  69. data/test/dummy/config/environments/production.rb +78 -0
  70. data/test/dummy/config/environments/test.rb +39 -0
  71. data/test/dummy/config/initializers/assets.rb +8 -0
  72. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  73. data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
  74. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  75. data/test/dummy/config/initializers/inflections.rb +16 -0
  76. data/test/dummy/config/initializers/mime_types.rb +4 -0
  77. data/test/dummy/config/initializers/session_store.rb +3 -0
  78. data/test/dummy/config/initializers/sublease.rb +24 -0
  79. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  80. data/test/dummy/config/locales/en.yml +23 -0
  81. data/test/dummy/config/routes.rb +3 -0
  82. data/test/dummy/config/secrets.yml +22 -0
  83. data/test/dummy/db/migrate/20180114164205_create_tenants.rb +10 -0
  84. data/test/dummy/db/migrate/20180115012642_create_lodgers.rb +9 -0
  85. data/test/dummy/db/schema.rb +31 -0
  86. data/test/dummy/lib/assets/.keep +0 -0
  87. data/test/dummy/log/.keep +0 -0
  88. data/test/dummy/public/404.html +67 -0
  89. data/test/dummy/public/422.html +67 -0
  90. data/test/dummy/public/500.html +66 -0
  91. data/test/dummy/public/favicon.ico +0 -0
  92. data/test/fixtures/lodgers.yml +14 -0
  93. data/test/fixtures/tenants.yml +18 -0
  94. data/test/integration/navigation_test.rb +41 -0
  95. data/test/lib/generators/sublease/install_generator_test.rb +25 -0
  96. data/test/models/sublease/lodger_test.rb +67 -0
  97. data/test/models/sublease/tenant_test.rb +25 -0
  98. data/test/sublease_test.rb +133 -0
  99. data/test/test_helper.rb +23 -0
  100. metadata +265 -0
@@ -0,0 +1,29 @@
1
+ source 'https://rubygems.org'
2
+
3
+ ruby '>= 2.3.1'
4
+ gem 'rails', github: 'rails/rails', branch: '4-2-stable'
5
+ gem 'rdoc'
6
+
7
+ gem 'shoulda', group: [:development, :test]
8
+
9
+ # Declare your gem's dependencies in sublease.gemspec
10
+ # Bundler will treat runtime dependencies like base dependencies, and
11
+ # development dependencies will be added by default to the :development group.
12
+ gemspec path: '..'
13
+
14
+ # Declare any dependencies that are still in development here instead of in
15
+ # your gemspec. These might include edge Rails or gems from your path or
16
+ # Git. Remember to move these dependencies to your gemspec before releasing
17
+ # your gem to rubygems.org.
18
+
19
+ platforms :jruby do
20
+ gem 'pry', group: [:development, :test]
21
+ gem 'activerecord-jdbc-adapter'
22
+ gem 'activerecord-jdbcsqlite3-adapter'
23
+ gem 'jruby-openssl'
24
+ end
25
+
26
+ platforms :ruby do
27
+ gem 'byebug', group: [:development, :test]
28
+ gem 'sqlite3'
29
+ end
@@ -0,0 +1,140 @@
1
+ GIT
2
+ remote: git://github.com/rails/rails.git
3
+ revision: fea03789818b07633e5751e134f10aa818f6efaa
4
+ branch: 4-2-stable
5
+ specs:
6
+ actionmailer (4.2.10)
7
+ actionpack (= 4.2.10)
8
+ actionview (= 4.2.10)
9
+ activejob (= 4.2.10)
10
+ mail (~> 2.5, >= 2.5.4)
11
+ rails-dom-testing (~> 1.0, >= 1.0.5)
12
+ actionpack (4.2.10)
13
+ actionview (= 4.2.10)
14
+ activesupport (= 4.2.10)
15
+ rack (~> 1.6)
16
+ rack-test (~> 0.6.2)
17
+ rails-dom-testing (~> 1.0, >= 1.0.5)
18
+ rails-html-sanitizer (~> 1.0, >= 1.0.2)
19
+ actionview (4.2.10)
20
+ activesupport (= 4.2.10)
21
+ builder (~> 3.1)
22
+ erubis (~> 2.7.0)
23
+ rails-dom-testing (~> 1.0, >= 1.0.5)
24
+ rails-html-sanitizer (~> 1.0, >= 1.0.3)
25
+ activejob (4.2.10)
26
+ activesupport (= 4.2.10)
27
+ globalid (>= 0.3.0)
28
+ activemodel (4.2.10)
29
+ activesupport (= 4.2.10)
30
+ builder (~> 3.1)
31
+ activerecord (4.2.10)
32
+ activemodel (= 4.2.10)
33
+ activesupport (= 4.2.10)
34
+ arel (~> 6.0)
35
+ activesupport (4.2.10)
36
+ i18n (~> 0.7)
37
+ minitest (~> 5.1)
38
+ thread_safe (~> 0.3, >= 0.3.4)
39
+ tzinfo (~> 1.1)
40
+ rails (4.2.10)
41
+ actionmailer (= 4.2.10)
42
+ actionpack (= 4.2.10)
43
+ actionview (= 4.2.10)
44
+ activejob (= 4.2.10)
45
+ activemodel (= 4.2.10)
46
+ activerecord (= 4.2.10)
47
+ activesupport (= 4.2.10)
48
+ bundler (>= 1.3.0, < 2.0)
49
+ railties (= 4.2.10)
50
+ sprockets-rails
51
+ railties (4.2.10)
52
+ actionpack (= 4.2.10)
53
+ activesupport (= 4.2.10)
54
+ rake (>= 0.8.7)
55
+ thor (>= 0.18.1, < 2.0)
56
+
57
+ PATH
58
+ remote: .
59
+ specs:
60
+ sublease (0.1.0.rc4)
61
+ rails (>= 4.1, < 6.0)
62
+ request_store (>= 1.4.0)
63
+
64
+ GEM
65
+ remote: https://rubygems.org/
66
+ specs:
67
+ arel (6.0.4)
68
+ builder (3.2.3)
69
+ byebug (10.0.0)
70
+ concurrent-ruby (1.0.5)
71
+ crass (1.0.3)
72
+ erubis (2.7.0)
73
+ globalid (0.4.1)
74
+ activesupport (>= 4.2.0)
75
+ i18n (0.9.3)
76
+ concurrent-ruby (~> 1.0)
77
+ loofah (2.1.1)
78
+ crass (~> 1.0.2)
79
+ nokogiri (>= 1.5.9)
80
+ mail (2.7.0)
81
+ mini_mime (>= 0.1.1)
82
+ mini_mime (1.0.0)
83
+ mini_portile2 (2.3.0)
84
+ minitest (5.11.3)
85
+ nokogiri (1.8.2)
86
+ mini_portile2 (~> 2.3.0)
87
+ rack (1.6.8)
88
+ rack-test (0.6.3)
89
+ rack (>= 1.0)
90
+ rails-deprecated_sanitizer (1.0.3)
91
+ activesupport (>= 4.2.0.alpha)
92
+ rails-dom-testing (1.0.9)
93
+ activesupport (>= 4.2.0, < 5.0)
94
+ nokogiri (~> 1.6)
95
+ rails-deprecated_sanitizer (>= 1.0.1)
96
+ rails-html-sanitizer (1.0.3)
97
+ loofah (~> 2.0)
98
+ rake (12.3.0)
99
+ rdoc (6.0.1)
100
+ request_store (1.4.0)
101
+ rack (>= 1.4)
102
+ shoulda (3.5.0)
103
+ shoulda-context (~> 1.0, >= 1.0.1)
104
+ shoulda-matchers (>= 1.4.1, < 3.0)
105
+ shoulda-context (1.2.2)
106
+ shoulda-matchers (2.8.0)
107
+ activesupport (>= 3.0.0)
108
+ sprockets (3.7.1)
109
+ concurrent-ruby (~> 1.0)
110
+ rack (> 1, < 3)
111
+ sprockets-rails (3.2.1)
112
+ actionpack (>= 4.0)
113
+ activesupport (>= 4.0)
114
+ sprockets (>= 3.0.0)
115
+ sqlite3 (1.3.13)
116
+ thor (0.20.0)
117
+ thread_safe (0.3.6)
118
+ tzinfo (1.2.4)
119
+ thread_safe (~> 0.1)
120
+
121
+ PLATFORMS
122
+ ruby
123
+
124
+ DEPENDENCIES
125
+ activerecord-jdbc-adapter
126
+ activerecord-jdbcsqlite3-adapter
127
+ byebug
128
+ jruby-openssl
129
+ pry
130
+ rails!
131
+ rdoc
132
+ shoulda
133
+ sqlite3
134
+ sublease!
135
+
136
+ RUBY VERSION
137
+ ruby 2.5.0p0
138
+
139
+ BUNDLED WITH
140
+ 1.16.1
@@ -0,0 +1,29 @@
1
+ source 'https://rubygems.org'
2
+
3
+ ruby '>= 2.3.1'
4
+ gem 'rails', '~> 5.0.0'
5
+ gem 'rdoc'
6
+
7
+ gem 'shoulda', group: [:development, :test]
8
+
9
+ # Declare your gem's dependencies in sublease.gemspec
10
+ # Bundler will treat runtime dependencies like base dependencies, and
11
+ # development dependencies will be added by default to the :development group.
12
+ gemspec path: '..'
13
+
14
+ # Declare any dependencies that are still in development here instead of in
15
+ # your gemspec. These might include edge Rails or gems from your path or
16
+ # Git. Remember to move these dependencies to your gemspec before releasing
17
+ # your gem to rubygems.org.
18
+
19
+ platforms :jruby do
20
+ gem 'pry', group: [:development, :test]
21
+ gem 'activerecord-jdbc-adapter'
22
+ gem 'activerecord-jdbcsqlite3-adapter'
23
+ gem 'jruby-openssl'
24
+ end
25
+
26
+ platforms :ruby do
27
+ gem 'byebug', group: [:development, :test]
28
+ gem 'sqlite3'
29
+ end
@@ -0,0 +1,141 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ sublease (0.1.0.rc4)
5
+ rails (>= 4.1, < 6.0)
6
+ request_store (>= 1.4.0)
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ actioncable (5.0.6)
12
+ actionpack (= 5.0.6)
13
+ nio4r (>= 1.2, < 3.0)
14
+ websocket-driver (~> 0.6.1)
15
+ actionmailer (5.0.6)
16
+ actionpack (= 5.0.6)
17
+ actionview (= 5.0.6)
18
+ activejob (= 5.0.6)
19
+ mail (~> 2.5, >= 2.5.4)
20
+ rails-dom-testing (~> 2.0)
21
+ actionpack (5.0.6)
22
+ actionview (= 5.0.6)
23
+ activesupport (= 5.0.6)
24
+ rack (~> 2.0)
25
+ rack-test (~> 0.6.3)
26
+ rails-dom-testing (~> 2.0)
27
+ rails-html-sanitizer (~> 1.0, >= 1.0.2)
28
+ actionview (5.0.6)
29
+ activesupport (= 5.0.6)
30
+ builder (~> 3.1)
31
+ erubis (~> 2.7.0)
32
+ rails-dom-testing (~> 2.0)
33
+ rails-html-sanitizer (~> 1.0, >= 1.0.3)
34
+ activejob (5.0.6)
35
+ activesupport (= 5.0.6)
36
+ globalid (>= 0.3.6)
37
+ activemodel (5.0.6)
38
+ activesupport (= 5.0.6)
39
+ activerecord (5.0.6)
40
+ activemodel (= 5.0.6)
41
+ activesupport (= 5.0.6)
42
+ arel (~> 7.0)
43
+ activesupport (5.0.6)
44
+ concurrent-ruby (~> 1.0, >= 1.0.2)
45
+ i18n (~> 0.7)
46
+ minitest (~> 5.1)
47
+ tzinfo (~> 1.1)
48
+ arel (7.1.4)
49
+ builder (3.2.3)
50
+ byebug (10.0.0)
51
+ concurrent-ruby (1.0.5)
52
+ crass (1.0.3)
53
+ erubis (2.7.0)
54
+ globalid (0.4.1)
55
+ activesupport (>= 4.2.0)
56
+ i18n (0.9.3)
57
+ concurrent-ruby (~> 1.0)
58
+ loofah (2.1.1)
59
+ crass (~> 1.0.2)
60
+ nokogiri (>= 1.5.9)
61
+ mail (2.7.0)
62
+ mini_mime (>= 0.1.1)
63
+ method_source (0.9.0)
64
+ mini_mime (1.0.0)
65
+ mini_portile2 (2.3.0)
66
+ minitest (5.11.3)
67
+ nio4r (2.2.0)
68
+ nokogiri (1.8.2)
69
+ mini_portile2 (~> 2.3.0)
70
+ rack (2.0.3)
71
+ rack-test (0.6.3)
72
+ rack (>= 1.0)
73
+ rails (5.0.6)
74
+ actioncable (= 5.0.6)
75
+ actionmailer (= 5.0.6)
76
+ actionpack (= 5.0.6)
77
+ actionview (= 5.0.6)
78
+ activejob (= 5.0.6)
79
+ activemodel (= 5.0.6)
80
+ activerecord (= 5.0.6)
81
+ activesupport (= 5.0.6)
82
+ bundler (>= 1.3.0)
83
+ railties (= 5.0.6)
84
+ sprockets-rails (>= 2.0.0)
85
+ rails-dom-testing (2.0.3)
86
+ activesupport (>= 4.2.0)
87
+ nokogiri (>= 1.6)
88
+ rails-html-sanitizer (1.0.3)
89
+ loofah (~> 2.0)
90
+ railties (5.0.6)
91
+ actionpack (= 5.0.6)
92
+ activesupport (= 5.0.6)
93
+ method_source
94
+ rake (>= 0.8.7)
95
+ thor (>= 0.18.1, < 2.0)
96
+ rake (12.3.0)
97
+ rdoc (6.0.1)
98
+ request_store (1.4.0)
99
+ rack (>= 1.4)
100
+ shoulda (3.5.0)
101
+ shoulda-context (~> 1.0, >= 1.0.1)
102
+ shoulda-matchers (>= 1.4.1, < 3.0)
103
+ shoulda-context (1.2.2)
104
+ shoulda-matchers (2.8.0)
105
+ activesupport (>= 3.0.0)
106
+ sprockets (3.7.1)
107
+ concurrent-ruby (~> 1.0)
108
+ rack (> 1, < 3)
109
+ sprockets-rails (3.2.1)
110
+ actionpack (>= 4.0)
111
+ activesupport (>= 4.0)
112
+ sprockets (>= 3.0.0)
113
+ sqlite3 (1.3.13)
114
+ thor (0.20.0)
115
+ thread_safe (0.3.6)
116
+ tzinfo (1.2.4)
117
+ thread_safe (~> 0.1)
118
+ websocket-driver (0.6.5)
119
+ websocket-extensions (>= 0.1.0)
120
+ websocket-extensions (0.1.3)
121
+
122
+ PLATFORMS
123
+ ruby
124
+
125
+ DEPENDENCIES
126
+ activerecord-jdbc-adapter
127
+ activerecord-jdbcsqlite3-adapter
128
+ byebug
129
+ jruby-openssl
130
+ pry
131
+ rails (~> 5.0.0)
132
+ rdoc
133
+ shoulda
134
+ sqlite3
135
+ sublease!
136
+
137
+ RUBY VERSION
138
+ ruby 2.5.0p0
139
+
140
+ BUNDLED WITH
141
+ 1.16.1
@@ -0,0 +1,5 @@
1
+ Description:
2
+ Creates an initializer for sublease.
3
+
4
+ Example:
5
+ `rails generate sublease:install`
@@ -0,0 +1,9 @@
1
+ module Sublease
2
+ class InstallGenerator < Rails::Generators::Base
3
+ source_root File.expand_path('../templates', __FILE__)
4
+
5
+ def copy_files
6
+ template "sublease.rb", File.join("config", "initializers", "sublease.rb")
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,23 @@
1
+ #
2
+ # Sublease Configuration
3
+ #
4
+ Sublease.configure do |config|
5
+
6
+ # The tenant model Sublease will use to set the default tenant and when switching by subdomain or domain.
7
+ # config.tenant_model = Tenant
8
+
9
+ # Enable switching of tenant on domain.
10
+ # config.switch_on_domain = false
11
+
12
+ # Enable switching of tenant on subdomain.
13
+ # config.switch_on_subdomain = false
14
+
15
+ # Enable switching of tenant on combined subdomain and domain.
16
+ # config.switch_on_subdomain_and_domain = false
17
+
18
+ # The default tenant subdomain
19
+ # config.default_tenant_subdomain = 'www'
20
+
21
+ # The default tenant domain
22
+ # config.default_tenant_domain = 'example.com'
23
+ end
data/lib/sublease.rb ADDED
@@ -0,0 +1,132 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'sublease/engine'
4
+ require 'sublease/errors'
5
+ require 'sublease/tenant_switcher'
6
+ require 'request_store'
7
+
8
+ module Sublease
9
+
10
+ class << self
11
+ attr_reader :tenant_model, :switch_on_domain, :switch_on_subdomain, :switch_on_subdomain_and_domain
12
+
13
+ # configure sublease with available options
14
+ def configure
15
+ yield self if block_given?
16
+ end
17
+
18
+ def current_tenant=(tenant)
19
+ RequestStore.store[:sublease_current_tenant] = tenant
20
+ end
21
+
22
+ def current_tenant
23
+ RequestStore.store[:sublease_current_tenant] || default_tenant
24
+ end
25
+
26
+ def current_tenant_domain=(domain)
27
+ RequestStore.store[:sublease_current_tenant_domain] = domain
28
+ end
29
+
30
+ def current_tenant_domain
31
+ RequestStore.store[:sublease_current_tenant_domain] || default_tenant_domain
32
+ end
33
+
34
+ def current_tenant_subdomain=(subdomain)
35
+ RequestStore.store[:sublease_current_tenant_subdomain] = subdomain
36
+ end
37
+
38
+ def current_tenant_subdomain
39
+ RequestStore.store[:sublease_current_tenant_subdomain] || default_tenant_subdomain
40
+ end
41
+
42
+ def default_tenant=(tenant)
43
+ raise Sublease::TenantNotFound if tenant.nil?
44
+ RequestStore.store[:sublease_default_tenant] = tenant
45
+ end
46
+
47
+ def default_tenant
48
+ RequestStore.store[:sublease_default_tenant]
49
+ end
50
+
51
+ def default_tenant_domain=(domain)
52
+ tenant_model?
53
+ RequestStore.store[:sublease_default_tenant_domain] = domain
54
+ unless domain.nil?
55
+ if default_tenant_subdomain.nil?
56
+ self.default_tenant = tenant_model.where(domain: domain).first
57
+ else
58
+ self.default_tenant = tenant_model.where(domain: domain, subdomain: default_tenant_subdomain).first
59
+ end
60
+ end
61
+ end
62
+
63
+ def default_tenant_domain
64
+ RequestStore.store[:sublease_default_tenant_domain]
65
+ end
66
+
67
+ def default_tenant_subdomain=(subdomain)
68
+ tenant_model?
69
+ RequestStore.store[:sublease_default_tenant_subdomain] = subdomain
70
+ unless subdomain.nil?
71
+ if default_tenant_domain.nil?
72
+ self.default_tenant = tenant_model.where(subdomain: subdomain).first
73
+ else
74
+ self.default_tenant = tenant_model.where(domain: default_tenant_domain, subdomain: subdomain).first
75
+ end
76
+ end
77
+ end
78
+
79
+ def default_tenant_subdomain
80
+ RequestStore.store[:sublease_default_tenant_subdomain]
81
+ end
82
+
83
+ def tenant_model=(model)
84
+ if model.class == String
85
+ @tenant_model = model.capitalize.constantize
86
+ else
87
+ @tenant_model = model
88
+ end
89
+ end
90
+
91
+ def switch_on_domain=(tf)
92
+ tenant_model?
93
+ switch_on_configuration_valid?('domain', tf)
94
+ @switch_on_domain = tf.class == TrueClass ? true : false
95
+ end
96
+
97
+ def switch_on_subdomain=(tf)
98
+ tenant_model?
99
+ switch_on_configuration_valid?('subdomain', tf)
100
+ @switch_on_subdomain = tf.class == TrueClass ? true : false
101
+ end
102
+
103
+ def switch_on_subdomain_and_domain=(tf)
104
+ tenant_model?
105
+ switch_on_configuration_valid?('subdomain_and_domain', tf)
106
+ @switch_on_subdomain_and_domain = tf.class == TrueClass ? true : false
107
+ end
108
+
109
+ private
110
+
111
+ def tenant_model?
112
+ raise Sublease::TenantModelNotSet if tenant_model.nil?
113
+ true
114
+ end
115
+
116
+ def switch_on_configuration_valid?(method, value)
117
+ case method
118
+ when 'domain'
119
+ raise Sublease::ConfigError, 'Option switch_on_domain can not be enabled if switch_on_subdomain_and_domain is enabled.' if (switch_on_subdomain_and_domain == true && value == true)
120
+ raise Sublease::ConfigError, 'Options switch_on_domain and switch_on_subdomain can not be enabled together. Use switch_on_subdomain_and_domain instead.' if (value == true && switch_on_subdomain == true)
121
+ when 'subdomain'
122
+ raise Sublease::ConfigError, 'Option switch_on_subdomain can not be enabled if switch_on_subdomain_and_domain is enabled.' if (switch_on_subdomain_and_domain == true && value == true)
123
+ raise Sublease::ConfigError, 'Options switch_on_domain and switch_on_subdomain can not be enabled together. Use switch_on_subdomain_and_domain instead.' if (switch_on_domain == true && value == true)
124
+ when 'subdomain_and_domain'
125
+ raise Sublease::ConfigError, 'Option switch_on_subdomain_and_domain can not be enabled if either switch_on_domain or switch_on_subdomain is enabled.' if ((switch_on_domain == true && value == true) || (switch_on_subdomain == true && value == true))
126
+ else
127
+ true
128
+ end
129
+ end
130
+
131
+ end
132
+ end