wisper_plus 0.1.1 → 0.1.6

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: 1516979421843228313201c9dc0139573d8484cac78e90e995134d9d8e2b58c1
4
- data.tar.gz: 8635d9e038c81bd9e7f58ca3de14785408d08c82ec3f3e6b866936d92053941b
3
+ metadata.gz: baabb826e9732fbf4c23623dc7792153c2f44eb84caf4a4c12899154983c83ad
4
+ data.tar.gz: c3687921c30c5a1df7eed1bf809382b4bc5fcd2820edde29aeceab8f31395daf
5
5
  SHA512:
6
- metadata.gz: 24e7a57f3a09517ef4bfb0975b053354c16cb35a163f2ac4a707e6aebe6c30724959e1a43de945c1c116e62dc5f448beb1307d1f65df09d778486c570c848e03
7
- data.tar.gz: 7cc1da603314a6fbd39bd73f4f60cf3ae1e6277acb32c5683194d28ddd9650008e7b6b971cc945d8b86723ccb78fe15dbfdf35d0be2775292df3b80431bc91cf
6
+ metadata.gz: 8c0f7026ee5aee90a9197f2086152e3c588b706c7f732e1a54b58d3a5672f478a7564fca9ef7acf0dc9cbfc11a3628fd66338b553acb92527dae868442390de7
7
+ data.tar.gz: 3a7580bcc5d673590485722c0c90062348f0fa52eef60a6b842499d7219f0efdea64d9989af4616f5f1394fccbed0eb4a5d3fa3a1b036663990f953f593adead
data/CHANGELOG.md CHANGED
@@ -1,2 +1,12 @@
1
- # 0.1.1
1
+ # Changelog
2
+
3
+ ## 0.1.5
4
+ - allow Rails 6
5
+
6
+ ## 0.1.4
7
+ - allow multiple subscribers to subscribe to a model
8
+ - fix global subscriber
9
+ - better error reporting
10
+
11
+ ## 0.1.1
2
12
  - make publish/broadcast a public method
data/Gemfile.lock ADDED
@@ -0,0 +1,36 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ wisper_plus (0.1.5)
5
+ activesupport (>= 6.0.3.1)
6
+ wisper (>= 1.6, < 3.0)
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ activesupport (6.1.4)
12
+ concurrent-ruby (~> 1.0, >= 1.0.2)
13
+ i18n (>= 1.6, < 2)
14
+ minitest (>= 5.1)
15
+ tzinfo (~> 2.0)
16
+ zeitwerk (~> 2.3)
17
+ concurrent-ruby (1.1.9)
18
+ i18n (1.8.10)
19
+ concurrent-ruby (~> 1.0)
20
+ minitest (5.14.4)
21
+ rake (13.0.3)
22
+ tzinfo (2.0.4)
23
+ concurrent-ruby (~> 1.0)
24
+ wisper (2.0.1)
25
+ zeitwerk (2.4.2)
26
+
27
+ PLATFORMS
28
+ ruby
29
+
30
+ DEPENDENCIES
31
+ bundler (>= 1.16, < 3.0)
32
+ rake (>= 12.3.3)
33
+ wisper_plus!
34
+
35
+ BUNDLED WITH
36
+ 2.2.15
data/lib/wisper_plus.rb CHANGED
@@ -34,7 +34,7 @@ module Wisper
34
34
  # pass the set of changes for background jobs to know what changed
35
35
  # see https://github.com/krisleech/wisper-activerecord/issues/17
36
36
  def broadcast_update
37
- broadcast(:after_update, self, previous_changes.with_indifferent_access) if previous_changes.any?
37
+ broadcast(:after_update, self) if self.saved_changes?
38
38
  end
39
39
 
40
40
  # broadcast MODEL_destroyed to subscribed listeners
@@ -72,7 +72,6 @@ module Wisper
72
72
  e
73
73
  end
74
74
  end
75
- ap event
76
75
  listener&.public_send(event, *args)
