julewire-rails_support 1.0.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/CHANGELOG.md +6 -0
- data/LICENSE.txt +3 -0
- data/README.md +13 -0
- data/julewire-rails_support.gemspec +36 -0
- data/lib/julewire/rails_support/event_reporter.rb +57 -0
- data/lib/julewire/rails_support/version.rb +7 -0
- data/lib/julewire/rails_support.rb +13 -0
- data/lib/julewire-rails_support.rb +3 -0
- metadata +82 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 68f0648998106bae9707f2cfe34910223ae1cf3825656fd9bc49a9ab2f11508e
|
|
4
|
+
data.tar.gz: 84a635009586818dc89491298b30749f8f57832165057839a4308f7ec9d45fe0
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 9d2ebd7fbd7e53e4c7e3b69db9fe5968ccf0e49de9e5f3f60f665ccb38e59ef5f3ee856fbb1a5b307d27be2f65b0e2c50a885d893f50d4c7c04bf829512160e5
|
|
7
|
+
data.tar.gz: e814a3dd62213fb1e2097db0301298aed89a8b8b53ae96a713444594e90e4133b4de393b45ec46aa0a0a869a77cb9a5a9b9cd8fffce4f1074b30a1abc49735d9
|
data/CHANGELOG.md
ADDED
data/LICENSE.txt
ADDED
data/README.md
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Julewire Rails Support
|
|
2
|
+
|
|
3
|
+
Shared Rails-family support helpers for Julewire integrations. This gem keeps
|
|
4
|
+
Rails and ActiveSupport constants out of `julewire-core`.
|
|
5
|
+
|
|
6
|
+
It owns the small Rails edge pieces that are useful to more than one adapter:
|
|
7
|
+
EventReporter subscription helpers, log-subscriber silencing, and
|
|
8
|
+
framework-version probes. `julewire-rails` and `julewire-active_job` use it so
|
|
9
|
+
core stays Ruby-only.
|
|
10
|
+
|
|
11
|
+
Applications should not usually depend on this gem directly. Reach for
|
|
12
|
+
`julewire-rails` or `julewire-active_job`; use this only when building another
|
|
13
|
+
Rails-family integration.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "lib/julewire/rails_support/version"
|
|
4
|
+
|
|
5
|
+
Gem::Specification.new do |spec|
|
|
6
|
+
spec.name = "julewire-rails_support"
|
|
7
|
+
spec.version = Julewire::RailsSupport::VERSION
|
|
8
|
+
spec.authors = ["Alexander Grebennik"]
|
|
9
|
+
spec.email = ["slbug@users.noreply.github.com", "sl.bug.sl@gmail.com"]
|
|
10
|
+
|
|
11
|
+
spec.summary = "Shared Rails-family support helpers for Julewire integrations."
|
|
12
|
+
spec.description = "Small Rails and ActiveSupport helper surface used by Julewire Rails-family integrations."
|
|
13
|
+
spec.homepage = "https://github.com/slbug/julewire"
|
|
14
|
+
spec.license = "MIT"
|
|
15
|
+
spec.required_ruby_version = ">= 3.4"
|
|
16
|
+
spec.metadata["homepage_uri"] = spec.homepage
|
|
17
|
+
spec.metadata["source_code_uri"] = "https://github.com/slbug/julewire/tree/main/gems/rails_support"
|
|
18
|
+
spec.metadata["changelog_uri"] = "https://github.com/slbug/julewire/blob/main/gems/rails_support/CHANGELOG.md"
|
|
19
|
+
|
|
20
|
+
spec.metadata["rubygems_mfa_required"] = "true"
|
|
21
|
+
|
|
22
|
+
spec.files = Dir.chdir(__dir__) do
|
|
23
|
+
Dir[
|
|
24
|
+
"CHANGELOG.md",
|
|
25
|
+
"LICENSE.txt",
|
|
26
|
+
"README.md",
|
|
27
|
+
"julewire-rails_support.gemspec",
|
|
28
|
+
"lib/**/*.rb"
|
|
29
|
+
]
|
|
30
|
+
end
|
|
31
|
+
spec.executables = []
|
|
32
|
+
spec.require_paths = ["lib"]
|
|
33
|
+
|
|
34
|
+
spec.add_dependency "julewire-core", ">= 1.0"
|
|
35
|
+
spec.add_dependency "zeitwerk", ">= 2.8.1"
|
|
36
|
+
end
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Julewire
|
|
4
|
+
module RailsSupport
|
|
5
|
+
module EventReporter
|
|
6
|
+
class << self
|
|
7
|
+
def default
|
|
8
|
+
rails = top_level_constant(:Rails)
|
|
9
|
+
return rails.event if rails.respond_to?(:event)
|
|
10
|
+
|
|
11
|
+
active_support = top_level_constant(:ActiveSupport)
|
|
12
|
+
return unless active_support.respond_to?(:event_reporter)
|
|
13
|
+
|
|
14
|
+
active_support.event_reporter
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def subscribe(reporter, subscriber, &)
|
|
18
|
+
return unless subscribable?(reporter)
|
|
19
|
+
|
|
20
|
+
reporter.subscribe(subscriber, &)
|
|
21
|
+
unsubscriber(reporter, subscriber)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def subscribable?(reporter)
|
|
25
|
+
reporter.respond_to?(:subscribe)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def unsubscriber(reporter, subscriber)
|
|
29
|
+
-> { reporter.unsubscribe(subscriber) if reporter.respond_to?(:unsubscribe) }
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def unsubscribe_log_subscriber(subscriber_class, reporter: default)
|
|
33
|
+
return unless reporter.respond_to?(:unsubscribe)
|
|
34
|
+
return unless log_subscriber?(subscriber_class)
|
|
35
|
+
|
|
36
|
+
reporter.unsubscribe(subscriber_class)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
private
|
|
40
|
+
|
|
41
|
+
def log_subscriber?(subscriber_class)
|
|
42
|
+
active_support = top_level_constant(:ActiveSupport)
|
|
43
|
+
event_reporter = active_support.const_get(:EventReporter, false)
|
|
44
|
+
subscriber_class < event_reporter.const_get(:LogSubscriber, false)
|
|
45
|
+
rescue StandardError
|
|
46
|
+
false
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def top_level_constant(name)
|
|
50
|
+
Object.const_get(name, false)
|
|
51
|
+
rescue NameError
|
|
52
|
+
nil
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: julewire-rails_support
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Alexander Grebennik
|
|
8
|
+
bindir: bin
|
|
9
|
+
cert_chain: []
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
|
+
dependencies:
|
|
12
|
+
- !ruby/object:Gem::Dependency
|
|
13
|
+
name: julewire-core
|
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
|
15
|
+
requirements:
|
|
16
|
+
- - ">="
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: '1.0'
|
|
19
|
+
type: :runtime
|
|
20
|
+
prerelease: false
|
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
22
|
+
requirements:
|
|
23
|
+
- - ">="
|
|
24
|
+
- !ruby/object:Gem::Version
|
|
25
|
+
version: '1.0'
|
|
26
|
+
- !ruby/object:Gem::Dependency
|
|
27
|
+
name: zeitwerk
|
|
28
|
+
requirement: !ruby/object:Gem::Requirement
|
|
29
|
+
requirements:
|
|
30
|
+
- - ">="
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: 2.8.1
|
|
33
|
+
type: :runtime
|
|
34
|
+
prerelease: false
|
|
35
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
36
|
+
requirements:
|
|
37
|
+
- - ">="
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: 2.8.1
|
|
40
|
+
description: Small Rails and ActiveSupport helper surface used by Julewire Rails-family
|
|
41
|
+
integrations.
|
|
42
|
+
email:
|
|
43
|
+
- slbug@users.noreply.github.com
|
|
44
|
+
- sl.bug.sl@gmail.com
|
|
45
|
+
executables: []
|
|
46
|
+
extensions: []
|
|
47
|
+
extra_rdoc_files: []
|
|
48
|
+
files:
|
|
49
|
+
- CHANGELOG.md
|
|
50
|
+
- LICENSE.txt
|
|
51
|
+
- README.md
|
|
52
|
+
- julewire-rails_support.gemspec
|
|
53
|
+
- lib/julewire-rails_support.rb
|
|
54
|
+
- lib/julewire/rails_support.rb
|
|
55
|
+
- lib/julewire/rails_support/event_reporter.rb
|
|
56
|
+
- lib/julewire/rails_support/version.rb
|
|
57
|
+
homepage: https://github.com/slbug/julewire
|
|
58
|
+
licenses:
|
|
59
|
+
- MIT
|
|
60
|
+
metadata:
|
|
61
|
+
homepage_uri: https://github.com/slbug/julewire
|
|
62
|
+
source_code_uri: https://github.com/slbug/julewire/tree/main/gems/rails_support
|
|
63
|
+
changelog_uri: https://github.com/slbug/julewire/blob/main/gems/rails_support/CHANGELOG.md
|
|
64
|
+
rubygems_mfa_required: 'true'
|
|
65
|
+
rdoc_options: []
|
|
66
|
+
require_paths:
|
|
67
|
+
- lib
|
|
68
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
69
|
+
requirements:
|
|
70
|
+
- - ">="
|
|
71
|
+
- !ruby/object:Gem::Version
|
|
72
|
+
version: '3.4'
|
|
73
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
74
|
+
requirements:
|
|
75
|
+
- - ">="
|
|
76
|
+
- !ruby/object:Gem::Version
|
|
77
|
+
version: '0'
|
|
78
|
+
requirements: []
|
|
79
|
+
rubygems_version: 4.0.14
|
|
80
|
+
specification_version: 4
|
|
81
|
+
summary: Shared Rails-family support helpers for Julewire integrations.
|
|
82
|
+
test_files: []
|