glimmer-dsl-web 0.6.7 → 0.6.8
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/CHANGELOG.md +6 -1
- data/README.md +18 -9
- data/VERSION +1 -1
- data/glimmer-dsl-web.gemspec +2 -2
- data/lib/rails/resource_service.rb +16 -8
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9f078ee2fccbdecc49040923265ba09b4bff1a0c9c0fb7c062c4aae58b68873d
|
4
|
+
data.tar.gz: 7c3917e649acd80f9f20754b123b8cdd25a8bc435910dbc704d045b3174d2c27
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6e080034e25b6aff5b70213f6fa991ae5c8e37fe38796703f1863c702c6268a1f9a827f0fd07926a0ca88ff3d952e2fea63ce794cd606395a1faf622d521bdb1
|
7
|
+
data.tar.gz: 1c8135017efb0ba4b8815040cc8c5a9401360c84ea19d31af4d55f0565988480f8d58066dfe108d5e96d54cf91aeac8a4f9350ad40ccb78d1f6dbe0b1c6c06b1
|
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,13 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
## 0.6.8
|
4
|
+
|
5
|
+
- `Rails::ResourceService` provides `errors` as 3rd argument of `response_handler` block in erroneous web requests.
|
6
|
+
- Refactor/simplify code of Contact Manager sample with `Rails::ResourceService` enhancements to provide `errors` as `response_handler` 3rd argument
|
7
|
+
|
3
8
|
## 0.6.7
|
4
9
|
|
5
|
-
- `Rails::ResourceService` builds resource models using `resource_class` and provides `resources`/`resource` as 2nd argument of `response_handler`
|
10
|
+
- `Rails::ResourceService` builds resource models using `resource_class` and provides `resources`/`resource` as 2nd argument of `response_handler` block in index/show/create/update calls.
|
6
11
|
- Refactor/simplify code of Contact Manager sample with `Rails::ResourceService` enhancements to provide resource models in `response_handler` 2nd argument
|
7
12
|
|
8
13
|
## 0.6.6
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# [<img src="https://raw.githubusercontent.com/AndyObtiva/glimmer/master/images/glimmer-logo-hi-res.png" height=85 />](https://github.com/AndyObtiva/glimmer) Glimmer DSL for Web 0.6.
|
1
|
+
# [<img src="https://raw.githubusercontent.com/AndyObtiva/glimmer/master/images/glimmer-logo-hi-res.png" height=85 />](https://github.com/AndyObtiva/glimmer) Glimmer DSL for Web 0.6.8 (Beta)
|
2
2
|
## Ruby-in-the-Browser Web Frontend Framework
|
3
3
|
### The "Rails" of Frontend Frameworks!!! ([Fukuoka Award Winning](https://andymaleh.blogspot.com/2025/01/glimmer-dsl-for-web-wins-in-fukuoka.html))
|
4
4
|
#### Finally, Ruby Developer Productivity, Happiness, and Fun in the Frontend!!!
|
@@ -1408,7 +1408,7 @@ rails new glimmer_app_server
|
|
1408
1408
|
Add the following to `Gemfile`:
|
1409
1409
|
|
1410
1410
|
```
|
1411
|
-
gem 'glimmer-dsl-web', '~> 0.6.
|
1411
|
+
gem 'glimmer-dsl-web', '~> 0.6.8'
|
1412
1412
|
```
|
1413
1413
|
|
1414
1414
|
Run:
|
@@ -1703,29 +1703,38 @@ you can use [Rails::ResourceService](/lib/rails/resource_service.rb) (`require '
|
|
1703
1703
|
the `Rails::ResourceService` class source code to find out what its API is. It can work with a basic Rails Scaffold of a Resource
|
1704
1704
|
if Developers would rather not write the Backend by hand.
|
1705
1705
|
|
1706
|
+
`Rails::ResourceService` API:
|
1707
|
+
- `index(resource: nil, resource_class: nil, singular_resource_name: nil, plural_resource_name: nil, index_resource_url: nil, params: nil) { |response| ... }`
|
1708
|
+
- `show(resource: nil, resource_class: nil, resource_id: nil, singular_resource_name: nil, plural_resource_name: nil, show_resource_url: nil, params: nil) { |response| ... }`
|
1709
|
+
- `create(resource: nil, resource_class: nil, resource_attributes: nil, singular_resource_name: nil, plural_resource_name: nil, create_resource_url: nil, params: nil) { |response, created_resource, errors| ... }`
|
1710
|
+
- `update(resource: nil, resource_class: nil, resource_id: nil, resource_attributes: nil, singular_resource_name: nil, plural_resource_name: nil, update_resource_url: nil, params: nil) { |response, updated_resource, errors| ... }`
|
1711
|
+
- `destroy(resource: nil, resource_class: nil, resource_id: nil, singular_resource_name: nil, plural_resource_name: nil, destroy_resource_url: nil, params: nil) { |response| ... }`
|
1712
|
+
|
1713
|
+
`Rails::ResourceService` follows the 'Convention over Configuration' Rails principle as it auto-derives the URL to call based on the `resource` class and data.
|
1714
|
+
|
1706
1715
|
Example from [ContactPresenter](https://github.com/AndyObtiva/sample-glimmer-dsl-web-rails7-app/blob/master/app/assets/opal/contact_manager/presenters/contact_presenter.rb) in the [Contact Manager](#contact-manager) sample:
|
1707
1716
|
|
1708
1717
|
`form_contact` is an instance of the [Contact](https://github.com/AndyObtiva/sample-glimmer-dsl-web-rails7-app/blob/master/app/assets/opal/contact_manager/models/contact.rb) class.
|
1709
1718
|
|
1710
1719
|
```ruby
|
1711
|
-
Rails::ResourceService.update(resource: form_contact) do |response, updated_contact|
|
1720
|
+
Rails::ResourceService.update(resource: form_contact) do |response, updated_contact, errors|
|
1712
1721
|
if response.ok?
|
1713
1722
|
contacts[edit_index].load_with(updated_contact)
|
1714
1723
|
self.edit_index = nil
|
1715
1724
|
form_contact.reset
|
1716
1725
|
form_contact.errors = nil
|
1717
1726
|
else
|
1718
|
-
form_contact.errors =
|
1727
|
+
form_contact.errors = errors
|
1719
1728
|
end
|
1720
1729
|
end
|
1721
1730
|
```
|
1722
1731
|
|
1723
1732
|
Note that there are alternative ways of invoking the `Rails::ResourceService.update` call:
|
1724
|
-
- `Rails::ResourceService.update(resource: form_contact) { |response| ... }`
|
1725
|
-
- `Rails::ResourceService.update(resource_class: Contact, resource_id: form_contact.id, resource_attributes: {first_name: form_contact.first_name, ...}) { |response| ... }`
|
1726
|
-
- `Rails::ResourceService.update(singular_resource_name: 'contact', resource_id: form_contact.id, resource_attributes: {first_name: form_contact.first_name, ...}) { |response| ... }`
|
1727
|
-
- `Rails::ResourceService.update(update_resource_url: "/contacts/#{form_contact.id}.json", resource_attributes: {first_name: form_contact.first_name, ...}) { |response| ... }`
|
1728
|
-
- `Rails::ResourceService.update(update_resource_url: "/contacts/#{form_contact.id}.json", params: {contact: {first_name: form_contact.first_name, ...}}) { |response| ... }`
|
1733
|
+
- `Rails::ResourceService.update(resource: form_contact) { |response, resource, errors| ... }`
|
1734
|
+
- `Rails::ResourceService.update(resource_class: Contact, resource_id: form_contact.id, resource_attributes: {first_name: form_contact.first_name, ...}) { |response, resource, errors| ... }`
|
1735
|
+
- `Rails::ResourceService.update(singular_resource_name: 'contact', resource_id: form_contact.id, resource_attributes: {first_name: form_contact.first_name, ...}) { |response, resource, errors| ... }`
|
1736
|
+
- `Rails::ResourceService.update(update_resource_url: "/contacts/#{form_contact.id}.json", resource_attributes: {first_name: form_contact.first_name, ...}) { |response, resource, errors| ... }`
|
1737
|
+
- `Rails::ResourceService.update(update_resource_url: "/contacts/#{form_contact.id}.json", params: {contact: {first_name: form_contact.first_name, ...}}) { |response, resource, errors| ... }`
|
1729
1738
|
|
1730
1739
|
## Supported Glimmer DSL Keywords
|
1731
1740
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.6.
|
1
|
+
0.6.8
|
data/glimmer-dsl-web.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: glimmer-dsl-web 0.6.
|
5
|
+
# stub: glimmer-dsl-web 0.6.8 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "glimmer-dsl-web".freeze
|
9
|
-
s.version = "0.6.
|
9
|
+
s.version = "0.6.8"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib".freeze]
|
@@ -41,11 +41,15 @@ module Rails
|
|
41
41
|
plural_resource_name ||= "#{singular_resource_name}s"
|
42
42
|
create_resource_url ||= "/#{plural_resource_name}.json"
|
43
43
|
HTTP.post(create_resource_url, payload: create_update_resource_params(resource:, resource_class:, resource_attributes:, singular_resource_name:, params: params.to_h)) do |response|
|
44
|
-
if response.ok?
|
45
|
-
|
46
|
-
|
44
|
+
if response.ok?
|
45
|
+
if !resource_class.nil?
|
46
|
+
resource_response_object = Native(response.body)
|
47
|
+
resource = build_resource_from_response_object(resource_class:, resource_response_object:)
|
48
|
+
end
|
49
|
+
else
|
50
|
+
errors = JSON.parse(response.body)
|
47
51
|
end
|
48
|
-
response_handler.call(response, resource)
|
52
|
+
response_handler.call(response, resource, errors)
|
49
53
|
end
|
50
54
|
end
|
51
55
|
|
@@ -56,11 +60,15 @@ module Rails
|
|
56
60
|
plural_resource_name ||= "#{singular_resource_name}s"
|
57
61
|
update_resource_url ||= "/#{plural_resource_name}/#{resource_id}.json"
|
58
62
|
HTTP.patch(update_resource_url, payload: create_update_resource_params(resource:, resource_class:, resource_attributes:, singular_resource_name:, params: params.to_h)) do |response|
|
59
|
-
if response.ok?
|
60
|
-
|
61
|
-
|
63
|
+
if response.ok?
|
64
|
+
if !resource_class.nil?
|
65
|
+
resource_response_object = Native(response.body)
|
66
|
+
resource = build_resource_from_response_object(resource_class:, resource_response_object:)
|
67
|
+
end
|
68
|
+
else
|
69
|
+
errors = JSON.parse(response.body)
|
62
70
|
end
|
63
|
-
response_handler.call(response, resource)
|
71
|
+
response_handler.call(response, resource, errors)
|
64
72
|
end
|
65
73
|
end
|
66
74
|
|