77
76
  end
78
77
  end
@@ -85,9 +84,9 @@ module Wisper
85
84
  end
86
85
  end
87
86
  end
87
+ Wisper::ActiveJobBroadcaster.register
88
88
  end
89
89
 
90
- Wisper::ActiveJobBroadcaster.register
91
90
  end
92
91
 
93
92
 
@@ -2,28 +2,74 @@ require 'rails'
2
2
 
3
3
  class WisperPlus::Railtie < Rails::Railtie
4
4
 
5
- config.after_initialize do
6
-
7
- # Link any Models to their <Model>Subscriber class
8
- Dir.glob(Rails.root.join('app/models/**/*.rb').to_s) do |filename|
9
- next if filename.index('/concerns/')
10
- filename = filename.remove(Rails.root.join('app/models/').to_s)[0..-4]
11
- klass = filename.camelize.constantize
12
- next unless klass.ancestors.include?(ApplicationRecord)
5
+ def self.subscribe(model_klass, subscriber_klass)
6
+ model_class = model_klass
7
+ if model_class != 'Global'
13
8
  begin
14
- notifier_klass = "#{klass}Subscriber".constantize
15
- klass.subscribe(notifier_klass.new, async: false)
16
- if Rails.env.development?
17
- puts "🔹 #{klass.to_s.magenta} #{'subscriber'.blue}"
9
+ model_class = model_class.constantize
10
+ if !model_class.ancestors.include?(ApplicationRecord)
11
+ # puts "🔸 #{model_class} is not an ActiveRecord model".yellow
12
+ return
18
13
  end
19
- if !klass.ancestors.include?(Wisper::Publisher)
20
- puts "🔸 #{klass} is not including Wisper::ActiveRecord::Publisher".yellow
14
+ if !model_class.ancestors.include?(Wisper::Publisher)
15
+ puts "🔸 #{model_class} is not including Wisper::ActiveRecord::Publisher. Cannot Subscribe #{subscriber_klass.magenta}.".yellow
16
+ return
21
17
  end
22
18
  rescue NameError
23
- # ignore
19
+ model_class = model_class.split("::")
20
+ model_class.pop
21
+ if model_class.size.positive?
22
+ model_class = model_class.join('::')
23
+ retry
24
+ else
25
+ puts "🔸 #{model_klass} not found"
26
+ return
27
+ end
28
+ end
29
+ end
30
+
31
+ begin
32
+ subscriber_klass = subscriber_klass.constantize
33
+ rescue NameError
34
+ puts "🔸 #{subscriber_klass} not found"
35
+ end
36
+
37
+ begin
38
+ if model_class != 'Global'
39
+ model_class.subscribe(subscriber_klass.new, async: false)
40
+ else
41
+ Wisper.subscribe(subscriber_klass.new)
24
42
  end
43
+ rescue NoMethodError
44
+ puts "🔸 #{model_class}.subscribe() not found"
25
45
  end
26
46
 
47
+ if Rails.env.development?
48
+ puts "🔹 #{subscriber_klass.to_s.magenta} => #{model_class.to_s.blue}"
49
+ end
27
50
  end
28
51
 
52
+ config.to_prepare do
53
+ Wisper.clear if Rails.env.development?
54
+
55
+ # AUTOLINK models to subscribers if DB exists
56
+ if (::ActiveRecord::Base.connection rescue false)
57
+ # Link any Models to their <Model>Subscriber class
58
+ Dir.glob(Rails.root.join('app/subscribers/**/*.rb').to_s) do |filename|
59
+ filename = filename.remove(Rails.root.join('app/subscribers/').to_s)[0..-4]
60
+ subscriber_klass = filename.classify
61
+ model_klass = subscriber_klass.chomp("Subscriber")
62
+ WisperPlus::Railtie.subscribe(model_klass, subscriber_klass)
63
+
64
+ subscribers_dir = Rails.root.join('app','subscribers',filename)
65
+ if subscribers_dir.directory?
66
+ subscribers_dir.each_child do |fpath|
67
+ ap fpath
68
+ end
69
+ end
70
+ end
71
+ end
72
+ end
73
+
74
+
29
75
  end
