live_record 0.2.1 → 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
  SHA1:
3
- metadata.gz: e2a60a5fbaf627b89846d36f65ea5a685b766d3c
4
- data.tar.gz: e617a00065338ef2d909b3de3e7ec16782e611e8
3
+ metadata.gz: fdfd93a26658fb2c904c1099d412baa3b340590a
4
+ data.tar.gz: 40bea540c784bb1d010b53765c7022528e9e4bb2
5
5
  SHA512:
6
- metadata.gz: 4952880f039e019e7721b83e1d4b77618de2d37c5d80cf133b7c714df5d293d9a4e85120e89a0a63193d59188d2c99b3aec7a558c271dfb1919b3c0c90426cd3
7
- data.tar.gz: f9550bc5a31b21c9999d5a53c63a74608eea74e0619fe696c68c127142bc28c7576b2052121ce25111cf4139dc76fa61c35904898f2eacae0720c6c7e95f7b18
6
+ metadata.gz: 033ea790203cfa5c9edeb48eb03af908197224c434b78f99ff2fad781ccf1af15c65ed61d146d844f20524082dcc695a239a84824baecacef619a3006c09bd98
7
+ data.tar.gz: 41573f26ab8d05431c6577344131105ff5c48d3b0fc4376eec2295483a11034a5a3796b8c50958295fb855e753cc6ddd3a52619a19123ec0b1ad6aeeb05074e3
data/README.md CHANGED
@@ -40,7 +40,7 @@
40
40
 
41
41
  // now, we can just simply add a "create" callback, to apply our own logic whenever a new Book record is streamed from the backend
42
42
  LiveRecord.Model.all.Book.addCallback('after:create', function() {
43
- // let's say you have a code here that adds this new Book on the page
43
+ // let's say you have a code here that adds this new Book on the page
44
44
  // `this` refers to the Book record that has been created
45
45
  console.log(this);
46
46
  })
@@ -52,9 +52,9 @@
52
52
  // instantiate a Book object (only requirement is you pass the ID so it can be referenced when updates/destroy happen)
53
53
  var book = new LiveRecord.Model.all.Book({id: 1})
54
54
 
55
- // ...or you can also initialise with other attributes
55
+ // ...or you can also initialise with other attributes
56
56
  // var book = new LiveRecord.Model.all.Book({id: 1, title: 'Harry Potter', created_at: '2017-08-02T12:39:49.238Z'})
57
-
57
+
58
58
  // then store this Book object into the JS store
59
59
  book.create();
60
60
 
@@ -114,7 +114,7 @@
114
114
  1. Add the following to your `Gemfile`:
115
115
 
116
116
  ```ruby
117
- gem 'live_record', '~> 0.2.1'
117
+ gem 'live_record', '~> 0.2.2'
118
118
  ```
119
119
 
120
120
  2. Run:
@@ -159,7 +159,7 @@
159
159
  ### Example 1 - Simple Usage
160
160
 
161
161
  ```ruby
162
- # app/models/book.rb (example 1)
162
+ # app/models/book.rb
163
163
  class Book < ApplicationRecord
164
164
  include LiveRecord::Model::Callbacks
165
165
  has_many :live_record_updates, as: :recordable, dependent: :destroy
@@ -175,11 +175,11 @@
175
175
  ### Example 2 - Advanced Usage
176
176
 
177
177
  ```ruby
178
- # app/models/book.rb (example 1)
178
+ # app/models/book.rb
179
179
  class Book < ApplicationRecord
180
180
  include LiveRecord::Model::Callbacks
181
181
  has_many :live_record_updates, as: :recordable, dependent: :destroy
182
-
182
+
183
183
  def self.live_record_whitelisted_attributes(book, current_user)
184
184
  # Notice that from above, you also have access to `book` (the record currently requested by the client to be synced),
185
185
  # and the `current_user`, the current user who is trying to sync the `book` record.
@@ -273,6 +273,9 @@
273
273
 
274
274
  8. Load the records into the JS Model-store through JSON REST (i.e.):
275
275
 
276
+ * Any record created/loaded in the JS-store is automatically synced whenever it is updated from the backend
277
+ * When reconnected after losing connection, the records in the store are synced automatically.
278
+
276
279
  ### Example 1 - Using Default Loader (Requires JQuery)
277
280
 
278
281
  > Your controller must also support responding with JSON in addition to HTML. If you used scaffold or controller generator, this should already work immediately.
@@ -289,13 +292,13 @@
289
292
  ```html
290
293
  <!-- app/views/books/index.html.erb -->
291
294
  <script>
292
- // `loadRecords` you may also specify a URL to loadRecords (`url` defaults to `window.location.href` which is the current page)
295
+ // `loadRecords` you may also specify a URL to loadRecords (`url` defaults to `window.location.href` which is the current page)
293
296
  LiveRecord.helpers.loadRecords({modelName: 'Book', url: '/some/url/that/returns_books_as_a_json'})
294
297
  </script>
295
298
  ```
296
299
 
297
300
  ```html
298
- <!-- app/views/posts/index.html.erb -->
301
+ <!-- app/views/books/index.html.erb -->
299
302
  <script>
300
303
  // You may also pass in a callback for synchronous logic
301
304
  LiveRecord.helpers.loadRecords({
@@ -336,7 +339,7 @@
336
339
 
337
340
  ```js
338
341
  // subscribe
339
- subscription = LiveRecord.Model.all.Book.subscribe();
342
+ var subscription = LiveRecord.Model.all.Book.subscribe();
340
343
 
341
344
  // ...or subscribe only to certain conditions (i.e. when `is_enabled` attribute value is `true`)
