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.
Files changed (45) hide show
  1. data/.gitignore +2 -0
  2. data/.travis.yml +7 -0
  3. data/.yardopts +1 -0
  4. data/Gemfile +12 -2
  5. data/Readme.markdown +39 -24
  6. data/doc/ApplicationDecorator.html +147 -0
  7. data/doc/Draper/AllHelpers.html +256 -0
  8. data/doc/Draper/Base.html +1222 -0
  9. data/doc/Draper/DecoratorGenerator.html +216 -0
  10. data/doc/Draper/LazyHelpers.html +174 -0
  11. data/doc/Draper/ModelSupport.html +164 -0
  12. data/doc/Draper/System.html +179 -0
  13. data/doc/Draper.html +123 -0
  14. data/doc/_index.html +172 -0
  15. data/doc/class_list.html +47 -0
  16. data/doc/css/common.css +1 -0
  17. data/doc/css/full_list.css +53 -0
  18. data/doc/css/style.css +320 -0
  19. data/doc/file_list.html +46 -0
  20. data/doc/frames.html +13 -0
  21. data/doc/index.html +172 -0
  22. data/doc/js/app.js +205 -0
  23. data/doc/js/full_list.js +150 -0
  24. data/doc/js/jquery.js +16 -0
  25. data/doc/method_list.html +174 -0
  26. data/doc/top-level-namespace.html +103 -0
  27. data/draper.gemspec +0 -16
  28. data/lib/draper/base.rb +101 -16
  29. data/lib/draper/model_support.rb +1 -0
  30. data/lib/draper/system.rb +1 -1
  31. data/lib/draper/version.rb +1 -1
  32. data/lib/draper/view_context.rb +11 -0
  33. data/lib/draper.rb +1 -1
  34. data/lib/generators/rails/decorator_generator.rb +15 -0
  35. data/spec/base_spec.rb +23 -4
  36. data/spec/draper/model_support_spec.rb +5 -0
  37. data/spec/generators/draper/decorator/decorator_generator_spec.rb +28 -0
  38. data/spec/samples/active_record.rb +1 -4
  39. data/spec/samples/application_controller.rb +28 -6
  40. data/spec/samples/decorator_with_allows.rb +1 -1
  41. data/spec/samples/product_decorator.rb +4 -0
  42. data/spec/spec_helper.rb +4 -22
  43. data/spec/view_context_spec.rb +25 -0
  44. metadata +32 -103
  45. data/lib/draper/all_helpers.rb +0 -50
@@ -1,10 +1,32 @@
1
- class ApplicationController
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 self.all_helpers
8
- self
17
+ extend ApplicationHelper
18
+
19
+ def view_context
20
+ @view_context ||= ApplicationController
9
21
  end
10
- end
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
@@ -1,3 +1,3 @@
1
1
  class DecoratorWithAllows < Draper::Base
2
- allows :upcase
2
+ allows :goodnight_moon
3
3
  end
@@ -1,3 +1,7 @@
1
1
  class ProductDecorator < Draper::Base
2
2
  decorates :product
3
+
4
+ def awesome_title
5
+ "Awesome Title"
6
+ end
3
7
  end
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 'draper'
18
-
19
- Dir["spec/support/**/*.rb"].each do |file|
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.7.2
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-28 00:00:00.000000000Z
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
@@ -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