@@ -1,3 +1,3 @@
1
1
  module WisperPlus
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.6"
3
3
  end
data/wisper_plus.gemspec CHANGED
@@ -30,10 +30,10 @@ Gem::Specification.new do |spec|
30
30
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
31
31
  spec.require_paths = ["lib"]
32
32
 
33
- spec.add_development_dependency "bundler", "~> 1.16"
34
- spec.add_development_dependency "rake", "~> 10.0"
33
+ spec.add_development_dependency "bundler", ">= 1.16", '< 3.0'
34
+ spec.add_development_dependency "rake", ">= 12.3.3"
35
35
 
36
- spec.add_runtime_dependency 'activesupport', '>= 3', '< 6'
36
+ spec.add_runtime_dependency 'activesupport', ">= 6.0.3.1"
37
37
 
38
38
  spec.add_dependency 'wisper', '>= 1.6', '< 3.0'
39
39
  end
metadata CHANGED
@@ -1,63 +1,63 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wisper_plus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Sharpe
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-08-17 00:00:00.000000000 Z
11
+ date: 2021-07-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.16'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '3.0'
20
23
  type: :development
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - "~>"
27
+ - - ">="
25
28
  - !ruby/object:Gem::Version
26
29
  version: '1.16'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '3.0'
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: rake
29
35
  requirement: !ruby/object:Gem::Requirement
30
36
  requirements:
31
- - - "~>"
37
+ - - ">="
32
38
  - !ruby/object:Gem::Version
33
- version: '10.0'
39
+ version: 12.3.3
34
40
  type: :development
35
41
  prerelease: false
36
42
  version_requirements: !ruby/object:Gem::Requirement
37
43
  requirements:
38
- - - "~>"
44
+ - - ">="
39
45
  - !ruby/object:Gem::Version
40
- version: '10.0'
46
+ version: 12.3.3
41
47
  - !ruby/object:Gem::Dependency
42
48
  name: activesupport
43
49
  requirement: !ruby/object:Gem::Requirement
44
50
  requirements:
45
51
  - - ">="
46
52
  - !ruby/object:Gem::Version
47
- version: '3'
48
- - - "<"
49
- - !ruby/object:Gem::Version
50
- version: '6'
53
+ version: 6.0.3.1
51
54
  type: :runtime
52
55
  prerelease: false
53
56
  version_requirements: !ruby/object:Gem::Requirement
54
57
  requirements:
55
58
  - - ">="
56
59
  - !ruby/object:Gem::Version
57
- version: '3'
58
- - - "<"
59
- - !ruby/object:Gem::Version
60
- version: '6'
60
+ version: 6.0.3.1
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: wisper
63
63
  requirement: !ruby/object:Gem::Requirement
@@ -91,6 +91,7 @@ files:
91
91
  - ".travis.yml"
92
92
  - CHANGELOG.md
93
93
  - Gemfile
94
+ - Gemfile.lock
94
95
  - LICENSE.txt
95
96
  - README.md
96
97
  - Rakefile
@@ -104,7 +105,7 @@ homepage: ''
104
105
  licenses:
105
106
  - MIT
106
107
  metadata: {}
107
- post_install_message:
108
+ post_install_message:
108
109
  rdoc_options: []
109
110
  require_paths:
110
111
  - lib
@@ -119,9 +120,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
119
120
  - !ruby/object:Gem::Version
120
121
  version: '0'
121
122
  requirements: []
122
- rubyforge_project:
123
- rubygems_version: 2.7.6
124
- signing_key:
123
+ rubygems_version: 3.2.15
124
+ signing_key:
125
125
  specification_version: 4
126
126
  summary: Handy additions to Wisper
127
127
  test_files: []