fmrest-spyke 0.18.0.rc1 → 0.19.0.rc1

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: 38cc05be48b9ba5737e7a2c1d89504bab617a2f1d6d7261fde1b5a919aa793e7
4
- data.tar.gz: 0b1780c8ce2f7d8d8f4c300909b2bafb7f41e18e2ce648f929be9e2d3569ddbe
3
+ metadata.gz: eb879437821941e732a5e52b01c7f0feace73cd3faf1d1e584e0a1a5b3224876
4
+ data.tar.gz: 02b666bdba2e9a29fcfdea4c34bb6ea26eccaead15b3294de57fc5a000cfc13d
5
5
  SHA512:
6
- metadata.gz: 123d5611c9c862605c30643b8034665c67c24fc283d21311f6124baff2271c459bcae0d4834f2480f4aa2e521105a6df58ecb011f46fc4f50a656df4a91108f5
7
- data.tar.gz: 91a6d0bdf49792a76b0bf817543a89e7b92bcf0c55eaa128d9bee3219f250e47a14bd064f862383f11f66dac70f1830cc6f1017b56d912f4d8be344e7ac86bed
6
+ metadata.gz: bc1506322c774bd2d1bee6a072644df4f37f9116940f710adc6f0fdb9dd4982e9ba570e4f21ee95543d0f52d3e3532ea133dc9a5689621945179eaba33052c28
7
+ data.tar.gz: d7370baeaf5a4b92ac6b3800ea8fe0ade0525f196cabd2a41615e9cf358251b1cfef2e7263e688545b727f619f6de1802c9f23cde012627e81f1ca5852a6b3e8
data/CHANGELOG.md CHANGED
@@ -1,10 +1,20 @@
1
1
  ## Changelog
2
2
 
3
+ ### 0.19.0
4
+
5
+ * Add native support for FileMaker cloud through the `fmrest-cloud` gem
6
+
3
7
  ### 0.18.0
4
8
 
5
9
  * Better support for portals with mismatching field qualifiers
10
+ * Better ergonomics for script execution, improved documentation
6
11
  * Defining an attribute on a model that would collide with an existing method
7
12
  now raises an error
13
+ * Cleared Faraday deprecation messages on authentication methods
14
+ * Handle FileMaker Cloud case where HTTP 401 Unauthorized with content-type
15
+ text/html is returned after token expiry
16
+ * Add retry option to Rescuable mixin
17
+ * Added fmrest-ruby/VERSION to User-Agent headers
8
18
 
9
19
  ### 0.17.1
10
20
 