342
345
  // For the list of supported operators (like `..._eq`), see JS API `MODEL.subscribe(CONFIG)` below
@@ -344,24 +347,24 @@
344
347
 
345
348
  // now, we can just simply add a "create" callback, to apply our own logic whenever a new Book record is streamed from the backend
346
349
  LiveRecord.Model.all.Book.addCallback('after:create', function() {
347
- // let's say you have a code here that adds this new Book on the page
350
+ // let's say you have a code here that adds this new Book on the page
348
351
  // `this` refers to the Book record that has been created
349
352
  console.log(this);
350
353
  })
351
354
 
352
355
  // you may also add callbacks specific to this `subscription`, as you may want to have multiple subscriptions. Then, see JS API `MODEL.subscribe(CONFIG)` below for information
353
356
 
354
- // then unsubscribe, as you wish
357
+ // you may also want to unsubscribe as you wish
355
358
  LiveRecord.Model.all.Book.unsubscribe(subscription);
356
359
  ```
357
360
 
358
361
  ### Ransack Search Queries (Optional)
359
-
362
+
360
363
  * If you need more complex queries to pass into the `.subscribe(where: { ... })` above, [ransack](https://github.com/activerecord-hackery/ransack) gem is supported.
361
364
  * For example you can then do:
362
365
  ```js
363
366
  // querying upon the `belongs_to :user`
364
- subscription = LiveRecord.Model.all.Book.subscribe({where: {user_is_admin_eq: true, is_enabled: true}});
367
+ subscription = LiveRecord.Model.all.Book.subscribe({where: {user_is_admin_eq: true, is_enabled_eq: true}});
365
368
 
366
369
  // or querying "OR" conditions
367
370
  subscription = LiveRecord.Model.all.Book.subscribe({where: {title_eq: 'I am Batman', content_eq: 'I am Batman', m: 'or'}});
@@ -392,9 +395,9 @@
392
395
  end
393
396
  ```
394
397
 
395
- ### Reconnection Streaming (when client got disconnected)
398
+ ### Reconnection Streaming For New Records (when client got disconnected)
396
399
 
397
- * Only requirement is that you should have a `created_at` attribute on your Models, which by default should already be there. However, to speed up queries, I highly suggest to add index on `created_at` with the following
400
+ * To be able to stream newly created records upon reconnection, the only requirement is that you should have a `created_at` attribute on your Models, which by default should already be there. However, to speed up queries, I highly suggest to add index on `created_at` with the following
398
401
 
399
402
  ```bash
400
403
  # this will create a file under db/migrate folder, then edit that file (see the ruby code below)
@@ -476,7 +479,7 @@
476
479
  * `before:create`: (function Object)
477
480
  * `after:create`: (function Object)
478
481
  * subscribes to the `LiveRecord::PublicationsChannel`, which then automatically receives new records from the backend.
479
- * you can also pass in `callbacks` (see above). These callbacks is only applicable to this subscription, and is independent of the Model and Instance callbacks.
482
+ * you can also pass in `callbacks` (see above). These callbacks are only applicable to this subscription, and is independent of the Model and Instance callbacks.
480
483
  * `ATTRIBUTENAME_OPERATOR` means something like (for example): `is_enabled_eq`, where `is_enabled` is the `ATTRIBUTENAME` and `eq` is the `OPERATOR`.
481
484
  * you can have as many `ATTRIBUTENAME_OPERATOR` as you like, but keep in mind that the logic applied to them is "AND", and not "OR". For "OR" conditions, use `ransack`
482
485
 
@@ -569,6 +572,10 @@
569
572
  * MIT
570
573
 
571
574
  ## Changelog
572
- * 0.2
575
+ * 0.2.2
576
+ * minor fix: "new records" subscription: `.modelName` was not being referenced properly, but should have not affected any functionalities.
577
+ * 0.2.1
578
+ * you can now access what attributes have changed; see [`MODEL.changes`](#modelinstancechanges) above.
579
+ * 0.2.0
573
580
  * Ability to subscribe to new records (supports lost connection auto-restreaming)
574
- * See [9th step of Setup above](#setup)
581
+ * See [9th step of Setup above](#setup)
@@ -14,7 +14,7 @@ LiveRecord.Model.create = (config) ->
14
14
  this
15
15
 
16
16
  Model.modelName = config.modelName
17
-
17
+
18
18
  Model.all = {}
19
19
 
20
20
  Model.subscriptions = []
@@ -61,7 +61,7 @@ LiveRecord.Model.create = (config) ->
61
61
  )
62
62
 
63
63
  subscription.liveRecord = {}
64
- subscription.liveRecord.modelName = config.modelName
64
+ subscription.liveRecord.modelName = Model.modelName
65
65
  subscription.liveRecord.where = config.where
66
66
  subscription.liveRecord.callbacks = config.callbacks
67
67
 
@@ -206,7 +206,7 @@ LiveRecord.Model.create = (config) ->
206
206
  'before:destroy': [],
207
207
  'after:destroy': []
208
208
  }
209
-
209
+
210
210
  Model.prototype._callbacks = {
211
211
  'on:connect': [],
212
212
  'on:disconnect': [],
@@ -268,4 +268,4 @@ LiveRecord.Model.create = (config) ->
268
268
  # add new Model to collection
269
269
  LiveRecord.Model.all[config.modelName] = Model
270
270
 
271
- Model
271
+ Model
@@ -1,3 +1,3 @@
1
1
  module LiveRecord
2
- VERSION = '0.2.1'.freeze
3
- end
2
+ VERSION = '0.2.2'.freeze
3
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: live_record
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jules Roman B. Polidario
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-09-13 00:00:00.000000000 Z
11
+ date: 2017-09-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails