bp3-core 0.1.2 → 0.1.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: '02341017029035ce15928115c68d1b142a43d46474e8b7ea989c3c67d38ae323'
4
- data.tar.gz: 4e54a3d0c7357386472cf811707c9c990cbbd20541dad265b73d5f24224bfbaa
3
+ metadata.gz: a439b2f50c821e45fba5119a749a2c7b16f103eab54b791d10df8b7b55352393
4
+ data.tar.gz: '0598a39328efacd1be9f524c89927bc084921a9f083f5ad55a2079e43af7b3b6'
5
5
  SHA512:
6
- metadata.gz: 88c7855cd29ba6a7d33f404d8947d75df4ea27d11bfed33ea34a242e1fe3e31624c2619935d8f5018f2df684c5973f95954e016d125d009915923b87be44247d
7
- data.tar.gz: bf68641f064961b9de03cc3cdf9a70b63d9c2e4a362d4b8b7dec70cee5564ceb550042826c480ed3d4eec68680d8bb95d0731a26f50df61352dce3e202a23606
6
+ metadata.gz: 799d9784bb24ffc560fa30b0047d4c510e52395bcbdda02ae77087aba2a947cf6d35e658ebc22194522f39b8b1ed7da0e97342a82eab04dcf5cbbe21beb09dea
7
+ data.tar.gz: 94823bea2f47fc9af0a4477c6842071ebec9bff750e7e50239c6a061e9e37ceecdf03ae06791a4232e735676154d162d188f531a74eded2e192d8c1391984043
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.1.3] - 2024-07-31
4
+
5
+ - Ensure use of common global request state
6
+
3
7
  ## [0.1.2] - 2024-05-30
4
8
 
5
9
  - Explicit require active_support/parameter_filter
data/Gemfile.lock CHANGED
@@ -1,20 +1,20 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- bp3-core (0.1.2)
4
+ bp3-core (0.1.4)
5
5
  actionview (>= 7.1.2, < 8)
6
6
  activesupport (>= 7.1.2, < 8)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- actionview (7.1.3)
12
- activesupport (= 7.1.3)
11
+ actionview (7.1.3.4)
12
+ activesupport (= 7.1.3.4)
13
13
  builder (~> 3.1)
14
14
  erubi (~> 1.11)
15
15
  rails-dom-testing (~> 2.2)
16
16
  rails-html-sanitizer (~> 1.6)
17
- activesupport (7.1.3)
17
+ activesupport (7.1.3.4)
18
18
  base64
19
19
  bigdecimal
20
20
  concurrent-ruby (~> 1.0, >= 1.0.2)
@@ -26,31 +26,30 @@ GEM
26
26
  tzinfo (~> 2.0)
27
27
  ast (2.4.2)
28
28
  base64 (0.2.0)
29
- bigdecimal (3.1.6)
30
- builder (3.2.4)
31
- concurrent-ruby (1.2.3)
29
+ bigdecimal (3.1.8)
30
+ builder (3.3.0)
31
+ concurrent-ruby (1.3.3)
32
32
  connection_pool (2.4.1)
33
33
  crass (1.0.6)
34
- diff-lcs (1.5.0)
35
- drb (2.2.0)
36
- ruby2_keywords
37
- erubi (1.12.0)
38
- i18n (1.14.1)
34
+ diff-lcs (1.5.1)
35
+ drb (2.2.1)
36
+ erubi (1.13.0)
37
+ i18n (1.14.5)
39
38
  concurrent-ruby (~> 1.0)
40
- json (2.7.1)
39
+ json (2.7.2)
41
40
  language_server-protocol (3.17.0.3)
42
41
  loofah (2.22.0)
43
42
  crass (~> 1.0.2)
44
43
  nokogiri (>= 1.12.0)
45
- minitest (5.21.2)
44
+ minitest (5.24.1)
46
45
  mutex_m (0.2.0)
47
- nokogiri (1.16.5-x86_64-darwin)
46
+ nokogiri (1.16.7-x86_64-darwin)
48
47
  racc (~> 1.4)
49
- parallel (1.24.0)
50
- parser (3.3.0.4)
48
+ parallel (1.25.1)
49
+ parser (3.3.4.0)
51
50
  ast (~> 2.4.1)
52
51
  racc
53
- racc (1.7.3)
52
+ racc (1.8.1)
54
53
  rails-dom-testing (2.2.0)
55
54
  activesupport (>= 5.0.0)
56
55
  minitest
@@ -59,47 +58,51 @@ GEM
59
58
  loofah (~> 2.21)
60
59
  nokogiri (~> 1.14)
61
60
  rainbow (3.1.1)