data/README.md CHANGED
@@ -5,14 +5,27 @@
5
5
  [![Yard Docs](http://img.shields.io/badge/yard-docs-blue.svg)](https://rubydoc.info/github/beezwax/fmrest-ruby)
6
6
 
7
7
  A Ruby client for
8
- [FileMaker 18 and 19's Data API](https://help.claris.com/en/data-api-guide)
9
- using
10
- [Faraday](https://github.com/lostisland/faraday) and with optional
11
- ActiveRecord-ish ORM features through [Spyke](https://github.com/balvig/spyke).
12
-
13
- fmrest-ruby only partially implements FileMaker 19's Data API.
14
- See the [implementation completeness table](#api-implementation-completeness-table)
15
- to see if a feature you need is natively supported by the gem.
8
+ [FileMaker's Data API](https://help.claris.com/en/data-api-guide)
9
+ with ActiveRecord-ish ORM features.
10
+
11
+ While pretty feature-rich, fmrest-ruby doesn't yet support 100% of FileMaker
12
+ 19's Data API features. See the [implementation completeness
13
+ table](#api-implementation-completeness-table) to check if a feature you need
14
+ is natively supported by the gem.
15
+
16
+ ## Contents
17
+
18
+ * [Gems](#gems)
19
+ * [Installation](#installation)
20
+ * [Simple example](#simple-example)
21
+ * [Connection settings](#connection-settings)
22
+ * [Session token store](#session-token-store)
23
+ * [Date fields and timezones](#date-fields-and-timezones)
24
+ * [ActiveRecord-like ORM (fmrest-spyke)](#activerecord-like-orm--fmrest-spyke-)
25
+ * [Logging](#logging)
26
+ * [Gotchas](#gotchas)
27
+ * [API implementation completeness table](#api-implementation-completeness-table)
28
+ * [Supported Ruby versions](#supported-ruby-versions)
16
29
 
17
30
  ## Gems
18
31
 
@@ -20,28 +33,26 @@ The `fmrest` gem is a wrapper for two other gems:
20
33
 
21
34
  * `fmrest-spyke`, providing an ActiveRecord-like ORM library built on top
22
35
  of `fmrest-core` and [Spyke](https://github.com/balvig/spyke).
23
- * `fmrest-core`, providing the core Faraday connection builder, session
36
+ * `fmrest-core`, providing the core
37
+ [Faraday](https://github.com/lostisland/faraday) connection builder, session
24
38
  management, and other core utilities.
25
39
 
40
+ In addition, the optional `fmrest-cloud` gem adds support for FileMaker Cloud.
41
+ See the [main document on connecting to FileMaker
42
+ Cloud](docs/FileMakerCloud.md).
43
+
26
44
  ## Installation
27
45
 
28
- Add this to your Gemfile:
46
+ In your Gemfile:
29
47
 
30
48
  ```ruby
31
49
  gem 'fmrest'
32
- ```
33
-
34
- Or if you just want to use the Faraday connection without the ORM features:
35
50
 
36
- ```ruby
37
- gem 'fmrest-core'
51
+ # Optional: if your files are hosted on FileMaker Cloud
52
+ gem 'fmrest-cloud'
38
53
  ```
39
54
 
40
- ## Simple examples
41
-
42
- ### ORM example
43
-
44
- Most people would want to use the ORM features:
55
+ ## Simple example
45
56
 
46
57
  ```ruby
47
58
  # A Layout model connecting to the "Honeybees Web" FileMaker layout
@@ -90,32 +101,9 @@ bee.tasks.build(urgency: "Today")
90
101
  bee.save
91
102
  ```
92
103
 
93
- ### Barebones connection example (without ORM)
94
-
95
- In case you don't need the advanced ORM features (e.g. if you only need minimal
96
- Data API interaction and just want a lightweight solution) you can simply use
97
- the Faraday connection provided by `fmrest-core`:
98
-
99
- ```ruby
100
- connection = FmRest::V1.build_connection(
101
- host: "…",
102
- database: "…",
103
- username: "…",
104
- password: "…"
105
- )
106
-
107
- # Get all records (as parsed JSON)
108
- connection.get("layouts/FancyLayout/records")
109
-
110
- # Create new record
111
- connection.post do |req|
112
- req.url "layouts/FancyLayout/records"
113
-
114
- # You can just pass a hash for the JSON body
115
- req.body = { … }
116
- end
117
- ```
118
-
104
+ In case you don't want the ORM features (i.e. you only need authentication and
105
+ JSON parsing, and are comfortable writing the API requests manually without the
106
+ ORM overhead) you can use the Faraday connection provided by `fmrest-core`.
119
107
  See the [main document on using the base
120
108
  connection](docs/BaseConnectionUsage.md) for more.
121
109
 
@@ -125,10 +113,6 @@ The minimum required connection settings are `:host`, `:database`, `:username`
125
113
  and `:password`, but fmrest-ruby has many other options you can pass when
126
114
  setting up a connection (see [full list](#full-list-of-available-options) below).
127
115
 
128
- If you're using FileMaker Cloud you may need to pass `:fmid_token` instead
129
- of the regular `:username` and `:password`. See the [main document on
130
- connecting to FileMaker Cloud](docs/FileMakerCloud.md) for more info.
131
-
132
116
  `:ssl` and `:proxy` are forwarded to the underlying
133
117
  [Faraday](https://github.com/lostisland/faraday) connection. You can use this
134
118
  to, for instance, disable SSL verification:
@@ -153,7 +137,6 @@ Option | Description | Format
153
137
  `:username` | A Data API-ready account | String | None
154
138
  `:password` | Your password | String | None
155
139
  `:account_name` | Alias of `:username` | String | None
156
- `:fmid_token` | Claris ID token (only needed for FileMaker Cloud) | String | None
157
140
  `:ssl` | SSL options to be forwarded to Faraday | Faraday SSL options | None
158
141
  `:proxy` | Proxy options to be forwarded to Faraday | Faraday proxy options | None
159
142
  `:log` | Log JSON responses to STDOUT | Boolean | `false`
@@ -165,6 +148,11 @@ Option | Description | Format
165
148
  `:timezone` | The timezone for the FM server | `:local` \| `:utc` \| `nil` | `nil`
166
149
  `:autologin` | Whether to automatically start Data API sessions | Boolean | `true`
167
150
  `:token` | Used to manually provide a session token (e.g. if `:autologin` is `false`) | String | None
151
+ `:fmid_token` | Claris ID token (only needed if manually obtaining the token) | String | None
152
+ `:cloud` | Specifies whether the host is using FileMaker Cloud | `:auto` \| Boolean | `:auto`
153
+ `:cognito_client_id`| Overwrites the hardcoded FileMaker Cloud Cognito Client ID | String | None
154
+ `:cognito_pool_id` | Overwrites the hardcoded FileMaker Cloud Cognito Pool ID | String | None
155
+ `:aws_region` | Overwrites the hardcoded FileMaker Cloud AWS Region | String | None
168
156
 
169
157
  ### Default connection settings
170
158
 
@@ -207,7 +195,7 @@ See the [main document on date fields](docs/DateFields.md) for more info.
207
195
  ## ActiveRecord-like ORM (fmrest-spyke)
208
196
 
209
197
  [Spyke](https://github.com/balvig/spyke) is an ActiveRecord-like gem for
210
- building REST ORM models. fmrest-ruby builds its ORM features atop Spyke,
198
+ building REST ORM models. fmrest-ruby uses it to build its ORM features,
211
199
  bundled in the `fmrest-spyke` gem (already included if you're using the
212
200
  `fmrest` gem).
213
201
 
@@ -265,39 +253,33 @@ class Honeybee < FmRest::Layout
265
253
  end
266
254
  ```
267
255
 
268
- This will automatically create a proper Faraday connection using those
269
- connection settings, so you don't have to worry about setting that up.
270
-
271
- Note that these settings are inheritable, so you could create a base class that
256
+ These settings are class-inheritable, so you could create a base class that
272
257
  does the initial connection setup and then inherit from it in models using that
273
258
  same connection. E.g.:
274
259
 
275
260
  ```ruby
276
- class BeeBase < FmRest::Layout
261
+ class ApplicationFmLayout < FmRest::Layout
277
262
  self.fmrest_config = { host: "…", database: "…", … }
278
263
  end
279
264
 
280
- class Honeybee < BeeBase
281
- # This model will use the same connection as BeeBase
265
+ class Honeybee < ApplicationFmLayout
266
+ # This model will use the same connection as ApplicationFmLayout
282
267
  end
283
268
  ```
284
269
 
285
- Also, if not set, your model will try to use
270
+ If `fmrest_config` is not set, your model will try to use
286
271
  `FmRest.default_connection_settings` instead.
287
272
 
288
273
  #### Connection settings overlays
289
274
 
290
275
  There may be cases where you want to use a different set of connection settings
291
- depending on context, or simply change the connection settings over time. For
292
- example, if you want to use username and password provided by the user in a web
293
- application, or if you're connecting using an expiring Claris ID token. Since
294
- `.fmrest_config` is set at the class level, changing the username/password for
295
- the model in one context would also change it in all other contexts, leading to
296
- security issues.
276
+ depending on context. For example, if you want to use username and password
277
+ provided by the user in a web application. Since `.fmrest_config` is set at the
278
+ class level, changing the username/password for the model in one context would
279
+ also change it in all other contexts, leading to security issues.
297
280
 
298
- To solve this scenario, fmrest-ruby provides a way of defining thread-local and
299
- reversible connection settings overlays through
300
- `.fmrest_config_overlay=`.
281
+ To solve this scenario, fmrest-ruby provides a way of defining thread-local,
282
+ reversible connection settings overlays through `.fmrest_config_overlay=`.
301
283
 
302
284
  See the [main document on connection setting overlays](docs/ConfigOverlays.md)
303
285
  for details on how it works.
@@ -461,12 +443,10 @@ for details.
461
443
 
462
444
  ### Rescuable mixin
463
445
 
464
- Sometimes you may want to handle Data API errors at the model level. For
465
- instance, if you're logging in to a file hosted by FileMaker Cloud using a
466
- Claris ID token, and you want to be able to renew said token when it fails to
467
- log you in. For such cases fmrest-ruby provides an off-by-default mixin called
468
- `Rescuable` that provides convenience macros for that. If you've used Ruby on
469
- Rails you may be familiar with its syntax from controllers. E.g.
446
+ Sometimes you may want to handle Data API errors at the model level. For such
447
+ cases fmrest-ruby provides an off-by-default mixin called `Rescuable` that
448
+ provides convenience macros for that. If you've used Ruby on Rails you may be
449
+ familiar with its syntax from controllers. E.g.
470
450
 
471
451
  ```ruby
472
452
  class BeeBase < FmRest::Layout
@@ -474,9 +454,6 @@ class BeeBase < FmRest::Layout
474
454
 
475
455
  rescue_from FmRest::APIError::SystemError, with: :notify_admin_of_system_error
476
456
 
477
- # Shorthand for rescue_with FmRest::APIError::AccountError, ...
478
- rescue_account_error { ClarisIDTokenManager.expire_token }
479
-
480
457
  def self.notify_admin_of_system_error(e)
481
458
  # Shoot an email to the FM admin...
482
459
  end
@@ -549,14 +526,14 @@ Read about unexpected scenarios in the [gotchas doc](docs/Gotchas.md).
549
526
 
550
527
  ## API implementation completeness table
551
528
 
552
- FM Data API reference: https://fmhelp.filemaker.com/docs/18/en/dataapi/
529
+ FM Data API reference: https://help.claris.com/en/data-api-guide/
553
530
 
554
- | FM 18 Data API feature | Supported by basic connection | Supported by FmRest::Layout |
531
+ | FM 19 Data API feature | Supported by basic connection | Supported by FmRest::Layout |
555
532
  |-------------------------------------|-------------------------------|-----------------------------|
556
533
  | Log in using HTTP Basic Auth | Yes | Yes |
557
534
  | Log in using OAuth | No | No |
558
535
  | Log in to an external data source | No | No |
559
- | Log in using Claris ID account | Yes | Yes |
536
+ | Log in using Claris ID account (FileMaker Cloud) | Yes | Yes |
560
537
  | Log out | Yes | Yes |
561
538
  | Get product information | Manual* | No |
562
539
  | Get database names | Manual* | No |
@@ -592,9 +569,9 @@ the following Ruby implementations:
592
569
  ## Gem development
593
570
 
594
571
  After checking out the repo, run `bin/setup` to install dependencies. Then, run
595
- `rake spec` to run the tests. You can also run `bin/console` for an interactive
596
- prompt that will allow you to experiment (it will auto-load all fixtures in
597
- spec/fixtures).
572
+ `bundle exec rspec` to run the specs. You can also run `bin/console` for an
573
+ interactive prompt that will allow you to experiment (it will auto-load all
574
+ fixtures in spec/fixtures).
598
575
 
599
576
  To install all gems onto your local machine, run
600
577
  `bundle exec rake all:install`. To release a new version, update the version
@@ -602,12 +579,6 @@ number in `lib/fmrest/version.rb`, and then run `bundle exec rake all:release`,
602
579
  which will create a git tag for the version, push git commits and tags, and
603
580
  push the `.gem` files to [rubygems.org](https://rubygems.org).
604
581
 
605
- ## License
606
-
607
- The gem is available as open source under the terms of the
608
- [MIT License](https://opensource.org/licenses/MIT).
609
- See [LICENSE.txt](LICENSE.txt).
610
-
611
582
  ## Disclaimer
612
583
 
613
584
  This project is not sponsored by or otherwise affiliated with Claris
@@ -140,8 +140,8 @@ module FmRest
140
140
 
141
141
  conn.use FmRest::V1::TypeCoercer, config
142
142
 
143
- # FmRest::Spyke::JsonParse expects symbol keys
144
- conn.response :json, parser_options: { symbolize_names: true }
143
+ # FmRest::Spyke::SpykeFormatter expects symbol keys
144
+ conn.response :json, parser_options: { symbolize_names: true }, content_type: /\bjson$/
145
145
  end
146
146
 
147
147
  @fmrest_connection = connection if memoize
@@ -78,18 +78,6 @@ module FmRest
78
78
  new(attributes).tap(&:save!)
79
79
  end
80
80
 
81
- # Requests execution of a FileMaker script.
82
- #
83
- # @param script_name [String] the name of the FileMaker script to
84
- # execute
85
- # @param param [String] an optional paramater for the script
86
- #
87
- def execute_script(script_name, param: nil)
88
- params = {}
89
- params = {"script.param" => param} unless param.nil?
90
- request(:get, FmRest::V1::script_path(layout, script_name), params)
91
- end
92
-
93
81
  private
94
82
 
95
83
  def extend_scope_with_fm_params(scope, prefixed: false)
@@ -3,9 +3,46 @@
3
3
  module FmRest
4
4
  module Spyke
5
5
  module Model
6
+ # This mixin allows rescuing from errors raised during HTTP requests,
7
+ # with optional retry (useful for solving expired auth). This is based
8
+ # off ActiveSupport::Rescuable, with minimal added functionality. Its
9
+ # usage is analogous to `rescue_from` in Rails' controllers.
10
+ #
11
+ # Example usage:
12
+ #
13
+ # MyLayout < FmRest::Layout
14
+ # # Mix-in module
15
+ # include FmRest::Spyke::Model::Rescuable
16
+ #
17
+ # # Define an error handler
18
+ # rescue_from FmRest::APIError::SomeError, with: :report_error
19
+ #
20
+ # # Define block-based error handler
21
+ # rescue_from FmRest::APIError::SomeOtherError, with: -> { ... }
22
+ #
23
+ # private
24
+ #
25
+ # def report_error(exception)
26
+ # ErrorNotifier.notify(exception)
27
+ # ene
28
+ # end
29
+ #
30
+ # This module also extends upon ActiveSupport's implementation by
31
+ # allowing to request a retry of the failed request, which can be useful
32
+ # in situations where an auth token has expired and credentials need to
33
+ # be manually reset.
34
+ #
35
+ # To request a retry use `throw :retry` within the handler method.
36
+ #
37
+ # Finally, since it's the most common use case, there's a shorthand
38
+ # method for handling Data API authentication errors:
39
+ #
40
+ # rescue_account_error with: -> { CredentialsManager.refresh_credentials }
41
+ #
42
+ # This method will always issue a retry.
43
+ #
6
44
  module Rescuable
7
45
  extend ::ActiveSupport::Concern
8
-
9
46
  include ::ActiveSupport::Rescuable
10
47
 
11
48
  class_methods do
@@ -13,12 +50,19 @@ module FmRest
13
50
  begin
14
51
  super
15
52
  rescue => e
16
- rescue_with_handler(e) || raise
53
+ catch :retry do
54
+ rescue_with_handler(e) || raise
55
+ return
56
+ end
57
+ super
17
58
  end
18
59
  end
19
60
 
20
- def rescue_account_error(with: nil, &block)
21
- rescue_from APIError::AccountError, with: with, &block
61
+ def rescue_account_error(with: nil)
62
+ rescue_from(APIError::AccountError, with: with) do
63
+ yield
64
+ throw :retry
65
+ end
22
66
  end
23
67
  end
24
68
  end
@@ -0,0 +1,64 @@
1
+ # frozen_string_literal: true
2
+
3
+ module FmRest
4
+ module Spyke
5
+ module Model
6
+ # This module adds and extends various ORM features in Spyke models,
7
+ # including custom query methods, remote script execution and
8
+ # exception-raising persistence methods.
9
+ #
10
+ module ScriptExecution
11
+ extend ::ActiveSupport::Concern
12
+
13
+ class_methods do
14
+ # Requests execution of a FileMaker script, returning its result
15
+ # object.
16
+ #
17
+ # @example
18
+ # response = MyLayout.execute("Uppercasing Script", "hello")
19
+ #
20
+ # response.result # => "HELLO"
21
+ # response.error # => "0"
22
+ # response.success? # => true
23
+ #
24
+ # @param script_name [String] the name of the FileMaker script to
25
+ # execute
26
+ # @param param [String] an optional paramater for the script
27
+ # @return [FmRest::Spyke::ScriptResult] the script result object
28
+ # containing the return value and error code
29
+ #
30
+ def execute(script_name, param = nil)
31
+ # Allow keyword argument format for compatibility with execute_script
32
+ if param.respond_to?(:has_key?) && param.has_key?(:param)
33
+ param = param[:param]
34
+ end
35
+
36
+ response = execute_script(script_name, param: param)
37
+ response.metadata.script.after
38
+ end
39
+
40
+ # Requests execution of a FileMaker script, returning the entire
41
+ # response object.
42
+ #
43
+ # The execution results will be in `response.metadata.script.after`
44
+ #
45
+ # In general you'd want to use the simpler `.execute` instead of this
46
+ # method, as it provides more direct access to the script results.
47
+ #
48
+ # @example
49
+ # response = MyLayout.execute_script("My Script", param: "hello")
50
+ #
51
+ # @param script_name [String] the name of the FileMaker script to
52
+ # execute
53
+ # @param param [String] an optional paramater for the script
54
+ # @return the complete response object
55
+ #
56
+ def execute_script(script_name, param: nil)
57
+ params = param.nil? ? {} : {"script.param" => param}
58
+ request(:get, FmRest::V1::script_path(layout, script_name), params)
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
@@ -11,6 +11,7 @@ require "fmrest/spyke/model/container_fields"
11
11
  require "fmrest/spyke/model/global_fields"
12
12
  require "fmrest/spyke/model/http"
13
13
  require "fmrest/spyke/model/auth"
14
+ require "fmrest/spyke/model/script_execution"
14
15
 
15
16
  module FmRest
16
17
  module Spyke
@@ -28,6 +29,7 @@ module FmRest
28
29
  include GlobalFields
29
30
  include Http
30
31
  include Auth
32
+ include ScriptExecution
31
33
 
32
34
  autoload :Rescuable, "fmrest/spyke/model/rescuable"
33
35
  end
@@ -1,12 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "json"
4
3
  require "ostruct"
5
4
 
6
5
  module FmRest
7
6
  module Spyke
8
7
  # Metadata class to be passed to Spyke::Collection#metadata
9
- class Metadata < Struct.new(:messages, :script, :data_info)
8
+ Metadata = Struct.new(:messages, :script, :data_info) do
10
9
  alias_method :scripts, :script
11
10
  end
12
11
 
@@ -16,6 +15,11 @@ module FmRest
16
15
  def returned_count; returnedCount; end
17
16
  end
18
17
 
18
+ ScriptResult = Struct.new(:result, :error) do
19
+ def success?; error == "0"; end
20
+ def error?; !success?; end
21
+ end
22
+
19
23
  # Response Faraday middleware for converting FM API's response JSON into
20
24
  # Spyke's expected format
21
25
  class SpykeFormatter < ::Faraday::Response::Middleware
@@ -119,17 +123,18 @@ module FmRest
119
123
 
120
124
  [:prerequest, :presort].each do |s|
121
125
  if json[:response][:"scriptError.#{s}"]
122
- results[s] = OpenStruct.new(
123
- result: json[:response][:"scriptResult.#{s}"],
124
- error: json[:response][:"scriptError.#{s}"]
126
+ results[s] = ScriptResult.new(
127
+ json[:response][:"scriptResult.#{s}"],
128
+ json[:response][:"scriptError.#{s}"]
125
129
  ).freeze
126
130
  end
127
131
  end
128
132
 
133
+ # after/default script
129
134
  if json[:response][:scriptError]
130
- results[:after] = OpenStruct.new(
131
- result: json[:response][:scriptResult],
132
- error: json[:response][:scriptError]
135
+ results[:after] = ScriptResult.new(
136
+ json[:response][:scriptResult],
137
+ json[:response][:scriptError]
133
138
  ).freeze
134
139
  end
135
140
 
@@ -212,7 +217,7 @@ module FmRest
212
217
  json_portal_data.each_with_object({}) do |(portal_name, portal_records), out|
213
218
 
214
219
  portal_options = @model.portal_options[portal_name.to_s] || {}
215
- portal_builder = @model.associations[portal_options[:name].to_sym]
220
+ portal_builder = portal_options[:name] && @model.associations[portal_options[:name].to_sym]
216
221
  portal_class = portal_builder && portal_builder.klass
217
222
  portal_attributes = (portal_class && portal_class.mapped_attributes.values) || []
218
223
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fmrest-spyke
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.18.0.rc1
4
+ version: 0.19.0.rc1
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-09-01 00:00:00.000000000 Z
11
+ date: 2021-10-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fmrest-core
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.18.0.rc1
19
+ version: 0.19.0.rc1
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.18.0.rc1
26
+ version: 0.19.0.rc1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: spyke
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -65,6 +65,7 @@ files:
65
65
  - lib/fmrest/spyke/model/orm.rb
66
66
  - lib/fmrest/spyke/model/record_id.rb
67
67
  - lib/fmrest/spyke/model/rescuable.rb
68
+ - lib/fmrest/spyke/model/script_execution.rb
68
69
  - lib/fmrest/spyke/model/serialization.rb
69
70
  - lib/fmrest/spyke/model/uri.rb
70
71
  - lib/fmrest/spyke/portal.rb