lhs 19.2.0 → 19.3.0
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 +4 -4
- data/README.md +11 -0
- data/lib/lhs/concerns/record/attribute_assignment.rb +26 -0
- data/lib/lhs/record.rb +3 -0
- data/lib/lhs/version.rb +1 -1
- data/spec/record/attribute_assignment_spec.rb +36 -0
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 90772215b1826bbd27f4f9d891a063267009282fc4c62a8cd84aa4888749eb25
|
4
|
+
data.tar.gz: c9ba59c1c5dbff84597fb8ffd0f3666971f678cb3eba000a9480d851e5abe62d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c32491f62744f730c3466aa259e46c68ecb8acafce58f55bc647f99a4611b94e6b8342c7faa7f309447f3943bbbf05c99003cea27a0bb5b4f7d7f4581e1ca97b
|
7
|
+
data.tar.gz: 748088f623655bad2866a85b3b1625cb0b6984ba67506b9f16d589061cef649e5f648ec2c695bfee95b73e454c900f770a0b22e4ac4628cfcea08563a30fac9c
|
data/README.md
CHANGED
@@ -128,6 +128,7 @@ record.review # "Lunch was great
|
|
128
128
|
* [find_each](#find_each)
|
129
129
|
* [find_in_batches](#find_in_batches)
|
130
130
|
* [Convert/Cast specific record types: becomes](#convertcast-specific-record-types-becomes)
|
131
|
+
* [Assign attributes](#assign-attributes)
|
131
132
|
* [Request Cycle Cache](#request-cycle-cache)
|
132
133
|
* [Change store for LHS' request cycle cache](#change-store-for-lhs-request-cycle-cache)
|
133
134
|
* [Disable request cycle cache](#disable-request-cycle-cache)
|
@@ -2188,6 +2189,16 @@ synchronization.save!
|
|
2188
2189
|
POST https://service.example.com/location/1/sync { body: '{ ... }' }
|
2189
2190
|
```
|
2190
2191
|
|
2192
|
+
### Assign attributes
|
2193
|
+
|
2194
|
+
Allows you to set the attributes by passing in a hash of attributes.
|
2195
|
+
|
2196
|
+
```ruby
|
2197
|
+
entry = LocalEntry.new
|
2198
|
+
entry.assign_attributes(company_name: 'localsearch')
|
2199
|
+
entry.company_name # => 'localsearch'
|
2200
|
+
```
|
2201
|
+
|
2191
2202
|
## Request Cycle Cache
|
2192
2203
|
|
2193
2204
|
By default, LHS does not perform the same http request multiple times during one request/response cycle.
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class LHS::Record
|
4
|
+
|
5
|
+
module AttributeAssignment
|
6
|
+
extend ActiveSupport::Concern
|
7
|
+
|
8
|
+
def assign_attributes(new_attributes)
|
9
|
+
if !new_attributes.respond_to?(:stringify_keys)
|
10
|
+
raise ArgumentError, "When assigning attributes, you must pass a hash as an argument, #{new_attributes.class} passed."
|
11
|
+
end
|
12
|
+
return if new_attributes.empty?
|
13
|
+
|
14
|
+
_assign_attributes(new_attributes)
|
15
|
+
end
|
16
|
+
alias attributes= assign_attributes
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def _assign_attributes(attributes)
|
21
|
+
attributes.each do |key, value|
|
22
|
+
public_send(:"#{key}=", value)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/lhs/record.rb
CHANGED
@@ -39,6 +39,8 @@ class LHS::Record
|
|
39
39
|
'lhs/concerns/record/scope'
|
40
40
|
autoload :Tracing,
|
41
41
|
'lhs/concerns/record/tracing'
|
42
|
+
autoload :AttributeAssignment,
|
43
|
+
'lhs/concerns/record/attribute_assignment'
|
42
44
|
|
43
45
|
module RequestCycleCache
|
44
46
|
autoload :RequestCycleThreadRegistry,
|
@@ -68,6 +70,7 @@ class LHS::Record
|
|
68
70
|
include RequestCycleCache
|
69
71
|
include Scope
|
70
72
|
include Tracing
|
73
|
+
include AttributeAssignment
|
71
74
|
|
72
75
|
delegate :_proxy, :_endpoint, :merge_raw!, :select, :becomes, :respond_to?, to: :_data
|
73
76
|
|
data/lib/lhs/version.rb
CHANGED
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'rails_helper'
|
4
|
+
|
5
|
+
describe LHS::Record do
|
6
|
+
before do
|
7
|
+
class LocalEntry < LHS::Record
|
8
|
+
endpoint '{+datastore}/local-entries'
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
context '#assign_attributes' do
|
13
|
+
it 'sets the attributes' do
|
14
|
+
entry = LocalEntry.new
|
15
|
+
entry.assign_attributes(company_name: 'localsearch')
|
16
|
+
expect(entry.company_name).to eq 'localsearch'
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context '#attributes=' do
|
21
|
+
it 'sets the attributes' do
|
22
|
+
entry = LocalEntry.new
|
23
|
+
entry.attributes = { company_name: 'localsearch' }
|
24
|
+
expect(entry.company_name).to eq 'localsearch'
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
context 'when not a hash was passed' do
|
29
|
+
it 'raises an error' do
|
30
|
+
entry = LocalEntry.new
|
31
|
+
expect do
|
32
|
+
entry.assign_attributes([:company_name, 'localsearch'])
|
33
|
+
end.to raise_error(ArgumentError)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lhs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 19.
|
4
|
+
version: 19.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- https://github.com/local-ch/lhs/graphs/contributors
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-05-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -237,6 +237,7 @@ files:
|
|
237
237
|
- lib/lhs/concerns/proxy/create.rb
|
238
238
|
- lib/lhs/concerns/proxy/link.rb
|
239
239
|
- lib/lhs/concerns/proxy/problems.rb
|
240
|
+
- lib/lhs/concerns/record/attribute_assignment.rb
|
240
241
|
- lib/lhs/concerns/record/batch.rb
|
241
242
|
- lib/lhs/concerns/record/chainable.rb
|
242
243
|
- lib/lhs/concerns/record/configuration.rb
|
@@ -384,6 +385,7 @@ files:
|
|
384
385
|
- spec/proxy/record_identification_spec.rb
|
385
386
|
- spec/rails_helper.rb
|
386
387
|
- spec/record/all_spec.rb
|
388
|
+
- spec/record/attribute_assignment_spec.rb
|
387
389
|
- spec/record/build_spec.rb
|
388
390
|
- spec/record/cast_nested_data_spec.rb
|
389
391
|
- spec/record/create_spec.rb
|
@@ -475,8 +477,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
475
477
|
version: '0'
|
476
478
|
requirements:
|
477
479
|
- Ruby >= 2.3.0
|
478
|
-
|
479
|
-
rubygems_version: 2.7.8
|
480
|
+
rubygems_version: 3.0.2
|
480
481
|
signing_key:
|
481
482
|
specification_version: 4
|
482
483
|
summary: 'REST services accelerator: Rails gem providing an easy, active-record-like
|
@@ -586,6 +587,7 @@ test_files:
|
|
586
587
|
- spec/proxy/record_identification_spec.rb
|
587
588
|
- spec/rails_helper.rb
|
588
589
|
- spec/record/all_spec.rb
|
590
|
+
- spec/record/attribute_assignment_spec.rb
|
589
591
|
- spec/record/build_spec.rb
|
590
592
|
- spec/record/cast_nested_data_spec.rb
|
591
593
|
- spec/record/create_spec.rb
|