draper 0.7.2 → 0.7.3
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.
- data/.travis.yml +7 -0
- data/Gemfile +12 -2
- data/Readme.markdown +8 -9
- data/draper.gemspec +0 -16
- data/lib/draper/version.rb +1 -1
- data/spec/spec_helper.rb +4 -21
- metadata +42 -122
data/.travis.yml
ADDED
data/Gemfile
CHANGED
@@ -1,3 +1,13 @@
|
|
1
1
|
source :rubygems
|
2
|
-
|
3
|
-
|
2
|
+
|
3
|
+
gem 'rake'
|
4
|
+
gem 'rspec', '~> 2.0.1'
|
5
|
+
gem 'activesupport', '~> 3.0.10'
|
6
|
+
gem 'actionpack', "~> 3.0.10", :require => 'action_view'
|
7
|
+
gem 'guard'
|
8
|
+
gem 'guard-rspec'
|
9
|
+
gem 'launchy'
|
10
|
+
gem 'rcov', :platforms => [:mri_18]
|
11
|
+
gem 'cover_me', '>= 1.0.0.rc6', :platforms => [:mri_19]
|
12
|
+
|
13
|
+
gemspec
|
data/Readme.markdown
CHANGED
@@ -51,7 +51,7 @@ Or, in the course of formatting this data, did you wish you could access `curren
|
|
51
51
|
|
52
52
|
How would you handle this in the model layer? You'd probably pass the `current_user` or some role/flag down to `to_json`. That should still feel slimy.
|
53
53
|
|
54
|
-
When you use a decorator you have the power of a Ruby object but it's a part of the view layer. This is where your `
|
54
|
+
When you use a decorator you have the power of a Ruby object but it's a part of the view layer. This is where your `to_json` belongs. You can access your `current_user` helper method using the `h` proxy available in the decorator:
|
55
55
|
|
56
56
|
```ruby
|
57
57
|
class ArticleDecorator < ApplicationDecorator
|
@@ -59,9 +59,9 @@ class ArticleDecorator < ApplicationDecorator
|
|
59
59
|
ADMIN_VISIBLE_ATTRIBUTES = [:title, :body, :author, :status]
|
60
60
|
PUBLIC_VISIBLE_ATTRIBUTES = [:title, :body]
|
61
61
|
|
62
|
-
def
|
62
|
+
def to_json
|
63
63
|
attr_set = h.current_user.admin? ? ADMIN_VISIBLE_ATTRIBUTES : PUBLIC_VISIBLE_ATTRIBUTES
|
64
|
-
model.
|
64
|
+
model.to_json(:only => attr_set)
|
65
65
|
end
|
66
66
|
end
|
67
67
|
```
|
@@ -84,9 +84,9 @@ end
|
|
84
84
|
Then, to test it:
|
85
85
|
|
86
86
|
```irb
|
87
|
-
|
87
|
+
> ad = ArticleDecorator.find(1)
|
88
88
|
=> #<ArticleDecorator:0x000001020d7728 @model=#<Article id: 1, title: "Hello, World">>
|
89
|
-
|
89
|
+
> ad.title
|
90
90
|
NoMethodError: undefined method `title' for #<ArticleDecorator:0x000001020d7728>
|
91
91
|
```
|
92
92
|
|
@@ -102,11 +102,11 @@ end
|
|
102
102
|
```
|
103
103
|
|
104
104
|
```irb
|
105
|
-
|
105
|
+
> ad = ArticleDecorator.find(1)
|
106
106
|
=> #<ArticleDecorator:0x000001020d7728 @model=#<Article id: 1, title: "Hello, World">>
|
107
|
-
|
107
|
+
> ad.title
|
108
108
|
=> "Hello, World"
|
109
|
-
|
109
|
+
> ad.created_at
|
110
110
|
NoMethodError: undefined method `created_at' for #<ArticleDecorator:0x000001020d7728>
|
111
111
|
```
|
112
112
|
|
@@ -296,7 +296,6 @@ end
|
|
296
296
|
## Issues / Pending
|
297
297
|
|
298
298
|
* Documentation
|
299
|
-
* Keep revising Readme for better organization/clarity
|
300
299
|
* Add more information about using "context"
|
301
300
|
* Add information about the `.decorator` method
|
302
301
|
* Make clear the pattern of overriding accessor methods of the wrapped model
|
data/draper.gemspec
CHANGED
@@ -17,20 +17,4 @@ Gem::Specification.new do |s|
|
|
17
17
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
18
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
19
|
s.require_paths = ["lib"]
|
20
|
-
|
21
|
-
s.add_development_dependency "rake", ["0.8.7"]
|
22
|
-
s.add_development_dependency "rspec", ["~> 2.0.1"]
|
23
|
-
s.add_development_dependency "activesupport", ["~> 3.0.9"]
|
24
|
-
s.add_development_dependency "actionpack", ["~> 3.0.9"]
|
25
|
-
s.add_development_dependency "guard"
|
26
|
-
s.add_development_dependency "guard-rspec"
|
27
|
-
s.add_development_dependency "rb-fsevent"
|
28
|
-
if RUBY_VERSION.to_f == 1.8
|
29
|
-
s.add_development_dependency "ruby-debug"
|
30
|
-
s.add_development_dependency "rcov"
|
31
|
-
s.add_development_dependency "launchy"
|
32
|
-
else
|
33
|
-
s.add_development_dependency "ruby-debug19"
|
34
|
-
s.add_development_dependency 'cover_me', ['>= 1.0.0.rc6']
|
35
|
-
end
|
36
20
|
end
|
data/lib/draper/version.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -1,25 +1,8 @@
|
|
1
1
|
require 'rubygems'
|
2
|
-
require 'bundler'
|
3
|
-
|
4
|
-
require 'rspec'
|
5
|
-
begin
|
6
|
-
require 'cover_me'
|
7
|
-
rescue LoadError
|
8
|
-
# Silently fail
|
9
|
-
end
|
10
|
-
require './spec/samples/application_helper.rb'
|
11
|
-
Bundler.require
|
12
|
-
Dir.glob('./spec/samples/*') {|file| require file}
|
13
|
-
require 'active_support'
|
14
|
-
require 'action_view'
|
15
2
|
require 'bundler/setup'
|
16
|
-
|
3
|
+
Bundler.require
|
17
4
|
require 'draper'
|
18
|
-
|
19
|
-
Dir[
|
20
|
-
require
|
21
|
-
end
|
22
|
-
|
23
|
-
RSpec.configure do |config|
|
24
|
-
|
5
|
+
require './spec/samples/application_helper.rb'
|
6
|
+
Dir.glob(['./spec/samples/*.rb', './spec/support/*.rb']) do |file|
|
7
|
+
require file
|
25
8
|
end
|
metadata
CHANGED
@@ -1,124 +1,35 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: draper
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 5
|
5
5
|
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 7
|
9
|
+
- 3
|
10
|
+
version: 0.7.3
|
6
11
|
platform: ruby
|
7
|
-
authors:
|
12
|
+
authors:
|
8
13
|
- Jeff Casimir
|
9
14
|
autorequire:
|
10
15
|
bindir: bin
|
11
16
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
requirements:
|
19
|
-
- - =
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: 0.8.7
|
22
|
-
type: :development
|
23
|
-
prerelease: false
|
24
|
-
version_requirements: *70298759756220
|
25
|
-
- !ruby/object:Gem::Dependency
|
26
|
-
name: rspec
|
27
|
-
requirement: &70298759755700 !ruby/object:Gem::Requirement
|
28
|
-
none: false
|
29
|
-
requirements:
|
30
|
-
- - ~>
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: 2.0.1
|
33
|
-
type: :development
|
34
|
-
prerelease: false
|
35
|
-
version_requirements: *70298759755700
|
36
|
-
- !ruby/object:Gem::Dependency
|
37
|
-
name: activesupport
|
38
|
-
requirement: &70298759755200 !ruby/object:Gem::Requirement
|
39
|
-
none: false
|
40
|
-
requirements:
|
41
|
-
- - ~>
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
version: 3.0.9
|
44
|
-
type: :development
|
45
|
-
prerelease: false
|
46
|
-
version_requirements: *70298759755200
|
47
|
-
- !ruby/object:Gem::Dependency
|
48
|
-
name: actionpack
|
49
|
-
requirement: &70298759754680 !ruby/object:Gem::Requirement
|
50
|
-
none: false
|
51
|
-
requirements:
|
52
|
-
- - ~>
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: 3.0.9
|
55
|
-
type: :development
|
56
|
-
prerelease: false
|
57
|
-
version_requirements: *70298759754680
|
58
|
-
- !ruby/object:Gem::Dependency
|
59
|
-
name: guard
|
60
|
-
requirement: &70298759754180 !ruby/object:Gem::Requirement
|
61
|
-
none: false
|
62
|
-
requirements:
|
63
|
-
- - ! '>='
|
64
|
-
- !ruby/object:Gem::Version
|
65
|
-
version: '0'
|
66
|
-
type: :development
|
67
|
-
prerelease: false
|
68
|
-
version_requirements: *70298759754180
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: guard-rspec
|
71
|
-
requirement: &70298759739500 !ruby/object:Gem::Requirement
|
72
|
-
none: false
|
73
|
-
requirements:
|
74
|
-
- - ! '>='
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
version: '0'
|
77
|
-
type: :development
|
78
|
-
prerelease: false
|
79
|
-
version_requirements: *70298759739500
|
80
|
-
- !ruby/object:Gem::Dependency
|
81
|
-
name: rb-fsevent
|
82
|
-
requirement: &70298759738820 !ruby/object:Gem::Requirement
|
83
|
-
none: false
|
84
|
-
requirements:
|
85
|
-
- - ! '>='
|
86
|
-
- !ruby/object:Gem::Version
|
87
|
-
version: '0'
|
88
|
-
type: :development
|
89
|
-
prerelease: false
|
90
|
-
version_requirements: *70298759738820
|
91
|
-
- !ruby/object:Gem::Dependency
|
92
|
-
name: ruby-debug19
|
93
|
-
requirement: &70298759738380 !ruby/object:Gem::Requirement
|
94
|
-
none: false
|
95
|
-
requirements:
|
96
|
-
- - ! '>='
|
97
|
-
- !ruby/object:Gem::Version
|
98
|
-
version: '0'
|
99
|
-
type: :development
|
100
|
-
prerelease: false
|
101
|
-
version_requirements: *70298759738380
|
102
|
-
- !ruby/object:Gem::Dependency
|
103
|
-
name: cover_me
|
104
|
-
requirement: &70298759737840 !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
|
-
requirements:
|
107
|
-
- - ! '>='
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: 1.0.0.rc6
|
110
|
-
type: :development
|
111
|
-
prerelease: false
|
112
|
-
version_requirements: *70298759737840
|
113
|
-
description: Draper reimagines the role of helpers in the view layer of a Rails application,
|
114
|
-
allowing an object-oriented approach rather than procedural.
|
115
|
-
email:
|
17
|
+
|
18
|
+
date: 2011-08-29 00:00:00 Z
|
19
|
+
dependencies: []
|
20
|
+
|
21
|
+
description: Draper reimagines the role of helpers in the view layer of a Rails application, allowing an object-oriented approach rather than procedural.
|
22
|
+
email:
|
116
23
|
- jeff@casimircreative.com
|
117
24
|
executables: []
|
25
|
+
|
118
26
|
extensions: []
|
27
|
+
|
119
28
|
extra_rdoc_files: []
|
120
|
-
|
29
|
+
|
30
|
+
files:
|
121
31
|
- .gitignore
|
32
|
+
- .travis.yml
|
122
33
|
- Gemfile
|
123
34
|
- Guardfile
|
124
35
|
- Rakefile
|
@@ -148,29 +59,38 @@ files:
|
|
148
59
|
- spec/spec_helper.rb
|
149
60
|
homepage: http://github.com/jcasimir/draper
|
150
61
|
licenses: []
|
62
|
+
|
151
63
|
post_install_message:
|
152
64
|
rdoc_options: []
|
153
|
-
|
65
|
+
|
66
|
+
require_paths:
|
154
67
|
- lib
|
155
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
68
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
156
69
|
none: false
|
157
|
-
requirements:
|
158
|
-
- -
|
159
|
-
- !ruby/object:Gem::Version
|
160
|
-
|
161
|
-
|
70
|
+
requirements:
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
hash: 3
|
74
|
+
segments:
|
75
|
+
- 0
|
76
|
+
version: "0"
|
77
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
162
78
|
none: false
|
163
|
-
requirements:
|
164
|
-
- -
|
165
|
-
- !ruby/object:Gem::Version
|
166
|
-
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
hash: 3
|
83
|
+
segments:
|
84
|
+
- 0
|
85
|
+
version: "0"
|
167
86
|
requirements: []
|
87
|
+
|
168
88
|
rubyforge_project: draper
|
169
|
-
rubygems_version: 1.8.
|
89
|
+
rubygems_version: 1.8.6
|
170
90
|
signing_key:
|
171
91
|
specification_version: 3
|
172
92
|
summary: Decorator pattern implmentation for Rails.
|
173
|
-
test_files:
|
93
|
+
test_files:
|
174
94
|
- spec/base_spec.rb
|
175
95
|
- spec/draper/model_support_spec.rb
|
176
96
|
- spec/samples/active_record.rb
|