pg_rls 0.0.2.6.2 → 0.0.2.6.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 87f7139b6e22ced3f4e32092df320ff675a995cfb5139b786da32de98087893e
4
- data.tar.gz: 4840e5dcab17c0ed382734fff92d3ddaf9a905b61aeba05a763fcb43fc68fc01
3
+ metadata.gz: ba75e0b7e721387cf04da5c9b310e514b07bbb5d3159b0a317c92048fe912f9b
4
+ data.tar.gz: 1c3cee557d24b75a3c61e981f0dc6bcd70859a8361d3b0230be4d9431cad1f20
5
5
  SHA512:
6
- metadata.gz: 03d7a09af5bf048f6aa0b1473d5b3c6ccc0a83c0068efa2e84dd75a016a4e39c353fa6bdc3e5d213961129860f08c3b9a79f2824b05d33a90fafdfd4d26e3d0b
7
- data.tar.gz: 89e3ced934194385d2d851880c4ef675020d5a706135dd4cef4de8127106ddb158385586be559ac84b1648a23965e50e764d76fe5beace11c583912fdc7d30f8
6
+ metadata.gz: d89f1f6ce97c51e38cd3f0560f5319b8f8da113cb69f7d36df5f5a241917bdd3e6f094f52dcc84595bf42d741edcc4cb63902c95f76b01307616c00f22b8c11c
7
+ data.tar.gz: 4c1505f44f45c4741e2b71a9a73a4dde81de2c2b0391cfc919363b52985299e272c76ce623f24829d91aa446f9310f23804e4fd5fad16f11bdce91c718d84c46
@@ -5,18 +5,23 @@ module PgRls
5
5
  module MultiTenancy
6
6
  def self.included(base)
7
7
  base.class_eval do
8
- before_action :switch_tenant!
8
+ around_action :switch_tenant!
9
+
10
+ def current_tenant
11
+ @current_tenant ||= request.subdomain
12
+ end
13
+ helper_method :current_tenant
9
14
  end
10
15
  end
11
16
 
12
17
  private
13
18
 
14
- def switch_tenant!
15
- tenant = request.subdomain
16
- Tenant.switch!(tenant)
17
- session[:_tenant] = tenant
18
- rescue PgRls::Errors::TenantNotFound, ActiveRecord::RecordNotFound
19
- Tenant.switch(session[:_tenant])
19
+ def switch_tenant!(&block)
20
+ fetched_tenant = session[:_tenant] || current_tenant
21
+ Tenant.with_tenant(fetched_tenant) do |tenant|
22
+ session[:_tenant] = tenant
23
+ block.call(tenant)
24
+ end
20
25
  rescue NoMethodError
21
26
  session[:_tenant] = nil
22
27
  redirect_to '/'
data/lib/pg_rls/tenant.rb CHANGED
@@ -36,17 +36,21 @@ module PgRls
36
36
 
37
37
  block.call(tenant) if block_given?
38
38
  ensure
39
- reset_rls!
39
+ reset_rls! unless PgRls.test_inline_tenant == true
40
40
  end
41
41
 
42
42
  def fetch
43
+ fetch!
44
+ rescue ActiveRecord::StatementInvalid
45
+ 'no tenant is selected'
46
+ end
47
+
48
+ def fetch!
43
49
  @fetch ||= PgRls.main_model.find_by!(
44
50
  tenant_id: PgRls.connection_class.connection.execute(
45
51
  "SELECT current_setting('rls.tenant_id')"
46
52
  ).getvalue(0, 0)
47
53
  )
48
- rescue ActiveRecord::StatementInvalid
49
- 'no tenant is selected'
50
54
  end
51
55
 
52
56
  def find_main_model
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PgRls
4
- VERSION = '0.0.2.6.2'
4
+ VERSION = '0.0.2.6.4'
5
5
  end
data/lib/pg_rls.rb CHANGED
@@ -145,6 +145,9 @@ module PgRls
145
145
  mattr_accessor :solo_mode
146
146
  @@solo_mode = false
147
147
 
148
+ mattr_accessor :test_inline_tenant
149
+ @@test_inline_tenant = false
150
+
148
151
  mattr_accessor :search_methods
149
152
  @@search_methods = %i[subdomain id tenant_id]
150
153
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pg_rls
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2.6.2
4
+ version: 0.0.2.6.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Laloush