Make the application multi-tenant
This commit is contained in:
@@ -2,7 +2,7 @@ module ApplicationCable
|
||||
class Connection < ActionCable::Connection::Base
|
||||
identified_by :current_user
|
||||
|
||||
def connect
|
||||
tenanted_connection do
|
||||
set_current_user || reject_unauthorized_connection
|
||||
end
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
class ApplicationRecord < ActiveRecord::Base
|
||||
primary_abstract_class
|
||||
tenanted
|
||||
end
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
echo "Starting Fizzy on http://localhost:3006"
|
||||
echo "Login with david@37signals.com using secret123456"
|
||||
echo "Starting Fizzy on http://development-tenant.fizzy.localhost:3006"
|
||||
|
||||
SOLID_QUEUE_IN_PUMA=true exec ./bin/rails server -p 3006
|
||||
|
||||
+6
-3
@@ -12,7 +12,8 @@ default: &default
|
||||
development:
|
||||
primary:
|
||||
<<: *default
|
||||
database: storage/development.sqlite3
|
||||
database: storage/development-tenanted/%{tenant}/main.sqlite3
|
||||
tenanted: true
|
||||
cable:
|
||||
<<: *default
|
||||
database: storage/development_cable.sqlite3
|
||||
@@ -31,12 +32,14 @@ development:
|
||||
# Do not set this db to the same as development or production.
|
||||
test:
|
||||
<<: *default
|
||||
database: storage/test.sqlite3
|
||||
database: storage/test-tenanted/%{tenant}/main.sqlite3
|
||||
tenanted: true
|
||||
|
||||
production:
|
||||
primary:
|
||||
<<: *default
|
||||
database: storage/production.sqlite3
|
||||
database: storage/production-tenanted/%{tenant}/main.sqlite3
|
||||
tenanted: true
|
||||
cable:
|
||||
<<: *default
|
||||
database: storage/production_cable.sqlite3
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
Rails.application.configure do |config|
|
||||
config.middleware.use ActiveRecord::Tenanted::TenantSelector, "ApplicationRecord", ->(request) { request.subdomain }
|
||||
end
|
||||
+4
-2
@@ -1,10 +1,12 @@
|
||||
test:
|
||||
service: Disk
|
||||
root: <%= Rails.root.join("tmp/storage") %>
|
||||
root: <%= Rails.root.join("tmp/storage/%{tenant}") %>
|
||||
tenanted: true
|
||||
|
||||
local:
|
||||
service: Disk
|
||||
root: <%= Rails.root.join("storage", "files") %>
|
||||
root: <%= Rails.root.join("storage", "files", "%{tenant}") %>
|
||||
tenanted: true
|
||||
|
||||
# Use bin/rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key)
|
||||
# amazon:
|
||||
|
||||
+2007
File diff suppressed because it is too large
Load Diff
@@ -11,7 +11,7 @@ class UploadsControllerTest < ActionDispatch::IntegrationTest
|
||||
end
|
||||
|
||||
assert_response :success
|
||||
assert_equal ActiveStorage::Attachment.last.slug_url(host: "www.example.com", port: nil), response.parsed_body["fileUrl"]
|
||||
assert_equal ActiveStorage::Attachment.last.slug_url(host: "#{ApplicationRecord.current_tenant}.example.com", port: nil), response.parsed_body["fileUrl"]
|
||||
assert_equal "image/jpeg", response.parsed_body["mimetype"]
|
||||
assert_equal "moon.jpg", response.parsed_body["fileName"]
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user