draper 0.7.2 → 0.8.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.
- data/.gitignore +2 -0
- data/.travis.yml +7 -0
- data/.yardopts +1 -0
- data/Gemfile +12 -2
- data/Readme.markdown +39 -24
- data/doc/ApplicationDecorator.html +147 -0
- data/doc/Draper/AllHelpers.html +256 -0
- data/doc/Draper/Base.html +1222 -0
- data/doc/Draper/DecoratorGenerator.html +216 -0
- data/doc/Draper/LazyHelpers.html +174 -0
- data/doc/Draper/ModelSupport.html +164 -0
- data/doc/Draper/System.html +179 -0
- data/doc/Draper.html +123 -0
- data/doc/_index.html +172 -0
- data/doc/class_list.html +47 -0
- data/doc/css/common.css +1 -0
- data/doc/css/full_list.css +53 -0
- data/doc/css/style.css +320 -0
- data/doc/file_list.html +46 -0
- data/doc/frames.html +13 -0
- data/doc/index.html +172 -0
- data/doc/js/app.js +205 -0
- data/doc/js/full_list.js +150 -0
- data/doc/js/jquery.js +16 -0
- data/doc/method_list.html +174 -0
- data/doc/top-level-namespace.html +103 -0
- data/draper.gemspec +0 -16
- data/lib/draper/base.rb +101 -16
- data/lib/draper/model_support.rb +1 -0
- data/lib/draper/system.rb +1 -1
- data/lib/draper/version.rb +1 -1
- data/lib/draper/view_context.rb +11 -0
- data/lib/draper.rb +1 -1
- data/lib/generators/rails/decorator_generator.rb +15 -0
- data/spec/base_spec.rb +23 -4
- data/spec/draper/model_support_spec.rb +5 -0
- data/spec/generators/draper/decorator/decorator_generator_spec.rb +28 -0
- data/spec/samples/active_record.rb +1 -4
- data/spec/samples/application_controller.rb +28 -6
- data/spec/samples/decorator_with_allows.rb +1 -1
- data/spec/samples/product_decorator.rb +4 -0
- data/spec/spec_helper.rb +4 -22
- data/spec/view_context_spec.rb +25 -0
- metadata +32 -103
- data/lib/draper/all_helpers.rb +0 -50
|
@@ -1,10 +1,32 @@
|
|
|
1
|
-
|
|
1
|
+
module ActionController
|
|
2
|
+
class Base
|
|
3
|
+
@@before_filters = []
|
|
4
|
+
def self.before_filters
|
|
5
|
+
@@before_filters
|
|
6
|
+
end
|
|
7
|
+
def self.before_filter(name)
|
|
8
|
+
@@before_filters << name
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
class ApplicationController < ActionController::Base
|
|
2
14
|
extend ActionView::Helpers
|
|
3
15
|
extend ActionView::Helpers::TagHelper
|
|
4
16
|
extend ActionView::Helpers::UrlHelper
|
|
5
|
-
extend ApplicationHelper
|
|
6
|
-
|
|
7
|
-
def
|
|
8
|
-
|
|
17
|
+
extend ApplicationHelper
|
|
18
|
+
|
|
19
|
+
def view_context
|
|
20
|
+
@view_context ||= ApplicationController
|
|
9
21
|
end
|
|
10
|
-
|
|
22
|
+
|
|
23
|
+
def view_context=(input)
|
|
24
|
+
@view_context = input
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def self.hello
|
|
28
|
+
"Hello!"
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
Draper::System.setup
|
data/spec/spec_helper.rb
CHANGED
|
@@ -1,25 +1,7 @@
|
|
|
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
|
-
|
|
17
|
-
require '
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
require "./" + file
|
|
3
|
+
Bundler.require
|
|
4
|
+
require './spec/samples/application_helper.rb'
|
|
5
|
+
Dir.glob(['./spec/samples/*.rb', './spec/support/*.rb']) do |file|
|
|
6
|
+
require file
|
|
21
7
|
end
|
|
22
|
-
|
|
23
|
-
RSpec.configure do |config|
|
|
24
|
-
|
|
25
|
-
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'draper'
|
|
3
|
+
|
|
4
|
+
describe Draper::ViewContext do
|
|
5
|
+
let (:app_controller) do
|
|
6
|
+
ApplicationController
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
let (:app_controller_instance) do
|
|
10
|
+
app_controller.new
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "implements #set_current_view_context" do
|
|
14
|
+
app_controller_instance.should respond_to(:set_current_view_context)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "calls #before_filter with #set_current_view_context" do
|
|
18
|
+
app_controller.before_filters.should include(:set_current_view_context)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "raises an exception if the view_context is fetched without being set" do
|
|
22
|
+
Thread.current[:current_view_context] = nil
|
|
23
|
+
expect {app_controller.current_view_context}.should raise_exception(Exception)
|
|
24
|
+
end
|
|
25
|
+
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: draper
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.8.0
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,107 +9,8 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2011-08
|
|
13
|
-
dependencies:
|
|
14
|
-
- !ruby/object:Gem::Dependency
|
|
15
|
-
name: rake
|
|
16
|
-
requirement: &70298759756220 !ruby/object:Gem::Requirement
|
|
17
|
-
none: false
|
|
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
|
|
12
|
+
date: 2011-10-08 00:00:00.000000000Z
|
|
13
|
+
dependencies: []
|
|
113
14
|
description: Draper reimagines the role of helpers in the view layer of a Rails application,
|
|
114
15
|
allowing an object-oriented approach rather than procedural.
|
|
115
16
|
email:
|
|
@@ -119,24 +20,49 @@ extensions: []
|
|
|
119
20
|
extra_rdoc_files: []
|
|
120
21
|
files:
|
|
121
22
|
- .gitignore
|
|
23
|
+
- .travis.yml
|
|
24
|
+
- .yardopts
|
|
122
25
|
- Gemfile
|
|
123
26
|
- Guardfile
|
|
124
27
|
- Rakefile
|
|
125
28
|
- Readme.markdown
|
|
29
|
+
- doc/ApplicationDecorator.html
|
|
30
|
+
- doc/Draper.html
|
|
31
|
+
- doc/Draper/AllHelpers.html
|
|
32
|
+
- doc/Draper/Base.html
|
|
33
|
+
- doc/Draper/DecoratorGenerator.html
|
|
34
|
+
- doc/Draper/LazyHelpers.html
|
|
35
|
+
- doc/Draper/ModelSupport.html
|
|
36
|
+
- doc/Draper/System.html
|
|
37
|
+
- doc/_index.html
|
|
38
|
+
- doc/class_list.html
|
|
39
|
+
- doc/css/common.css
|
|
40
|
+
- doc/css/full_list.css
|
|
41
|
+
- doc/css/style.css
|
|
42
|
+
- doc/file_list.html
|
|
43
|
+
- doc/frames.html
|
|
44
|
+
- doc/index.html
|
|
45
|
+
- doc/js/app.js
|
|
46
|
+
- doc/js/full_list.js
|
|
47
|
+
- doc/js/jquery.js
|
|
48
|
+
- doc/method_list.html
|
|
49
|
+
- doc/top-level-namespace.html
|
|
126
50
|
- draper.gemspec
|
|
127
51
|
- lib/draper.rb
|
|
128
|
-
- lib/draper/all_helpers.rb
|
|
129
52
|
- lib/draper/base.rb
|
|
130
53
|
- lib/draper/lazy_helpers.rb
|
|
131
54
|
- lib/draper/model_support.rb
|
|
132
55
|
- lib/draper/system.rb
|
|
133
56
|
- lib/draper/version.rb
|
|
57
|
+
- lib/draper/view_context.rb
|
|
134
58
|
- lib/generators/draper/decorator/USAGE
|
|
135
59
|
- lib/generators/draper/decorator/decorator_generator.rb
|
|
136
60
|
- lib/generators/draper/decorator/templates/application_decorator.rb
|
|
137
61
|
- lib/generators/draper/decorator/templates/decorator.rb
|
|
62
|
+
- lib/generators/rails/decorator_generator.rb
|
|
138
63
|
- spec/base_spec.rb
|
|
139
64
|
- spec/draper/model_support_spec.rb
|
|
65
|
+
- spec/generators/draper/decorator/decorator_generator_spec.rb
|
|
140
66
|
- spec/samples/active_record.rb
|
|
141
67
|
- spec/samples/application_controller.rb
|
|
142
68
|
- spec/samples/application_helper.rb
|
|
@@ -146,6 +72,7 @@ files:
|
|
|
146
72
|
- spec/samples/product.rb
|
|
147
73
|
- spec/samples/product_decorator.rb
|
|
148
74
|
- spec/spec_helper.rb
|
|
75
|
+
- spec/view_context_spec.rb
|
|
149
76
|
homepage: http://github.com/jcasimir/draper
|
|
150
77
|
licenses: []
|
|
151
78
|
post_install_message:
|
|
@@ -173,6 +100,7 @@ summary: Decorator pattern implmentation for Rails.
|
|
|
173
100
|
test_files:
|
|
174
101
|
- spec/base_spec.rb
|
|
175
102
|
- spec/draper/model_support_spec.rb
|
|
103
|
+
- spec/generators/draper/decorator/decorator_generator_spec.rb
|
|
176
104
|
- spec/samples/active_record.rb
|
|
177
105
|
- spec/samples/application_controller.rb
|
|
178
106
|
- spec/samples/application_helper.rb
|
|
@@ -182,3 +110,4 @@ test_files:
|
|
|
182
110
|
- spec/samples/product.rb
|
|
183
111
|
- spec/samples/product_decorator.rb
|
|
184
112
|
- spec/spec_helper.rb
|
|
113
|
+
- spec/view_context_spec.rb
|
data/lib/draper/all_helpers.rb
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
module Draper
|
|
2
|
-
module AllHelpers
|
|
3
|
-
# Most of the black magic here thanks to Xavier Shay (@xshay)
|
|
4
|
-
# Provide access to helper methods from outside controllers and views,
|
|
5
|
-
# such as in Presenter objects. Rails provides ActionController::Base.helpers,
|
|
6
|
-
# but this does not include any of our application helpers.
|
|
7
|
-
def all_helpers
|
|
8
|
-
@all_helpers_proxy ||= begin
|
|
9
|
-
# Start with just the rails helpers. This is the same method used
|
|
10
|
-
# by ActionController::Base.helpers
|
|
11
|
-
# proxy = ActionView::Base.new.extend(_helpers)
|
|
12
|
-
proxy = ActionController::Base.helpers
|
|
13
|
-
|
|
14
|
-
# url_for depends on _routes method being defined
|
|
15
|
-
proxy.instance_eval do
|
|
16
|
-
def _routes
|
|
17
|
-
Rails.application.routes
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
# Import all named path methods
|
|
22
|
-
proxy.extend(Rails.application.routes.named_routes.module)
|
|
23
|
-
|
|
24
|
-
# Load all our application helpers to extend
|
|
25
|
-
modules_for_helpers([:all]).each do |mod|
|
|
26
|
-
proxy.extend(mod)
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
proxy.instance_eval do
|
|
30
|
-
def controller
|
|
31
|
-
#Object.controller
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
proxy.instance_eval do
|
|
36
|
-
# A hack since this proxy doesn't pick up default_url_options from anywhere
|
|
37
|
-
def url_for(*args)
|
|
38
|
-
if args.last.is_a?(Hash) && !args.last[:only_path]
|
|
39
|
-
args = args.dup
|
|
40
|
-
args << args.pop.merge('host' => ActionMailer::Base.default_url_options[:host])
|
|
41
|
-
end
|
|
42
|
-
super(*args)
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
proxy
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
end
|