redress 0.1.0 → 0.1.1

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
  SHA1:
3
- metadata.gz: ae54aefaea2030d1a65f9ae21a2a9963f9c42419
4
- data.tar.gz: 26c2f1c1b2e22857d8de318f0a8b4ab129f29462
3
+ metadata.gz: 41402aaf89ea4b30ca985c6748259e94f43a3bf0
4
+ data.tar.gz: f38303010581b1cc238927768afe86e48bbab4ba
5
5
  SHA512:
6
- metadata.gz: 163a1f58f0d429d8b04f0179e5ce82dc5d001993a422157dc3e50ef86bd9314783cefea8f571214639dd1c26221e0ee9007d0ef15f69786635de04100a91819b
7
- data.tar.gz: 59ea7e648d34e13b43ebaa7a413d141d9fd065bf71460856936d1ce00364fd4d56a545b234cd29df4732cf88eda07279cb3b057a6c7a363bcb5c562395d78f2b
6
+ metadata.gz: 372b234a3fc2d5723938e4486aa1cde2876013c67b6e3d2195ed89ead3928c6504a724262cdcb81e4149dc495d1c36b632d4018483010f8ecdb8ed20d34e2518
7
+ data.tar.gz: 4f51c86618c0e981532cdb4728a9910d8692a0011d77397c7ff316bc35091e09249cf362c18c5229b2c6125e7e484950b1983da220c3969b7539bbf164fc03e3
data/README.md CHANGED
@@ -6,16 +6,14 @@
6
6
  [![Coverage Status](https://coveralls.io/repos/github/galetahub/redress/badge.svg?branch=master)](https://coveralls.io/github/galetahub/redress?branch=master)
7
7
  [![Dependency Status](https://gemnasium.com/badges/github.com/galetahub/redress.svg)](https://gemnasium.com/github.com/galetahub/redress)
8
8
 
9
- ## Motivation
9
+ ## Motivation (Command pattern)
10
10
 
11
- TODO:
11
+ The command pattern is sometimes called a service object, an operation, an action, and probably more names that I’m not aware of. Whatever the name we gave it, the purpose of such a pattern is rather simple: take a business action and put it behind an object with a simple interface.
12
12
 
13
13
  <!-- Tocer[start]: Auto-generated, don't remove. -->
14
14
 
15
15
  ## Table of Contents
16
16
 
17
- - [Features](#features)
18
- - [Screencasts](#screencasts)
19
17
  - [Requirements](#requirements)
20
18
  - [Setup](#setup)
21
19
  - [Usage](#usage)
@@ -29,13 +27,13 @@ TODO:
29
27
 
30
28
  <!-- Tocer[finish]: Auto-generated, don't remove. -->
31
29
 
32
- ## Features
33
-
34
- TODO:
35
-
36
30
  ## Requirements
37
31
 
38
32
  0. [Ruby 2.3](https://www.ruby-lang.org)
33
+ 1. wisper
34
+ 2. fast_attributes
35
+ 3. hashie
36
+ 4. activemodel
39
37
 
40
38
  ## Setup
41
39
 
@@ -59,11 +57,32 @@ class ApplicationForm < Redress::Form
59
57
  end
60
58
  ```
61
59
 
60
+ Let's define simple form:
61
+
62
+ ``` ruby
63
+ class SimpleForm < ApplicationForm
64
+ mimic :user
65
+
66
+ schema do
67
+ attribute :name, String
68
+ attribute :email, String
69
+ attribute :name_with_email, String
70
+ end
71
+
72
+ validates :name, presence: true
73
+ validates :email, presence: true
74
+
75
+ def map_model(user)
76
+ self.name_with_email = "#{user.name} <#{user.email}>"
77
+ end
78
+ end
79
+ ```
80
+
62
81
  ### Commands
63
82
 
64
83
  ``` ruby
65
84
  # app/commands/application_command.rb
66
- require 'redress/form'
85
+ require 'redress/command'
67
86
 
68
87
  class ApplicationCommand < Redress::Commad
69
88
  end
@@ -73,7 +92,7 @@ Or if you are using ActiveRecord:
73
92
 
74
93
  ``` ruby
75
94
  # app/commands/application_command.rb
76
- require 'redress/form'
95
+ require 'redress/command'
77
96
 
78
97
  class ApplicationCommand < Redress::Commad
79
98
  def transaction(&block)
@@ -82,6 +101,50 @@ class ApplicationCommand < Redress::Commad
82
101
  end
83
102
  ```
84
103
 
104
+ Simple command for user registration:
105
+
106
+ ``` ruby
107
+ # app/commands/users/create_command.rb
108
+ module Users
109
+ class CreateCommand < ApplicationCommand
110
+ def initialize(form)
111
+ @form = form
112
+ end
113
+
114
+ def call
115
+ return broadcast(:invalid, @form) if @form.invalid?
116
+
117
+ user = User.create(@form.attributes)
118
+
119
+ broadcast(:ok, user)
120
+ end
121
+ end
122
+ end
123
+ ```
124
+
125
+ ### Controllers
126
+
127
+ ``` ruby
128
+ # app/controllers/users_controller.rb
129
+ class UsersController < Account::BaseController
130
+ respond_to :json, only: :update
131
+
132
+ def new
133
+ @user_form = SimpleForm.new
134
+ end
135
+
136
+ def create
137
+ @user_form = SimpleForm.from_params(params)
138
+
139
+ Users::CreateCommand.call(@user_form) do |c|
140
+ c.on(:ok) { head status: 201 }
141
+ c.on(:invalid) { |form| render status: 422, json: { errors: form.errors } }
142
+ end
143
+ end
144
+ end
145
+
146
+ ```
147
+
85
148
  ## Tests
86
149
 
87
150
  To test, run:
@@ -12,7 +12,7 @@ module Redress
12
12
  end
13
13
 
14
14
  def self.version
15
- "0.1.0"
15
+ "0.1.1"
16
16
  end
17
17
 
18
18
  def self.version_label
@@ -45,6 +45,7 @@ module Redress
45
45
  new_key = key.to_s
46
46
  next unless new_key.start_with?(prefix)
47
47
 
48
+ new_key = new_key.dup if new_key.frozen?
48
49
  new_key.slice!(full_prefix)
49
50
 
50
51
  hash[new_key] = value
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redress
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Igor Galeta
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-30 00:00:00.000000000 Z
11
+ date: 2017-10-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: wisper