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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fcf7dda546a0d02a581e12ab8bf40c0a0d6b310ba44c9cb101271ce7f925595b
4
- data.tar.gz: 8e6a932872a8904e6529ab440815e16931bbdf687d68bac1ca81d970413f4cae
3
+ metadata.gz: 3c5b75cb5ce9f7666ab0987744ec3b59ab34c91bbab1eb533ca021c82687690f
4
+ data.tar.gz: 98404bceada96f690c9cae0d967ce0350141bb8c9d701b4292435913ebec345d
5
5
  SHA512:
6
- metadata.gz: e9a4c20268d878711fac3b3f93c6621791d4ed501c8709c21672c691ccc0d57663e6c53f9aaf8cd5e95eafd8f170cea89bd2eb2f4e8cb008b133b67c9d743757
7
- data.tar.gz: 42867836b24e3b21861e990273e40f9899333d5e4c5374e574f93eb2e0aab1e8c6bc0ee7fce2b0cbb06d55e4174f829a7ea8917faf7f91389ca3621f46b76857
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
@@ -7,4 +7,7 @@
7
7
  /spec/reports/
8
8
  /tmp/
9
9
  .env
10
- Gemfile.lock
10
+ Gemfile.lock
11
+
12
+ yarn.lock
13
+ node_modules
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- [![Build Status](https://travis-ci.org/rogercampos/wazowski.svg?branch=master)](https://travis-ci.org/rogercampos/wazowski)
1
+ ![Build status](https://github.com/camaloon/wazowski/actions/workflows/push.yml/badge.svg)
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 no information about changes, even in update.
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, :all
119
+ depends_on User, :any
120
120
  depends_on Order, :none
121
- depends_on BillingInfo, :all
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, :all
217
+ depends_on User, :any
218
218
  depends_on Order, :none
219
- depends_on BillingInfo, :all
219
+ depends_on BillingInfo, :any
220
220
 
221
221
  handler(User) { |user|
222
222
  run_only_once { Etl.run(user) }
@@ -1,7 +1,7 @@
1
1
  source "https://rubygems.org"
2
2
 
3
3
  gem "codeclimate-test-reporter", :group => :test, :require => nil
4
- gem "activesupport", "~> 5.1.0"
5
- gem "activerecord", "~> 5.1.0"
4
+ gem "activesupport", "~> 6.1.0"
5
+ gem "activerecord", "~> 6.1.0"
6
6
 
7
7
  gemspec :path => "../"
@@ -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
- __wazowski_presence_state.push([:update, node_id])
59
- TransactionState.current_state.register_model_changed(self)
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.class.__wazowski_all_nodes.each do |node_id|
71
- __wazowski_presence_state.push([:delete, node_id])
72
- TransactionState.current_state.register_model_changed(self)
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.sum : Set.new) +
182
+ (nodes_by_attribute.any? ? nodes_by_attribute.reduce(:+) : Set.new) +
182
183
  __wazowski_tracked_base +
183
184
  __wazowski_tracked_any
184
185
  end
@@ -1,3 +1,3 @@
1
1
  module Wazowski
2
- VERSION = "0.1.3"
2
+ VERSION = "0.2.2"
3
3
  end
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.1.3
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: 2019-10-16 00:00:00.000000000 Z
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
- rubyforge_project:
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
data/gemfiles/5.2.gemfile DELETED
@@ -1,7 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gem "codeclimate-test-reporter", :group => :test, :require => nil
4
- gem "activesupport", "~> 5.2.0"
5
- gem "activerecord", "~> 5.2.0"
6
-
7
- gemspec :path => "../"