feint 0.0.1 → 0.0.2
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/.gitignore +1 -0
- data/README.md +16 -1
- data/feint.gemspec +4 -0
- data/lib/feint/presenter.rb +28 -0
- data/lib/feint/version.rb +1 -1
- data/lib/feint.rb +1 -1
- metadata +60 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4d240b0be4f97e277974795798b327d64de4323f
|
4
|
+
data.tar.gz: a7484eba6f2b0ad1e68f48c7490b16b2daf30067
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0a6072a4680e69e7b7f6c4d645070d05ce580b955c30cb85f7a3eac8202a793019961d3a1294b8dde5ca484fc1063180bb2a74f0823512d12289f836b4ababb2
|
7
|
+
data.tar.gz: b15c4fee084ecf137bccb22531ec2b7b5717893764a54887ae8b9ef2eb939fea0fad27b0ee19a34cb4ce59e82297b718d632bb37eb6c450c7ac2bcba960954be
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -9,6 +9,9 @@ is to
|
|
9
9
|
- Convert keys of parameters from one name to another name for model initialization.
|
10
10
|
- Lock mandatory and optional columns used in a presenter.
|
11
11
|
|
12
|
+
From perspective of a serializer, a Feint preseter acts as the model it presents except for different
|
13
|
+
attribute names. You can replace a model instance with its Feint presenter and it will work seamelessly.
|
14
|
+
|
12
15
|
## Installation
|
13
16
|
|
14
17
|
Add this line to your application's Gemfile:
|
@@ -27,7 +30,19 @@ Or install it yourself as:
|
|
27
30
|
|
28
31
|
## Usage
|
29
32
|
|
30
|
-
|
33
|
+
```ruby
|
34
|
+
class UserPresenter < Feint::Presenter
|
35
|
+
end
|
36
|
+
```
|
37
|
+
|
38
|
+
```ruby
|
39
|
+
class UsersController < ApplicationController
|
40
|
+
def show
|
41
|
+
@user = User.find_by(id: params[:id])
|
42
|
+
render json: UserPresenter.new(@user)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
```
|
31
46
|
|
32
47
|
## Development
|
33
48
|
|
data/feint.gemspec
CHANGED
@@ -25,4 +25,8 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.add_development_dependency "rake", "~> 10.0"
|
26
26
|
spec.add_development_dependency "rspec", "~> 3.0"
|
27
27
|
spec.add_development_dependency "activerecord"
|
28
|
+
spec.add_development_dependency "pg"
|
29
|
+
spec.add_development_dependency "mysql2"
|
30
|
+
spec.add_development_dependency "sqlite3"
|
31
|
+
spec.add_development_dependency "mongoid"
|
28
32
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Feint
|
2
|
+
class Presenter
|
3
|
+
def initialize(model) # :nodoc:
|
4
|
+
@model = model
|
5
|
+
end
|
6
|
+
|
7
|
+
class << self
|
8
|
+
# Takes a list of columns
|
9
|
+
def attributes(*columns)
|
10
|
+
columns.each do |column|
|
11
|
+
define_method column do
|
12
|
+
@model.send(column)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
# Take a list of mappiings
|
18
|
+
# { old_column_name => new_column_name }
|
19
|
+
def transform(mappings)
|
20
|
+
mappings.each do |old, new|
|
21
|
+
define_method new do
|
22
|
+
@model.send(old)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/lib/feint/version.rb
CHANGED
data/lib/feint.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: feint
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- shelling
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-12-
|
11
|
+
date: 2016-12-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -66,6 +66,62 @@ dependencies:
|
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: pg
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: mysql2
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: sqlite3
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: mongoid
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
69
125
|
description: A Presenter Layer for ORM(s)
|
70
126
|
email:
|
71
127
|
- navyblueshellingford@gmail.com
|
@@ -85,6 +141,7 @@ files:
|
|
85
141
|
- bin/setup
|
86
142
|
- feint.gemspec
|
87
143
|
- lib/feint.rb
|
144
|
+
- lib/feint/presenter.rb
|
88
145
|
- lib/feint/version.rb
|
89
146
|
homepage: https://github.com/shelling/feint
|
90
147
|
licenses:
|
@@ -106,7 +163,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
106
163
|
version: '0'
|
107
164
|
requirements: []
|
108
165
|
rubyforge_project:
|
109
|
-
rubygems_version: 2.
|
166
|
+
rubygems_version: 2.5.1
|
110
167
|
signing_key:
|
111
168
|
specification_version: 4
|
112
169
|
summary: A Presenter Layer for ORM(s)
|