wazowski 0.1.3 → 0.2.2
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 +4 -4
- data/.github/workflows/push.yml +54 -0
- data/.gitignore +4 -1
- data/README.md +6 -6
- data/gemfiles/{5.1.gemfile → 6.1.gemfile} +2 -2
- data/lib/wazowski/active_record_adapter.rb +12 -11
- data/lib/wazowski/version.rb +1 -1
- metadata +5 -7
- data/.travis.yml +0 -18
- data/gemfiles/5.2.gemfile +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3c5b75cb5ce9f7666ab0987744ec3b59ab34c91bbab1eb533ca021c82687690f
|
4
|
+
data.tar.gz: 98404bceada96f690c9cae0d967ce0350141bb8c9d701b4292435913ebec345d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1599d705ba07612b3ac3b65843cc040aeb384b10a11e621641760581e0706d1d38fde8448d4b8caa643ad422affd95f437ecd7d51192a73eea4b243dcdb8c924
|
7
|
+
data.tar.gz: c51f3736d3cefca352a30432d924287100dd711a42853e2bbce8cfd538af2b90dc165d2c478954293873e15fe101fd9f108f1d33d59281750fe15655236e04e7
|
@@ -0,0 +1,54 @@
|
|
1
|
+
name: Ruby
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches: [ master ]
|
6
|
+
pull_request:
|
7
|
+
branches: [ master ]
|
8
|
+
|
9
|
+
jobs:
|
10
|
+
test:
|
11
|
+
|
12
|
+
runs-on: ubuntu-latest
|
13
|
+
name: Test against Ruby ${{ matrix.ruby-version }} / Rails ${{ matrix.rails }}
|
14
|
+
|
15
|
+
strategy:
|
16
|
+
matrix:
|
17
|
+
ruby-version: ['3.1', '3.0', '2.7']
|
18
|
+
rails: ['6.0', '6.1']
|
19
|
+
|
20
|
+
services:
|
21
|
+
postgres:
|
22
|
+
image: postgres:11
|
23
|
+
env:
|
24
|
+
POSTGRES_USER: postgres
|
25
|
+
POSTGRES_PASSWORD: postgres
|
26
|
+
POSTGRES_DB: ci_db_test
|
27
|
+
ports:
|
28
|
+
- 5432:5432
|
29
|
+
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
|
30
|
+
|
31
|
+
steps:
|
32
|
+
- uses: actions/checkout@v2
|
33
|
+
|
34
|
+
- name: Set up Ruby ${{ matrix.ruby-version }}
|
35
|
+
uses: ruby/setup-ruby@359bebbc29cbe6c87da6bc9ea3bc930432750108
|
36
|
+
with:
|
37
|
+
ruby-version: ${{ matrix.ruby-version }}
|
38
|
+
|
39
|
+
- name: Install gems
|
40
|
+
env:
|
41
|
+
MATRIX_RAILS_VERSION: ${{ matrix.rails }}
|
42
|
+
run: |
|
43
|
+
export BUNDLE_GEMFILE="${GITHUB_WORKSPACE}/gemfiles/${MATRIX_RAILS_VERSION}.gemfile"
|
44
|
+
gem install bundler
|
45
|
+
bundle install --jobs 4 --retry 3
|
46
|
+
|
47
|
+
- name: Run tests
|
48
|
+
env:
|
49
|
+
WAZOWSKI_PG_DATABASE: ci_db_test
|
50
|
+
WAZOWSKI_PG_USERNAME: postgres
|
51
|
+
WAZOWSKI_PG_PASSWD: postgres
|
52
|
+
WAZOWSKI_PG_HOST: localhost
|
53
|
+
WAZOWSKI_PG_PORT: 5432
|
54
|
+
run: bundle exec rake
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+

|
2
2
|
|
3
3
|
|
4
4
|
# Wazowski
|
@@ -96,7 +96,7 @@ observable(:name) do
|
|
96
96
|
end
|
97
97
|
```
|
98
98
|
|
99
|
-
In this case the handler callback will receive
|
99
|
+
In this case the handler callback will receive information about all the changes occurred.
|
100
100
|
|
101
101
|
You can also observe a model's "presence". Your code will be executed only on create and deletion of the dependant
|
102
102
|
model, but not on updates:
|
@@ -116,9 +116,9 @@ You can also observe more than one model in one observable, in this case you mus
|
|
116
116
|
|
117
117
|
```ruby
|
118
118
|
observable(:user_sync_to_salesforce) do
|
119
|
-
depends_on User, :
|
119
|
+
depends_on User, :any
|
120
120
|
depends_on Order, :none
|
121
|
-
depends_on BillingInfo, :
|
121
|
+
depends_on BillingInfo, :any
|
122
122
|
|
123
123
|
foo = proc do |obj, event, changes|
|
124
124
|
# reused handler
|
@@ -214,9 +214,9 @@ class MyObserver < Wazowski::Observer
|
|
214
214
|
end
|
215
215
|
|
216
216
|
observable(:user_sync_to_salesforce) do
|
217
|
-
depends_on User, :
|
217
|
+
depends_on User, :any
|
218
218
|
depends_on Order, :none
|
219
|
-
depends_on BillingInfo, :
|
219
|
+
depends_on BillingInfo, :any
|
220
220
|
|
221
221
|
handler(User) { |user|
|
222
222
|
run_only_once { Etl.run(user) }
|
@@ -20,6 +20,9 @@ module Wazowski
|
|
20
20
|
info.merge!(model.__wazowski_changes_per_node) do |_, old_val, new_val|
|
21
21
|
old_val + new_val
|
22
22
|
end
|
23
|
+
|
24
|
+
model.__wazowski_clean_dirty!
|
25
|
+
model.__wazowski_presence_state.clear
|
23
26
|
end
|
24
27
|
|
25
28
|
clear_after_commit_performed!
|
@@ -55,8 +58,9 @@ module Wazowski
|
|
55
58
|
|
56
59
|
before_update do
|
57
60
|
self.class.__wazowski_tracked_any.each do |node_id|
|
58
|
-
|
59
|
-
|
61
|
+
changes.each do |attr, (old_value, _new_value)|
|
62
|
+
__wazowski_store_dirty!(attr.to_sym, node_id, :update, old_value)
|
63
|
+
end
|
60
64
|
end
|
61
65
|
|
62
66
|
self.class.__wazowski_tracked_attrs.each do |attr, node_ids|
|
@@ -67,9 +71,11 @@ module Wazowski
|
|
67
71
|
end
|
68
72
|
|
69
73
|
before_destroy do
|
70
|
-
self.
|
71
|
-
|
72
|
-
|
74
|
+
unless self.new_record?
|
75
|
+
self.class.__wazowski_all_nodes.each do |node_id|
|
76
|
+
__wazowski_presence_state.push([:delete, node_id])
|
77
|
+
TransactionState.current_state.register_model_changed(self)
|
78
|
+
end
|
73
79
|
end
|
74
80
|
end
|
75
81
|
|
@@ -82,9 +88,6 @@ module Wazowski
|
|
82
88
|
|
83
89
|
after_commit do
|
84
90
|
TransactionState.current_state.run_after_commit_only_once!
|
85
|
-
|
86
|
-
__wazowski_clean_dirty!
|
87
|
-
__wazowski_presence_state.clear
|
88
91
|
end
|
89
92
|
|
90
93
|
after_rollback do
|
@@ -139,8 +142,6 @@ module Wazowski
|
|
139
142
|
info[node_id] << [:insert, self.class, self]
|
140
143
|
when :delete
|
141
144
|
info[node_id] << [:delete, self.class, self]
|
142
|
-
when :update
|
143
|
-
info[node_id] << [:update, self.class, self, {}]
|
144
145
|
end
|
145
146
|
end
|
146
147
|
end
|
@@ -178,7 +179,7 @@ module Wazowski
|
|
178
179
|
def __wazowski_all_nodes
|
179
180
|
nodes_by_attribute = __wazowski_tracked_attrs.values
|
180
181
|
|
181
|
-
(nodes_by_attribute.any? ? nodes_by_attribute.
|
182
|
+
(nodes_by_attribute.any? ? nodes_by_attribute.reduce(:+) : Set.new) +
|
182
183
|
__wazowski_tracked_base +
|
183
184
|
__wazowski_tracked_any
|
184
185
|
end
|
data/lib/wazowski/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wazowski
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Roger Campos
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-03-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -115,16 +115,15 @@ executables: []
|
|
115
115
|
extensions: []
|
116
116
|
extra_rdoc_files: []
|
117
117
|
files:
|
118
|
+
- ".github/workflows/push.yml"
|
118
119
|
- ".gitignore"
|
119
|
-
- ".travis.yml"
|
120
120
|
- Gemfile
|
121
121
|
- README.md
|
122
122
|
- Rakefile
|
123
123
|
- bin/console
|
124
124
|
- bin/setup
|
125
|
-
- gemfiles/5.1.gemfile
|
126
|
-
- gemfiles/5.2.gemfile
|
127
125
|
- gemfiles/6.0.gemfile
|
126
|
+
- gemfiles/6.1.gemfile
|
128
127
|
- lib/wazowski.rb
|
129
128
|
- lib/wazowski/active_record_adapter.rb
|
130
129
|
- lib/wazowski/version.rb
|
@@ -148,8 +147,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
148
147
|
- !ruby/object:Gem::Version
|
149
148
|
version: '0'
|
150
149
|
requirements: []
|
151
|
-
|
152
|
-
rubygems_version: 2.7.6
|
150
|
+
rubygems_version: 3.1.6
|
153
151
|
signing_key:
|
154
152
|
specification_version: 4
|
155
153
|
summary: declarative active record data observers
|
data/.travis.yml
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
sudo: false
|
2
|
-
language: ruby
|
3
|
-
cache: bundler
|
4
|
-
rvm:
|
5
|
-
- 2.5.0
|
6
|
-
- 2.6.0
|
7
|
-
|
8
|
-
gemfile:
|
9
|
-
- gemfiles/5.1.gemfile
|
10
|
-
- gemfiles/5.2.gemfile
|
11
|
-
- gemfiles/6.0.gemfile
|
12
|
-
|
13
|
-
services:
|
14
|
-
- postgresql
|
15
|
-
env:
|
16
|
-
- WAZOWSKI_PG_DATABASE=travis_ci_test WAZOWSKI_PG_USERNAME=postgres
|
17
|
-
before_script:
|
18
|
-
- psql -c 'create database travis_ci_test;' -U postgres
|