fmrest 0.13.1 → 0.16.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +1 -0
  3. data/CHANGELOG.md +21 -0
  4. data/README.md +128 -83
  5. metadata +17 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: aa084310edbe4889c9ff8576ec6b208d676e12b7f390ffa96edd294651d86c7c
4
- data.tar.gz: d1f18c369fd228f00dafd1a8d7b4dd34d045d429b554a0813b4c1388b6c145e1
3
+ metadata.gz: ec213ebe845fe6b4e10e5cf54550d2a73fec05ac33fbeb5a9758b8f04327a8df
4
+ data.tar.gz: 9313ec2d6b743a6355535736f5d1fe77656c3f1d5c2648c4dcc2de36d49347d5
5
5
  SHA512:
6
- metadata.gz: 0abaf03db7360a3a8617a53ab2aaa99298017b16e4fb066a3fb5f449f936e48185cbb2e43dcac38de702996b3eec4a696f6ca0829d2f8ce2e8453232e136bc83
7
- data.tar.gz: e6fcb69cda93b3bc246eb5a2feadfd6f3a6ea3fe13db2a437a429f7a0b9d998bd48f2b4c01cd68b22ad7342fc6668cf603f99f3f355c25384b54462577ebe4c7
6
+ metadata.gz: 406e098733ea1c945b18d6df1063be38d1e9826c68d58bf1b9ce7d47784b0b8949d4d581e9918182c883ba674f2fff1ce0d4bb5b2854587ff0a1dc3d77a76f2d
7
+ data.tar.gz: c6e29a0b3f63adc1bb2c5c03a6c5f0a2eadb6ed4ae864159b9d504f77b1848ed51a94e6d1ca8aeb4abed8f36a08d58a99d4c66bfff04f56e227e4b117bb4e97e
data/.yardopts CHANGED
@@ -1,4 +1,5 @@
1
1
  --markup markdown
2
2
  --plugin activesupport-concern
3
+ lib/**/*.rb
3
4
  -