62
- rake (13.1.0)
63
- regexp_parser (2.9.0)
64
- rexml (3.2.6)
65
- rspec (3.12.0)
66
- rspec-core (~> 3.12.0)
67
- rspec-expectations (~> 3.12.0)
68
- rspec-mocks (~> 3.12.0)
69
- rspec-core (3.12.2)
70
- rspec-support (~> 3.12.0)
71
- rspec-expectations (3.12.3)
61
+ rake (13.2.1)
62
+ regexp_parser (2.9.2)
63
+ rexml (3.3.2)
64
+ strscan
65
+ rspec (3.13.0)
66
+ rspec-core (~> 3.13.0)
67
+ rspec-expectations (~> 3.13.0)
68
+ rspec-mocks (~> 3.13.0)
69
+ rspec-core (3.13.0)
70
+ rspec-support (~> 3.13.0)
71
+ rspec-expectations (3.13.1)
72
72
  diff-lcs (>= 1.2.0, < 2.0)
73
- rspec-support (~> 3.12.0)
74
- rspec-mocks (3.12.6)
73
+ rspec-support (~> 3.13.0)
74
+ rspec-mocks (3.13.1)
75
75
  diff-lcs (>= 1.2.0, < 2.0)
76
- rspec-support (~> 3.12.0)
77
- rspec-support (3.12.1)
78
- rubocop (1.60.1)
76
+ rspec-support (~> 3.13.0)
77
+ rspec-support (3.13.1)
78
+ rubocop (1.65.0)
79
79
  json (~> 2.3)
80
80
  language_server-protocol (>= 3.17.0)
81
81
  parallel (~> 1.10)
82
82
  parser (>= 3.3.0.2)
83
83
  rainbow (>= 2.2.2, < 4.0)
84
- regexp_parser (>= 1.8, < 3.0)
84
+ regexp_parser (>= 2.4, < 3.0)
85
85
  rexml (>= 3.2.5, < 4.0)
86
- rubocop-ast (>= 1.30.0, < 2.0)
86
+ rubocop-ast (>= 1.31.1, < 2.0)
87
87
  ruby-progressbar (~> 1.7)
88
88
  unicode-display_width (>= 2.4.0, < 3.0)
89
- rubocop-ast (1.30.0)
90
- parser (>= 3.2.1.0)
91
- rubocop-capybara (2.20.0)
92
- rubocop (~> 1.41)
93
- rubocop-factory_bot (2.25.1)
89
+ rubocop-ast (1.31.3)
90
+ parser (>= 3.3.1.0)
91
+ rubocop-capybara (2.21.0)
94
92
  rubocop (~> 1.41)
93
+ rubocop-factory_bot (2.26.1)
94
+ rubocop (~> 1.61)
95
95
  rubocop-rake (0.6.0)
96
96
  rubocop (~> 1.0)
97
- rubocop-rspec (2.26.1)
97
+ rubocop-rspec (2.31.0)
98
98
  rubocop (~> 1.40)
99
99
  rubocop-capybara (~> 2.17)
100
100
  rubocop-factory_bot (~> 2.22)
101
+ rubocop-rspec_rails (~> 2.28)
102
+ rubocop-rspec_rails (2.29.1)
103
+ rubocop (~> 1.61)
101
104
  ruby-progressbar (1.13.0)
102
- ruby2_keywords (0.0.5)
105
+ strscan (3.1.0)
103
106
  tzinfo (2.0.6)
104
107
  concurrent-ruby (~> 1.0)
105
108
  unicode-display_width (2.5.0)
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # Bp3::Core
2
2
 
3
- bp3-core provides core concerns for the persuavis/black_phoebe_3 multi-site multi-tenant rails application.
3
+ bp3-core provides core concerns for BP3, the persuavis/black_phoebe_3 multi-site
4
+ multi-tenant rails application.
4
5
 
5
6
  ## Installation
6
7
 
@@ -38,10 +39,20 @@ In ActiveRecord models (or their base class) that are filtered/sorted with ransa
38
39
  ```ruby
39
40
  include Bp3::Core::Ransackable
40
41
  ```
42
+ Then in your application's `config/initializers/bp3-core`, add:
43
+ ```ruby
44
+ Bp3::Core::Ransackable.attribute_exceptions = %w[config config_id settable settable_id]
45
+ Bp3::Core::Ransackable.association_exceptions = %w[config settable]
46
+ ```
41
47
  In all ActiveRecord models (or their base class) with a request-id attribute :rqid, add:
42
48
  ```ruby
43
49
  include Bp3::Core::Rqid
44
50
  ```
51
+ Then in your application's `config/initializers/bp3-core`, add:
52
+ ```ruby
53
+ Bp3::Core::Rqid.global_request_state_class_name = 'GlobalRequestState'
54
+ Bp3::Core::Rqid.global_request_state_method = :request_id
55
+ ```
45
56
  In all ActiveRecord models (or their base class) with a sequence number attribute :sqnr, add:
46
57
  ```ruby
47
58
  include Bp3::Core::Sqnr
@@ -50,12 +61,13 @@ To use :sqnr for record ordering for a particular model, use the class macro:
50
61
  ```ruby
51
62
  use_sqnr_for_ordering
52
63
  ```
53
- In all ActiveRecord models (or their base class) that use site, tenant and/or workspace attributes that need
54
- to be populated from global state, add:
64
+ In all ActiveRecord models (or their base class) that use site, tenant and/or workspace
65
+ attributes that need to be populated from global state, add:
55
66
  ```ruby
56
67
  include Bp3::Core::Tenantable
57
68
  ```
58
69
  The specific columns expected by `Tenantable` are:
70
+
59
71
  - site: `sites_site_id`
60
72
  - tenant: `tenant_id`
61
73
  - workspace: `workspaces_workspace_id`
@@ -63,20 +75,21 @@ Tenantable will use reflection to determine which one(s) exist, and will create
63
75
 
64
76
  ## Development
65
77
 
66
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
78
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You
79
+ can also run `bin/console` for an interactive prompt that will allow you to experiment.
67
80
 
68
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
81
+ To install this gem onto your local machine, run `rake install`. To release a new version,
82
+ update the version number in `version.rb`, and then run `rake release`, which will create a git
83
+ tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
69
84
 
70
85
  ## Testing
71
86
  The `Bp3::Core::Test` class is for testing purposes.
72
87
 
88
+ Run `rake` to run rspec tests and rubocop linting.
89
+
73
90
  ## Documentation
74
91
  A `.yardopts` file is provided to support yard documentation.
75
92
 
76
- ## Contributing
77
-
78
- Bug reports and pull requests are welcome on GitHub at https://github.com/persuavis/bp3-core.
79
-
80
93
  ## License
81
94
 
82
95
  The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
data/bp3-core.gemspec CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
8
8
  spec.authors = ['Wim den Braven']
9
9
  spec.email = ['wimdenbraven@persuavis.com']
10
10
 
11
- spec.summary = 'bp3-core provides core concerns for black_phoebe_3.'
11
+ spec.summary = 'bp3-core provides core concerns for BP3 (persuavis/black_phoebe_3).'
12
12
  # spec.description = "TODO: Write a longer description or delete this line."
13
13
  spec.homepage = 'https://www.black-phoebe.com'
14
14
  spec.license = 'MIT'
@@ -2,6 +2,7 @@
2
2
 
3
3
  module Bp3
4
4
  module Core
5
+ # rubocop:disable Metrics/ModuleLength
5
6
  module Actions
6
7
  extend ActiveSupport::Concern
7
8
 
@@ -36,16 +37,16 @@ module Bp3
36
37
  private
37
38
 
38
39
  def set_global_request_state
39
- GlobalRequestState.inbound_request = @global_request
40
- GlobalRequestState.current_user = current_user
41
- GlobalRequestState.current_admin = current_admin
42
- GlobalRequestState.current_root = current_root
43
- GlobalRequestState.locale = I18n.locale
44
- GlobalRequestState.view_context = view_context
40
+ grsc.inbound_request = @global_request
41
+ grsc.current_user = current_user
42
+ grsc.current_admin = current_admin
43
+ grsc.current_root = current_root
44
+ grsc.locale = I18n.locale
45
+ grsc.view_context = view_context
45
46
  end
46
47
 
47
48
  def set_rqid
48
- GlobalRequestState.request_id = global_rqid
49
+ grsc.request_id = global_rqid
49
50
  end
50
51
 
51
52
  def global_rqid
@@ -84,7 +85,7 @@ module Bp3
84
85
 
85
86
  def check_site
86
87
  current_site || create_site
87
- GlobalRequestState.current_site = current_site
88
+ grsc.current_site = current_site
88
89
  end
89
90
 
90
91
  def current_site
@@ -100,7 +101,7 @@ module Bp3
100
101
  # TODO: cache the workspace/regex list
101
102
  def check_workspace
102
103
  current_workspace || create_workspace
103
- GlobalRequestState.current_workspace = current_workspace
104
+ grsc.current_workspace = current_workspace
104
105
  end
105
106
 
106
107
  # TODO: move (some of) this into Workspace
@@ -127,7 +128,7 @@ module Bp3
127
128
 
128
129
  def check_tenant
129
130
  current_tenant || create_tenant
130
- GlobalRequestState.current_tenant = current_tenant
131
+ grsc.current_tenant = current_tenant
131
132
  end
132
133
 
133
134
  def current_tenant
@@ -161,7 +162,7 @@ module Bp3
161
162
  end
162
163
 
163
164
  def info_for_paper_trail
164
- state = GlobalRequestState.new
165
+ state = grsc.new
165
166
  {
166
167
  rqid: global_rqid,
167
168
  sites_site_id: state.current_site&.id,
@@ -187,7 +188,7 @@ module Bp3
187
188
  end
188
189
 
189
190
  def either_site
190
- GlobalRequestState.either_site
191
+ grsc.either_site
191
192
  end
192
193
 
193
194
  def check_site_mode
@@ -203,6 +204,11 @@ module Bp3
203
204
  break
204
205
  end
205
206
  end
207
+
208
+ def grsc
209
+ @grsc ||= Bp3::Core::Rqid.global_request_state_class
210
+ end
206
211
  end
212
+ # rubocop:enable Metrics/ModuleLength
207
213
  end
208
214
  end
@@ -64,11 +64,11 @@ module Bp3
64
64
  return if cookie_value.blank? && do_not_track
65
65
 
66
66
  sites_site_id, tenant_id, identification = cookie_value&.split('/')
67
- if sites_site_id && sites_site_id != GRS.current_site.id
68
- Rails.logger.warn { "check_visitor_cookie: site mismatch! (#{sites_site_id} and #{GRS.current_site.id}" }
67
+ if sites_site_id && sites_site_id != grsc.current_site.id
68
+ Rails.logger.warn { "check_visitor_cookie: site mismatch! (#{sites_site_id} and #{grsc.current_site.id}" }
69
69
  end
70
- if tenant_id && tenant_id != GRS.current_tenant.id
71
- Rails.logger.warn { "check_visitor_cookie: tenant mismatch! (#{tenant_id} and #{GRS.current_tenant.id}" }
70
+ if tenant_id && tenant_id != grsc.current_tenant.id
71
+ Rails.logger.warn { "check_visitor_cookie: tenant mismatch! (#{tenant_id} and #{grsc.current_tenant.id}" }
72
72
  end
73
73
  visitor = Users::Visitor.find_by(sites_site_id:, tenant_id:, identification:)
74
74
  if visitor.nil?
@@ -80,7 +80,7 @@ module Bp3
80
80
  expires: 365.days.from_now
81
81
  }
82
82
  end
83
- @current_visitor = GlobalRequestState.current_visitor = visitor
83
+ @current_visitor = grsc.current_visitor = visitor
84
84
  Rails.logger.debug do
85
85
  "check_visitor_cookie: cookie[#{visitor_cookie_name}]=#{cookies.signed[visitor_cookie_name]}"
86
86
  end
@@ -93,8 +93,8 @@ module Bp3
93
93
  return if cookie_value.blank? && do_not_track
94
94
 
95
95
  identification = cookie_value
96
- sites_site_id = GRS.current_site_id
97
- tenant_id = GRS.current_tenant_id
96
+ sites_site_id = grsc.current_site_id
97
+ tenant_id = grsc.current_tenant_id
98
98
  visitor = Users::Visitor.find_by(sites_site_id:, tenant_id:, identification:)
99
99
  if visitor.nil?
100
100
  visitor = create_visitor
@@ -105,7 +105,7 @@ module Bp3
105
105
  expires: 365.days.from_now
106
106
  }
107
107
  end
108
- @current_visitor = GlobalRequestState.current_visitor = visitor
108
+ @current_visitor = grsc.current_visitor = visitor
109
109
  Rails.logger.debug do
110
110
  "check_visitor_cookie: cookie[#{new_visitor_cookie_name}]=#{cookies.signed[new_visitor_cookie_name]}"
111
111
  end
@@ -121,18 +121,18 @@ module Bp3
121
121
  end
122
122
 
123
123
  def create_visitor
124
- Users::Visitor.create!(sites_site: GRS.current_site,
125
- tenant: GRS.current_tenant,
126
- workspaces_workspace: GRS.current_workspace,
124
+ Users::Visitor.create!(sites_site: grsc.current_site,
125
+ tenant: grsc.current_tenant,
126
+ workspaces_workspace: grsc.current_workspace,
127
127
  identification: SecureRandom.uuid)
128
128
  end
129
129
 
130
130
  def cookie_site_id
131
- GRS.current_site.id[0..7]
131
+ grsc.current_site.id[0..7]
132
132
  end
133
133
 
134
134
  def cookie_tenant_id
135
- GRS.current_tenant.id[0..7]
135
+ grsc.current_tenant.id[0..7]
136
136
  end
137
137
  end
138
138
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Bp3
4
4
  module Core
5
- VERSION = '0.1.2'
5
+ VERSION = '0.1.4'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bp3-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wim den Braven
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-05-30 00:00:00.000000000 Z
11
+ date: 2024-07-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionview
@@ -179,5 +179,5 @@ requirements: []
179
179
  rubygems_version: 3.5.11
180
180
  signing_key:
181
181
  specification_version: 4
182
- summary: bp3-core provides core concerns for black_phoebe_3.
182
+ summary: bp3-core provides core concerns for BP3 (persuavis/black_phoebe_3).
183
183
  test_files: []