wazowski 0.1.3 → 0.2.2

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: 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 => "../"