4
5
  docs/*
data/CHANGELOG.md CHANGED
@@ -1,5 +1,26 @@
1
1
  ## Changelog
2
2
 
3
+ ### 0.16.0
4
+
5
+ * Add `FmRest.logger=`
6
+ * Handle serialization of `nil`, `true` and `false` values
7
+
8
+ ### 0.15.2
9
+
10
+ * Fix autoloading of `FmRest::Layout`
11
+
12
+ ### 0.15.0
13
+
14
+ * Much improved querying API (see documentation on querying), adding new
15
+ `.query` capabilities, as well as two new methods: `.match` and `.or`
16
+
17
+ ### 0.14.0
18
+
19
+ * Aliased `FmRest::Spyke::Base` as `FmRest::Layout` (now preferred), and
20
+ provided a shortcut version for setting the layout name (e.g. `class Foo <
21
+ FmRest::Layout("LayoutName")`)
22
+ * Made `layout` class setting subclass-inheritable
23
+
3
24
  ### 0.13.1
4
25
 
5
26
  * Fix downloading of container field data from FMS19+
data/README.md CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/fmrest.svg?style=flat)](https://rubygems.org/gems/fmrest)
4
4
  ![CI](https://github.com/beezwax/fmrest-ruby/workflows/CI/badge.svg)
5
+ [![Yard Docs](http://img.shields.io/badge/yard-docs-blue.svg)](https://rubydoc.info/github/beezwax/fmrest-ruby)
5
6
 
6
7
  A Ruby client for
7
8
  [FileMaker 18 and 19's Data API](https://help.claris.com/en/data-api-guide)
@@ -9,7 +10,7 @@ using
9
10
  [Faraday](https://github.com/lostisland/faraday) and with optional
10
11
  ActiveRecord-ish ORM features through [Spyke](https://github.com/balvig/spyke).
11
12
 
12
- fmrest-ruby only partially implements FileMaker 18's Data API.
13
+ fmrest-ruby only partially implements FileMaker 19's Data API.
13
14
  See the [implementation completeness table](#api-implementation-completeness-table)
14
15
  to see if a feature you need is natively supported by the gem.
15
16
 
@@ -17,10 +18,10 @@ to see if a feature you need is natively supported by the gem.
17
18
 
18
19
  The `fmrest` gem is a wrapper for two other gems:
19
20
 
20
- * `fmrest-core`, which provides the core Faraday connection builder, session
21
+ * `fmrest-spyke`, providing an ActiveRecord-like ORM library built on top
22
+ of `fmrest-core` and [Spyke](https://github.com/balvig/spyke).
23
+ * `fmrest-core`, providing the core Faraday connection builder, session
21
24
  management, and other core utilities.
22
- * `fmrest-spyke`, which provides an ActiveRecord-like ORM library built on top
23
- of `fmrest-core` and Spyke.
24
25
 
25
26
  ## Installation
26
27
 
@@ -30,7 +31,7 @@ Add this to your Gemfile:
30
31
  gem 'fmrest'
31
32
  ```
32
33
 
33
- Or if you just want to use the Faraday connection without the ORM features, do:
34
+ Or if you just want to use the Faraday connection without the ORM features:
34
35
 
35
36
  ```ruby
36
37
  gem 'fmrest-core'
@@ -40,10 +41,11 @@ gem 'fmrest-core'
40
41
 
41
42
  ### ORM example
42
43
 
43
- Most people would want to use the ORM features provided by `fmrest-spyke`:
44
+ Most people would want to use the ORM features:
44
45
 
45
46
  ```ruby
46
- class Honeybee < FmRest::Spyke::Base
47
+ # A Layout model connecting to the "Honeybees Web" FileMaker layout
48
+ class Honeybee < FmRest::Layout("Honeybees Web")
47
49
  # Connection settings
48
50
  self.fmrest_config = {
49
51
  host: "…",
@@ -53,13 +55,28 @@ class Honeybee < FmRest::Spyke::Base
53
55
  }
54
56
 
55
57
  # Mapped attributes
56
- attributes name: "Bee Name", age: "Bee Age"
58
+ attributes name: "Bee Name", age: "Bee Age", created_on: "Created On"
57
59
 
58
- # Portals
59
- has_portal :flowers
60
+ # Portal associations
61
+ has_portal :tasks
60
62
 
61
- # File container
63
+ # File containers
62
64
  container :photo, field_name: "Bee Photo"
65
+
66
+ # Scopes
67
+ scope :can_legally_fly, -> { query(age: ">18") }
68
+
69
+ # Client-side validations
70
+ validates :name, presence: true
71
+
72
+ # Callbacks
73
+ before_save :set_created_on
74
+
75
+ private
76
+
77
+ def set_created_on
78
+ self.created_on = Date.today
79
+ end
63
80
  end
64
81
 
65
82
  # Find a record by id
@@ -68,7 +85,7 @@ bee = Honeybee.find(9)
68
85
  bee.name = "Hutch"
69
86
 
70
87
  # Add a new record to portal
71
- bee.flowers.build(name: "Daisy")
88
+ bee.tasks.build(urgency: "Today")
72
89
 
73
90
  bee.save
74
91
  ```
@@ -88,11 +105,11 @@ connection = FmRest::V1.build_connection(
88
105
  )
89
106
 
90
107
  # Get all records (as parsed JSON)
91
- connection.get("layouts/MyFancyLayout/records")
108
+ connection.get("layouts/FancyLayout/records")
92
109
 
93
110
  # Create new record
94
111
  connection.post do |req|
95
- req.url "layouts/MyFancyLayout/records"
112
+ req.url "layouts/FancyLayout/records"
96
113
 
97
114
  # You can just pass a hash for the JSON body
98
115
  req.body = { … }
@@ -128,13 +145,14 @@ You can also pass a `:log` option for basic request logging, see the section on
128
145
  Option | Description | Format | Default
129
146
  --------------------|--------------------------------------------|-----------------------------|--------
130
147
  `:host` | Hostname with optional port, e.g. `"example.com:9000"` | String | None
131
- `:database` | | String | None
132
- `:username` | | String | None
133
- `:password` | | String | None
148
+ `:database` | The name of the database to connect to | String | None
149
+ `:username` | A Data API-ready account | String | None
150
+ `:password` | Your password | String | None
134
151
  `:account_name` | Alias of `:username` | String | None
135
152
  `:ssl` | SSL options to be forwarded to Faraday | Faraday SSL options | None
136
153
  `:proxy` | Proxy options to be forwarded to Faraday | Faraday proxy options | None
137
154
  `:log` | Log JSON responses to STDOUT | Boolean | `false`
155
+ `:log_level` | Which log level to log into | Values accepted by `Logger#level=` | `:debug`
138
156
  `:coerce_dates` | See section on [date fields](#date-fields-and-timezones) | Boolean \| `:hybrid` \| `:full` | `false`
139
157
  `:date_format` | Date parsing format | String (FM date format) | `"MM/dd/yyyy"`
140
158
  `:timestamp_format` | Timestmap parsing format | String (FM date format) | `"MM/dd/yyyy HH:mm:ss"`
@@ -157,8 +175,8 @@ FmRest.default_connection_settings = {
157
175
  }
158
176
  ```
159
177
 
160
- These settings will be used by default by `FmRest::Spyke::Base` models whenever
161
- you don't set `fmrest_config=` explicitly, as well as by
178
+ These settings will be used by default by `FmRest::Layout` models whenever you
179
+ don't set `fmrest_config=` explicitly, as well as by
162
180
  `FmRest::V1.build_connection` in case you're setting up your Faraday connection
163
181
  manually.
164
182
 
@@ -188,11 +206,11 @@ building REST ORM models. fmrest-ruby builds its ORM features atop Spyke,
188
206
  bundled in the `fmrest-spyke` gem (already included if you're using the
189
207
  `fmrest` gem).
190
208
 
191
- To create a model you can inherit directly from `FmRest::Spyke::Base`, which is
192
- itself a subclass of `Spyke::Base`.
209
+ To create a model you can inherit directly from `FmRest::Layout` (itself a
210
+ subclass of `Spyke::Base`).
193
211
 
194
212
  ```ruby
195
- class Honeybee < FmRest::Spyke::Base
213
+ class Honeybee < FmRest::Layout
196
214
  end
197
215
  ```
198
216
 
@@ -216,17 +234,23 @@ bee = Honeybee.find(9) # GET request
216
234
 
217
235
  It's recommended that you read Spyke's documentation for more information on
218
236
  these basic features. If you've used ActiveRecord or similar ORM libraries
219
- however you'll find it quite familiar.
237
+ you'll find it quite familiar.
238
+
239
+ Notice that `FmRest::Layout` is aliased as `FmRest::Spyke::Base`. Previous
240
+ versions of fmrest-ruby only provided the latter version, so if you're already
241
+ using `FmRest::Spyke::Base` there's no need to rename your classes to
242
+ `FmRest::Layout`, both will continue to work interchangeably.
220
243
 
221
- In addition, `FmRest::Spyke::Base` extends `Spyke::Base` with the following
244
+ In addition, `FmRest::Layout` extends `Spyke::Base` with the following
222
245
  features:
223
246
 
224
- ### Model.fmrest_config=
247
+ ### FmRest::Layout.fmrest_config=
225
248
 
226
- This allows you to set your Data API connection settings on your model:
249
+ This allows you to set Data API connection settings specific to your model
250
+ class:
227
251
 
228
252
  ```ruby
229
- class Honeybee < FmRest::Spyke::Base
253
+ class Honeybee < FmRest::Layout
230
254
  self.fmrest_config = {
231
255
  host: "…",
232
256
  database: "…",
@@ -244,9 +268,8 @@ does the initial connection setup and then inherit from it in models using that
244
268
  same connection. E.g.:
245
269
 
246
270
  ```ruby
247
- class BeeBase < FmRest::Spyke::Base
248
- self.fmrest_config = { host: "…", … }
249
- }
271
+ class BeeBase < FmRest::Layout
272
+ self.fmrest_config = { host: "…", database: "", }
250
273
  end
251
274
 
252
275
  class Honeybee < BeeBase
@@ -254,34 +277,46 @@ class Honeybee < BeeBase
254
277
  end
255
278
  ```
256
279
 
280
+ Also, if not set, your model will try to use
281
+ `FmRest.default_connection_settings` instead.
282
+
257
283
  #### Connection settings overlays
258
284
 
259
285
  There may be cases where you want to use a different set of connection settings
260
286
  depending on context. For example, if you want to use username and password
261
- provided by the user in a web application. Since `Model.fmrest_config` is set
262
- at the class level, changing the username/password for the model in one context
263
- would also change it in all other contexts, leading to security issues.
287
+ provided by the user in a web application. Since `.fmrest_config`
288
+ is set at the class level, changing the username/password for the model in one
289
+ context would also change it in all other contexts, leading to security issues.
264
290
 
265
291
  To solve this scenario, fmrest-ruby provides a way of defining thread-local and
266
- reversible connection settings overlays through `Model.fmrest_config_overlay=`.
292
+ reversible connection settings overlays through
293
+ `.fmrest_config_overlay=`.
267
294
 
268
295
  See the [main document on connection setting overlays](docs/ConfigOverlays.md)
269
296
  for details on how it works.
270
297
 
271
- ### Model.layout
298
+ ### FmRest::Layout.layout
272
299
 
273
- Use `Model.layout` to define the layout for your model.
300
+ Use `layout` to set the layout name for your model.
274
301
 
275
302
  ```ruby
276
- class Honeybee < FmRest::Spyke::Base
303
+ class Honeybee < FmRest::Layout
277
304
  layout "Honeybees Web"
278
305
  end
279
306
  ```
280
307
 
281
- Note that you only need to set this if the name of the model and the name of
282
- the layout differ, otherwise the default will just work.
308
+ Alternatively, if you're inheriting from `FmRest::Layout` directly you can set
309
+ the layout name in the class definition line:
283
310
 
284
- ### Model.request_auth_token
311
+ ```ruby
312
+ class Honeybee < FmRest::Layout("Honeybees Web")
313
+ ```
314
+
315
+ Note that you only need to manually set the layout name if the name of the
316
+ class and the name of the layout differ, otherwise fmrest-ruby will just use
317
+ the name of the class.
318
+
319
+ ### FmRest::Layout.request_auth_token
285
320
 
286
321
  Requests a Data API session token using the connection settings in
287
322
  `fmrest_config` and returns it if successful, otherwise returns `false`.
@@ -290,16 +325,16 @@ You normally don't need to use this method as fmrest-ruby will automatically
290
325
  request and store session tokens for you (provided that `:autologin` is
291
326
  `true`).
292
327
 
293
- ### Model.logout
328
+ ### FmRest::Layout.logout
294
329
 
295
- Use `Model.logout` to log out from the database session (you may call it on any
330
+ Use `.logout` to log out from the database session (you may call it on any
296
331
  model that uses the database session you want to log out from).
297
332
 
298
333
  ```ruby
299
334
  Honeybee.logout
300
335
  ```
301
336
 
302
- ### Mapped Model.attributes
337
+ ### Mapped FmRest::Layout.attributes
303
338
 
304
339
  Spyke allows you to define your model's attributes using `attributes`, however
305
340
  sometimes FileMaker's field names aren't very Ruby-ORM-friendly, especially
@@ -308,7 +343,7 @@ fmrest-ruby extends `attributes`' functionality to allow you to map
308
343
  Ruby-friendly attribute names to FileMaker field names. E.g.:
309
344
 
310
345
  ```ruby
311
- class Honeybee < FmRest::Spyke::Base
346
+ class Honeybee < FmRest::Layout
312
347
  attributes first_name: "First Name", last_name: "Last Name"
313
348
  end
314
349
  ```
@@ -327,16 +362,16 @@ bee.first_name = "Queen"
327
362
  bee.attributes # => { "First Name": "Queen", "Last Name": "Buzz" }
328
363
  ```
329
364
 
330
- ### Model.has_portal
365
+ ### FmRest::Layout.has_portal
331
366
 
332
367
  You can define portal associations on your model wth `has_portal`, as such:
333
368
 
334
369
  ```ruby
335
- class Honeybee < FmRest::Spyke::Base
370
+ class Honeybee < FmRest::Layout
336
371
  has_portal :flowers
337
372
  end
338
373
 
339
- class Flower < FmRest::Spyke::Base
374
+ class Flower < FmRest::Layout
340
375
  attributes :color, :species
341
376
  end
342
377
  ```
@@ -371,8 +406,8 @@ Guides](https://guides.rubyonrails.org/active_model_basics.html#dirty).
371
406
  Since Spyke is API-agnostic it only provides a wide-purpose `.where` method for
372
407
  passing arbitrary parameters to the REST backend. fmrest-ruby however is well
373
408
  aware of its backend API, so it extends Spkye models with a bunch of useful
374
- querying methods: `.query`, `.limit`, `.offset`, `.sort`, `.portal`, `.script`,
375
- etc.
409
+ querying methods: `.query`, `.match`, `.omit`, `.limit`, `.offset`, `.sort`,
410
+ `.portal`, `.script`, etc.
376
411
 
377
412
  See the [main document on querying](docs/Querying.md) for detailed information
378
413
  on the query API methods.
@@ -393,7 +428,7 @@ detailed information on how those work.
393
428
  You can define container fields on your model class with `container`:
394
429
 
395
430
  ```ruby
396
- class Honeybee < FmRest::Spyke::Base
431
+ class Honeybee < FmRest::Layout
397
432
  container :photo, field_name: "Beehive Photo ID"
398
433
  end
399
434
  ```
@@ -411,7 +446,7 @@ details.
411
446
 
412
447
  ### Setting global field values
413
448
 
414
- You can call `.set_globals` on any `FmRest::Spyke::Base` model to set global
449
+ You can call `.set_globals` on any `FmRest::Layout` model to set global
415
450
  field values on the database that model is configured for.
416
451
 
417
452
  See the [main document on setting global field values](docs/GlobalFields.md)
@@ -423,7 +458,7 @@ If using `fmrest-spyke` with Rails then pretty log output will be set up for
423
458
  you automatically by Spyke (see [their
424
459
  README](https://github.com/balvig/spyke#log-output)).
425
460
 
426
- You can also enable simple Faraday STDOUT logging of raw requests (useful for
461
+ You can also enable simple Faraday logging of raw requests (useful for
427
462
  debugging) by passing `log: true` in the options hash for either
428
463
  `FmRest.default_connection_settings=` or your models' `fmrest_config=`, e.g.:
429
464
 
@@ -435,7 +470,7 @@ FmRest.default_connection_settings = {
435
470
  }
436
471
 
437
472
  # Or in your model
438
- class LoggyBee < FmRest::Spyke::Base
473
+ class LoggyBee < FmRest::Layout
439
474
  self.fmrest_config = {
440
475
  host: "…",
441
476
 
@@ -444,12 +479,22 @@ class LoggyBee < FmRest::Spyke::Base
444
479
  end
445
480
  ```
446
481
 
447
- If you need to set up more complex logging for your models can use the
482
+ You can also pass `log_level` to connection settings to change the severity of
483
+ log output (defaults to `:debug`).
484
+
485
+ By default fmrest-ruby logs to STDOUT or to Rails' logger object if available.
486
+ You can change this by providing your own logger object to `FmRest.logger=`:
487
+
488
+ ```ruby
489
+ FmRest.logger = Logger.new("fmrest.log")
490
+ ```
491
+
492
+ If you need to set up more complex logging for your models you can use the
448
493
  `faraday` block inside your class to inject your own logger middleware into the
449
494
  Faraday connection, e.g.:
450
495
 
451
496
  ```ruby
452
- class LoggyBee < FmRest::Spyke::Base
497
+ class LoggyBee < FmRest::Layout
453
498
  faraday do |conn|
454
499
  conn.response :logger, MyApp.logger, bodies: true
455
500
  end
@@ -460,31 +505,31 @@ end
460
505
 
461
506
  FM Data API reference: https://fmhelp.filemaker.com/docs/18/en/dataapi/
462
507
 
463
- | FM 18 Data API feature | Supported by basic connection | Supported by FmRest::Spyke::Base |
464
- |-------------------------------------|-------------------------------|----------------------------------|
465
- | Log in using HTTP Basic Auth | Yes | Yes |
466
- | Log in using OAuth | No | No |
467
- | Log in to an external data source | No | No |
468
- | Log in using a FileMaker ID account | No | No |
469
- | Log out | Yes | Yes |
470
- | Get product information | Manual* | No |
471
- | Get database names | Manual* | No |
472
- | Get script names | Manual* | No |
473
- | Get layout names | Manual* | No |
474
- | Get layout metadata | Manual* | No |
475
- | Create a record | Manual* | Yes |
476
- | Edit a record | Manual* | Yes |
477
- | Duplicate a record | Manual* | No |
478
- | Delete a record | Manual* | Yes |
479
- | Edit portal records | Manual* | Yes |
480
- | Get a single record | Manual* | Yes |
481
- | Get a range of records | Manual* | Yes |
482
- | Get container data | Manual* | Yes |
483
- | Upload container data | Manual* | Yes |
484
- | Perform a find request | Manual* | Yes |
485
- | Set global field values | Manual* | Yes |
486
- | Run a script | Manual* | Yes |
487
- | Run a script with another request | Manual* | Yes |
508
+ | FM 18 Data API feature | Supported by basic connection | Supported by FmRest::Layout |
509
+ |-------------------------------------|-------------------------------|-----------------------------|
510
+ | Log in using HTTP Basic Auth | Yes | Yes |
511
+ | Log in using OAuth | No | No |
512
+ | Log in to an external data source | No | No |
513
+ | Log in using a FileMaker ID account | No | No |
514
+ | Log out | Yes | Yes |
515
+ | Get product information | Manual* | No |
516
+ | Get database names | Manual* | No |
517
+ | Get script names | Manual* | No |
518
+ | Get layout names | Manual* | No |
519
+ | Get layout metadata | Manual* | No |
520
+ | Create a record | Manual* | Yes |
521
+ | Edit a record | Manual* | Yes |
522
+ | Duplicate a record | Manual* | No |
523
+ | Delete a record | Manual* | Yes |
524
+ | Edit portal records | Manual* | Yes |
525
+ | Get a single record | Manual* | Yes |
526
+ | Get a range of records | Manual* | Yes |
527
+ | Get container data | Manual* | Yes |
528
+ | Upload container data | Manual* | Yes |
529
+ | Perform a find request | Manual* | Yes |
530
+ | Set global field values | Manual* | Yes |
531
+ | Run a script | Manual* | Yes |
532
+ | Run a script with another request | Manual* | Yes |
488
533
 
489
534
  \* You can manually supply the URL and JSON to a `FmRest` connection.
490
535
 
@@ -519,6 +564,6 @@ See [LICENSE.txt](LICENSE.txt).
519
564
 
520
565
  ## Disclaimer
521
566
 
522
- This project is not sponsored by or otherwise affiliated with FileMaker, Inc,
523
- an Apple subsidiary. FileMaker is a trademark of FileMaker, Inc., registered in
524
- the U.S. and other countries.
567
+ This project is not sponsored by or otherwise affiliated with Claris
568
+ International Inc., an Apple Inc. subsidiary. FileMaker is a trademark of
569
+ Claris International Inc., registered in the U.S. and other countries.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fmrest
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.1
4
+ version: 0.16.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pedro Carbajal
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-02-16 00:00:00.000000000 Z
11
+ date: 2021-04-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fmrest-core
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.13.1
19
+ version: 0.16.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 0.13.1
26
+ version: 0.16.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: fmrest-spyke
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 0.13.1
33
+ version: 0.16.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 0.13.1
40
+ version: 0.16.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -222,6 +222,17 @@ licenses:
222
222
  - MIT
223
223
  metadata: {}
224
224
  post_install_message: |+
225
+ =======================================
226
+ Notes on upgrading from fmrest < 0.15
227
+ =======================================
228
+
229
+ There's a breaking change in the way the `.query` method behaves when chained.
230
+
231
+ Previously it would add new conditions as a logical OR in relation to
232
+ already set ones, whereas now by default it adds new conditions as a logical
233
+ AND relative to existing ones. To keep the old behavior you can use `.or.query`
234
+ in chained query calls instead. See documentation on querying for details.
235
+
225
236
  =======================================
226
237
  Notes on upgrading from fmrest < 0.13
227
238
  =======================================