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.
- checksums.yaml +7 -0
- data/.gitignore +62 -0
- data/.travis.yml +68 -0
- data/CHANGELOG.md +3 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +29 -0
- data/Gemfile.lock +141 -0
- data/LICENSE +21 -0
- data/README.md +126 -0
- data/Rakefile +36 -0
- data/app/models/sublease/lodger.rb +71 -0
- data/app/models/sublease/tenant.rb +29 -0
- data/bin/rails +14 -0
- data/config/locales/de.yml +28 -0
- data/config/locales/en.yml +28 -0
- data/config/locales/es.yml +28 -0
- data/config/locales/fr.yml +28 -0
- data/config/locales/it.yml +28 -0
- data/config/locales/po.yml +28 -0
- data/gemfiles/Gemfile.jruby.rails-4.1-stable +29 -0
- data/gemfiles/Gemfile.jruby.rails-4.1-stable.lock +129 -0
- data/gemfiles/Gemfile.jruby.rails-4.2-stable +29 -0
- data/gemfiles/Gemfile.jruby.rails-4.2-stable.lock +152 -0
- data/gemfiles/Gemfile.jruby.rails-5.0-stable +29 -0
- data/gemfiles/Gemfile.jruby.rails-5.0-stable.lock +163 -0
- data/gemfiles/Gemfile.rails-4.1-stable +29 -0
- data/gemfiles/Gemfile.rails-4.1-stable.lock +115 -0
- data/gemfiles/Gemfile.rails-4.2-stable +29 -0
- data/gemfiles/Gemfile.rails-4.2-stable.lock +140 -0
- data/gemfiles/Gemfile.rails-5.0-stable +29 -0
- data/gemfiles/Gemfile.rails-5.0-stable.lock +141 -0
- data/lib/generators/sublease/install/USAGE +5 -0
- data/lib/generators/sublease/install/install_generator.rb +9 -0
- data/lib/generators/sublease/install/templates/sublease.rb +23 -0
- data/lib/sublease.rb +132 -0
- data/lib/sublease/engine.rb +5 -0
- data/lib/sublease/errors.rb +10 -0
- data/lib/sublease/tenant_switcher.rb +75 -0
- data/lib/sublease/version.rb +5 -0
- data/sublease.gemspec +28 -0
- data/test/dummy/README.rdoc +28 -0
- data/test/dummy/Rakefile +6 -0
- data/test/dummy/app/assets/images/.keep +0 -0
- data/test/dummy/app/assets/javascripts/application.js +13 -0
- data/test/dummy/app/assets/javascripts/lodgers.js +2 -0
- data/test/dummy/app/assets/stylesheets/application.css +15 -0
- data/test/dummy/app/assets/stylesheets/lodgers.css +4 -0
- data/test/dummy/app/controllers/application_controller.rb +7 -0
- data/test/dummy/app/controllers/concerns/.keep +0 -0
- data/test/dummy/app/controllers/lodgers_controller.rb +7 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/helpers/lodgers_helper.rb +2 -0
- data/test/dummy/app/mailers/.keep +0 -0
- data/test/dummy/app/models/.keep +0 -0
- data/test/dummy/app/models/concerns/.keep +0 -0
- data/test/dummy/app/models/lodger.rb +3 -0
- data/test/dummy/app/models/tenant.rb +3 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/app/views/lodgers/index.html.erb +6 -0
- data/test/dummy/bin/bundle +3 -0
- data/test/dummy/bin/rails +4 -0
- data/test/dummy/bin/rake +4 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +23 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/database.yml +23 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +37 -0
- data/test/dummy/config/environments/production.rb +78 -0
- data/test/dummy/config/environments/test.rb +39 -0
- data/test/dummy/config/initializers/assets.rb +8 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/mime_types.rb +4 -0
- data/test/dummy/config/initializers/session_store.rb +3 -0
- data/test/dummy/config/initializers/sublease.rb +24 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +23 -0
- data/test/dummy/config/routes.rb +3 -0
- data/test/dummy/config/secrets.yml +22 -0
- data/test/dummy/db/migrate/20180114164205_create_tenants.rb +10 -0
- data/test/dummy/db/migrate/20180115012642_create_lodgers.rb +9 -0
- data/test/dummy/db/schema.rb +31 -0
- data/test/dummy/lib/assets/.keep +0 -0
- data/test/dummy/log/.keep +0 -0
- data/test/dummy/public/404.html +67 -0
- data/test/dummy/public/422.html +67 -0
- data/test/dummy/public/500.html +66 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/fixtures/lodgers.yml +14 -0
- data/test/fixtures/tenants.yml +18 -0
- data/test/integration/navigation_test.rb +41 -0
- data/test/lib/generators/sublease/install_generator_test.rb +25 -0
- data/test/models/sublease/lodger_test.rb +67 -0
- data/test/models/sublease/tenant_test.rb +25 -0
- data/test/sublease_test.rb +133 -0
- data/test/test_helper.rb +23 -0
- 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,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
|