dead_simple_cms 0.9.4 → 0.10.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.
@@ -29,7 +29,8 @@ require 'dead_simple_cms/attribute/type/all'
29
29
 
30
30
  require 'dead_simple_cms/group'
31
31
  require 'dead_simple_cms/group/configuration'
32
- require 'dead_simple_cms/group/presenter'
32
+ require 'dead_simple_cms/group/presenter/base'
33
+ require 'dead_simple_cms/group/presenter/render_mixin'
33
34
 
34
35
  require 'dead_simple_cms/section'
35
36
  require 'dead_simple_cms/section/builder'
@@ -51,6 +52,10 @@ if defined?(ActionController)
51
52
  require 'dead_simple_cms/rails/action_controller/fragment_sweeper'
52
53
  end
53
54
 
55
+ if defined?(Rails)
56
+ require 'dead_simple_cms/rails/railtie'
57
+ end
58
+
54
59
  module DeadSimpleCMS
55
60
 
56
61
  extend self
@@ -22,7 +22,6 @@ module DeadSimpleCMS
22
22
 
23
23
  VALID_INPUT_TYPES = [:string, :text, :select, :file, :radio].freeze
24
24
 
25
-
26
25
  attr_reader :hint, :input_type, :group_hierarchy, :required
27
26
  attr_accessor :section
28
27
 
@@ -5,7 +5,11 @@ module DeadSimpleCMS
5
5
 
6
6
  ROOT_IDENTIFIER = :root
7
7
 
8
- attr_reader :groups, :presenter_class, :render_proc
8
+ attr_reader :groups
9
+ attr_accessor :parent
10
+
11
+ require 'dead_simple_cms/group/presenter/render_mixin'
12
+ include Presenter::RenderMixin
9
13
 
10
14
  def initialize(identifier, options={})
11
15
  @groups = DeadSimpleCMS::Group.new_dictionary
@@ -16,37 +20,18 @@ module DeadSimpleCMS
16
20
  new(ROOT_IDENTIFIER)
17
21
  end
18
22
 
19
- # Public: Set different mechanisms for rendering this group.
20
- def display(presenter_class=nil, &block)
21
- @presenter_class = presenter_class
22
- @render_proc = block
23
- end
24
-
25
23
  # Public: Exend functionality for the current group.
26
24
  def extend(*modules, &block)
27
25
  modules << Module.new(&block) if block_given?
28
26
  super(*modules)
29
27
  end
30
28
 
31
- # Public: If a presenter class was specified, returns an instance of the presenter.
32
- def presenter(view_context, *args)
33
- @presenter_class.new(view_context, *args) if @presenter_class
34
- end
35
-
36
- # Public: Render the group using the passed in proc in the scope of the template.
37
- def render(view_context, *args)
38
- if @render_proc
39
- view_context.instance_exec(self, *args, &@render_proc)
40
- elsif presenter = presenter(view_context, self, *args)
41
- presenter.render
42
- end
43
- end
44
-
45
29
  def root?
46
30
  identifier == ROOT_IDENTIFIER
47
31
  end
48
32
 
49
33
  def add_group(group)
34
+ group.parent = self
50
35
  groups.add(group)
51
36
  group_accessor(group)
52
37
  end
@@ -4,7 +4,10 @@ module DeadSimpleCMS
4
4
 
5
5
  include Util::Identifier
6
6
 
7
- attr_reader :options, :attribute_arguments, :presenter_class, :render_proc
7
+ require 'dead_simple_cms/group/presenter/render_mixin'
8
+ include Presenter::RenderMixin
9
+
10
+ attr_reader :options, :attribute_arguments
8
11
 
9
12
  def initialize(identifier, options={}, &block)
10
13
  super(identifier, options)
@@ -13,11 +16,6 @@ module DeadSimpleCMS
13
16
  instance_eval(&block)
14
17
  end
15
18
 
16
- def display(presenter_class=nil, &block)
17
- @presenter_class = presenter_class if presenter_class
18
- @render_proc = block if block_given?
19
- end
20
-
21
19
  def self.define_attribute_builder_method(klass)
22
20
  class_eval <<-RUBY, __FILE__, __LINE__ + 1
23
21
  def #{klass.builder_method_name}(identifier, options={})
@@ -0,0 +1,29 @@
1
+ require 'delegate'
2
+ module DeadSimpleCMS
3
+ class Group
4
+ # Public: Presenter class used for rendering groups.
5
+ #
6
+ # Within the context of this group, you can call methods as if you were in the view_context.
7
+ module Presenter
8
+ class Base < SimpleDelegator
9
+
10
+ attr_reader :group
11
+
12
+ def initialize(view_context, group, *args)
13
+ @group = group
14
+ initialize_extra_arguments(*args)
15
+ super(view_context)
16
+ end
17
+
18
+ # Private: Initialize extra arguments for the presenter.
19
+ def initialize_extra_arguments(*args)
20
+ end
21
+
22
+ def render
23
+ raise(NotImplementedError, "Please define your own #render method.")
24
+ end
25
+
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,42 @@
1
+ require 'delegate'
2
+ module DeadSimpleCMS
3
+ class Group
4
+ module Presenter
5
+ # Public: Module to add rendering of lambda and presenters for DeadSimpleCMS::Group.
6
+ module RenderMixin
7
+
8
+ def presenter_class
9
+ display if display.is_a?(Class) && display < Presenter::Base
10
+ end
11
+
12
+ def render_proc
13
+ display if display.is_a?(Proc)
14
+ end
15
+
16
+ # Public: Set different mechanisms for rendering this group.
17
+ def display(presenter_class_or_block=nil, &block)
18
+ @display = presenter_class_or_block if presenter_class_or_block
19
+ @display = block if block_given?
20
+ @display
21
+ end
22
+
23
+ # Public: Render the group using the passed in proc in the scope of the template.
24
+ #
25
+ # If you include this module in something other then a DeadSimpleCMS::Group, you can pass in the +group+ directly with
26
+ # the first argument:
27
+ #
28
+ # render([view_context, group], *args) # and also
29
+ # render(view_context, *args)
30
+ #
31
+ def render(view_context, *args)
32
+ view_context, group = view_context.is_a?(Array) ? view_context : [view_context, self]
33
+ case display
34
+ when Proc then view_context.instance_exec(group, *args, &display)
35
+ when Class then display.new(view_context, group, *args).render if display < Presenter::Base
36
+ end
37
+ end
38
+
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,20 @@
1
+ require 'rack'
2
+ module DeadSimpleCMS
3
+ module Rack
4
+ # Public: Refresh the DeadSimpleCMS values in between requests. Since DeadSimpleCMS stores all the attributes for a
5
+ # section in a serialized format, we cache the storage mechanism on a per-request basis to avoid unnecessary hits
6
+ # to the cache, whether it be Redis, Memcache, or the Database.
7
+ class SectionRefresher
8
+
9
+ def initialize(app, options = {})
10
+ @app = app
11
+ end
12
+
13
+ def call(env)
14
+ DeadSimpleCMS.sections.values.each(&:refresh!)
15
+ @app.call(env)
16
+ end
17
+
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,12 @@
1
+ module DeadSimpleCMS
2
+ module Rails
3
+ class Railtie < ::Rails::Railtie
4
+
5
+ initializer "dead_simple_cms.section_refresher" do |app|
6
+ require 'dead_simple_cms/rack/section_refresher'
7
+ app.config.middleware.use(DeadSimpleCMS::Rack::SectionRefresher)
8
+ end
9
+
10
+ end
11
+ end
12
+ end
@@ -52,6 +52,11 @@ module DeadSimpleCMS
52
52
  @storage ||= storage_class.new(self)
53
53
  end
54
54
 
55
+ # Public: Clears out the storage so new values can be repopulated. Used primarily to clear the values between refreshes.
56
+ def refresh!
57
+ @storage = nil
58
+ end
59
+
55
60
  # Public: Update the section values.
56
61
  #
57
62
  # Examples
@@ -1,3 +1,3 @@
1
1
  module DeadSimpleCMS
2
- VERSION = "0.9.4"
2
+ VERSION = "0.10.0"
3
3
  end
@@ -29,7 +29,10 @@ describe DeadSimpleCMS::Attribute::Collection do
29
29
 
30
30
  let(:string_attribute) { DeadSimpleCMS::Attribute::Type::String.new(:string_attr) }
31
31
 
32
- before(:each) { subject.add_attribute(string_attribute) }
32
+ before(:each) do
33
+ string_attribute.stub(:attributes_from_storage).and_return({})
34
+ subject.add_attribute(string_attribute)
35
+ end
33
36
 
34
37
  it "should create a getter method" do
35
38
  string_attribute.stub(:value).and_return("value")
@@ -215,8 +215,10 @@ describe DeadSimpleCMS::Attribute::Type::File do
215
215
  end
216
216
 
217
217
  before(:each) do
218
+ subject.stub(:attributes_from_storage).and_return({})
218
219
  subject.uploader_class = file_uploader_class
219
220
  end
221
+
220
222
  it "should call upload!" do
221
223
  subject.should_receive(:upload!).once
222
224
  subject.upload!
@@ -21,6 +21,10 @@ describe DeadSimpleCMS::Attribute::Type::Base do
21
21
  subject { fake_attribute_class.new(:fake_identifier, :label => "Fake Label", :default => 413, :hint => "some hint",
22
22
  :group_hierarchy => group_hierarchy) }
23
23
 
24
+ before(:each) do
25
+ subject.stub(:attributes_from_storage).and_return({})
26
+ end
27
+
24
28
  describe ".builder_method_name" do
25
29
  it "should derive from the class name" do
26
30
  fake_attribute_class.builder_method_name.should == "fake_attribute"
@@ -71,14 +75,22 @@ describe DeadSimpleCMS::Attribute::Type::Base do
71
75
 
72
76
  describe "#value" do
73
77
 
74
- context "when @value is set" do
75
- before(:each) { subject.instance_variable_set(:@value, nil) }
78
+ context "when value is in attributes_from_storage" do
79
+ before(:each) do
80
+ subject.stub(:section_identifier).and_return(:foo)
81
+ subject.stub(:attributes_from_storage).and_return(:foo => 3)
82
+ end
76
83
 
77
- its(:value) { should be nil }
84
+ its(:value) { should == 3 }
85
+
86
+ context "and value is storage is nil and default is not nil" do
87
+
88
+ before(:each) do
89
+ subject.stub(:default).and_return(true)
90
+ subject.stub(:attributes_from_storage).and_return(:foo => nil)
91
+ end
78
92
 
79
- it "should not attempt to hit the storage" do
80
- subject.should_receive(:attributes_from_storage).never
81
- subject.value
93
+ its(:value) { should be_nil }
82
94
  end
83
95
  end
84
96
 
@@ -0,0 +1,49 @@
1
+ require "spec_helper"
2
+
3
+ describe DeadSimpleCMS::Group::Presenter::RenderMixin do
4
+
5
+ subject { Class.new { include DeadSimpleCMS::Group::Presenter::RenderMixin }.new }
6
+
7
+ shared_context :presenter_class do
8
+ let(:presenter_class) { Class.new(DeadSimpleCMS::Group::Presenter::Base) { def render ; "render result" ; end } }
9
+ before(:each) { subject.display(presenter_class) }
10
+ end
11
+
12
+ describe "#render" do
13
+ context "when presenter_class is set" do
14
+
15
+ include_context :presenter_class
16
+
17
+ specify { subject.render(:view_context).should == "render result" }
18
+
19
+ end
20
+
21
+ context "when render_proc is set" do
22
+
23
+ before(:each) { subject.display { |group, first, second| "#{first} #{second}" } }
24
+
25
+ specify { subject.render(:view_context, :first_arg, :second_arg).should == "first_arg second_arg" }
26
+
27
+ context "and when group is passed in arguments" do
28
+ let(:group) { DeadSimpleCMS::Group.new(:group_identifier) }
29
+ before(:each) { subject.display { |group, arg1, arg2| "#{group.identifier} #{arg1} #{arg2}" } }
30
+
31
+ it "should use the passed in group for the render_proc" do
32
+ subject.render([:view_context, group], "arg1", "arg2").should == "group_identifier arg1 arg2"
33
+ end
34
+ end
35
+
36
+ end
37
+
38
+ context "when group is passed in" do
39
+ include_context :presenter_class
40
+
41
+ it "should use that as the group" do
42
+ presenter_class.stub(:new).with(:view_context, :group).and_return(double(:render => :result))
43
+ subject.render([:view_context, :group])
44
+ end
45
+
46
+ end
47
+ end
48
+ end
49
+
@@ -1,6 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
- describe DeadSimpleCMS::Group::Presenter do
3
+ describe DeadSimpleCMS::Group::Presenter::Base do
4
4
 
5
5
  let(:view_context) { double("view context") }
6
6
  let(:group) { DeadSimpleCMS::Group.new(:group_identifier) }
@@ -14,22 +14,6 @@ describe DeadSimpleCMS::Group do
14
14
  specify { described_class.root.should be_an_instance_of described_class }
15
15
  end
16
16
 
17
- describe "#presenter" do
18
- context "when presenter_class is set" do
19
-
20
- let(:presenter_class) { Struct.new(:view_context) }
21
-
22
- before(:each) { subject.display(presenter_class) }
23
-
24
- specify { subject.presenter(:view_context).should be_an_instance_of presenter_class }
25
-
26
- end
27
- end
28
-
29
- describe "#render" do
30
-
31
- end
32
-
33
17
  describe "#root?" do
34
18
 
35
19
  its(:root?) { should be false }
@@ -59,6 +43,10 @@ describe DeadSimpleCMS::Group do
59
43
  subject.nested_group_attributes = :value
60
44
  end
61
45
 
46
+ it "should set the parent" do
47
+ nested_group.parent.should == subject
48
+ end
49
+
62
50
  end
63
51
 
64
52
  end
@@ -55,6 +55,15 @@ describe DeadSimpleCMS::Section do
55
55
  describe "#storage" do
56
56
  specify { subject.storage.should be_a DeadSimpleCMS::Storage::Base }
57
57
  end
58
+
59
+ describe "#refresh!" do
60
+ before(:each) do
61
+ subject.instance_variable_set(:@storage, :some_value)
62
+ subject.refresh!
63
+ end
64
+
65
+ specify { subject.instance_variable_get(:@storage).should be_nil }
66
+ end
58
67
 
59
68
  describe "#update_attributes" do
60
69
  before(:each) do
@@ -2,41 +2,65 @@ require "spec_helper"
2
2
 
3
3
  describe DeadSimpleCMS::Util::Identifier::Dictionary do
4
4
 
5
- before(:each) do
6
-
5
+ class ClassWithIdentifier
6
+ include DeadSimpleCMS::Util::Identifier
7
+ alias :some_method :identifier
7
8
  end
8
-
9
+
10
+ subject { described_class.new(ClassWithIdentifier, :identifier_method => :some_method) }
11
+
12
+ its(:identifier_method) { should == :some_method }
13
+ its(:target_class) { should == ClassWithIdentifier }
14
+
15
+ context "when items are added " do
16
+ let(:instance_with_identifier_1) { ClassWithIdentifier.new("basketball") }
17
+ let(:instance_with_identifier_2) { ClassWithIdentifier.new("soccer") }
18
+
19
+ before(:each) do
20
+ subject.add(instance_with_identifier_1)
21
+ subject.add(instance_with_identifier_2)
22
+ end
23
+
24
+ its(:identifiers) { should include(:basketball, :soccer) }
25
+
26
+ it "should be indexed by the identifier" do
27
+ subject[:basketball].should == instance_with_identifier_1
28
+ subject[:soccer].should == instance_with_identifier_2
29
+ end
30
+
31
+ end
32
+
9
33
  describe "#target_class" do
10
-
34
+
11
35
  end
12
-
36
+
13
37
  describe "#identifier_method" do
14
-
38
+
15
39
  end
16
-
40
+
17
41
  describe "#identifiers" do
18
-
42
+
19
43
  end
20
-
44
+
21
45
  describe "#add" do
22
-
46
+
23
47
  end
24
-
48
+
25
49
  describe "#include?" do
26
-
50
+
27
51
  end
28
-
52
+
29
53
  describe "#to_hash" do
30
-
54
+
31
55
  end
32
-
56
+
33
57
  describe "#[]=" do
34
-
58
+
35
59
  end
36
-
60
+
37
61
  describe "#[]" do
38
-
62
+
39
63
  end
40
-
64
+
41
65
  end
42
66
 
@@ -1,5 +1,5 @@
1
1
  module DeadSimpleCMS
2
- class BannerPresenter < DeadSimpleCMS::Group::Presenter
2
+ class BannerPresenter < DeadSimpleCMS::Group::Presenter::Base
3
3
 
4
4
  attr_reader :coupon, :options, :size
5
5
 
data/spec/setup/shared.rb CHANGED
@@ -46,8 +46,9 @@ shared_examples :group_display do
46
46
  describe "#display" do
47
47
  context "when presenter_class is set" do
48
48
  it "should set the @presenter_class variable" do
49
- subject.display :presenter_class
50
- subject.instance_variable_get(:@presenter_class).should == :presenter_class
49
+ klass = Class.new(DeadSimpleCMS::Group::Presenter::Base)
50
+ subject.display klass
51
+ subject.presenter_class.should == klass
51
52
  end
52
53
  end
53
54
 
@@ -55,7 +56,7 @@ shared_examples :group_display do
55
56
  it "should set it to the @render_proc" do
56
57
  proc = lambda { "do something" }
57
58
  subject.display(&proc)
58
- subject.instance_variable_get(:@render_proc).should == proc
59
+ subject.render_proc.should == proc
59
60
  end
60
61
  end
61
62
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dead_simple_cms
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.4
4
+ version: 0.10.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,12 +9,12 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-26 00:00:00.000000000 -07:00
12
+ date: 2012-06-29 00:00:00.000000000 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
17
- requirement: &2161736340 !ruby/object:Gem::Requirement
17
+ requirement: &2157724540 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: '3.0'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *2161736340
25
+ version_requirements: *2157724540
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: activemodel
28
- requirement: &2161735820 !ruby/object:Gem::Requirement
28
+ requirement: &2157723920 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: '3.0'
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *2161735820
36
+ version_requirements: *2157723920
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: simple_form
39
- requirement: &2161735440 !ruby/object:Gem::Requirement
39
+ requirement: &2157723540 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: '0'
45
45
  type: :development
46
46
  prerelease: false
47
- version_requirements: *2161735440
47
+ version_requirements: *2157723540
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: rails
50
- requirement: &2161734880 !ruby/object:Gem::Requirement
50
+ requirement: &2157722900 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ! '>='
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: '3.0'
56
56
  type: :development
57
57
  prerelease: false
58
- version_requirements: *2161734880
58
+ version_requirements: *2157722900
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: rspec
61
- requirement: &2161734460 !ruby/object:Gem::Requirement
61
+ requirement: &2157722360 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ! '>='
@@ -66,10 +66,10 @@ dependencies:
66
66
  version: '0'
67
67
  type: :development
68
68
  prerelease: false
69
- version_requirements: *2161734460
69
+ version_requirements: *2157722360
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: sqlite3
72
- requirement: &2161734000 !ruby/object:Gem::Requirement
72
+ requirement: &2157721800 !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
75
  - - ! '>='
@@ -77,7 +77,7 @@ dependencies:
77
77
  version: '0'
78
78
  type: :development
79
79
  prerelease: false
80
- version_requirements: *2161734000
80
+ version_requirements: *2157721800
81
81
  description: ! "Dead Simple CMS is a library for modifying different parts of your
82
82
  website without the overhead of having a\nfullblown CMS. The idea with this library
83
83
  is simple: provide an easy way to hook into different parts of your\napplication
@@ -113,7 +113,9 @@ files:
113
113
  - lib/dead_simple_cms/file_uploader/base.rb
114
114
  - lib/dead_simple_cms/group.rb
115
115
  - lib/dead_simple_cms/group/configuration.rb
116
- - lib/dead_simple_cms/group/presenter.rb
116
+ - lib/dead_simple_cms/group/presenter/base.rb
117
+ - lib/dead_simple_cms/group/presenter/render_mixin.rb
118
+ - lib/dead_simple_cms/rack/section_refresher.rb
117
119
  - lib/dead_simple_cms/rails/action_controller/extensions.rb
118
120
  - lib/dead_simple_cms/rails/action_controller/fragment_sweeper.rb
119
121
  - lib/dead_simple_cms/rails/action_view/extensions.rb
@@ -122,6 +124,7 @@ files:
122
124
  - lib/dead_simple_cms/rails/action_view/form_builders/simple_form.rb
123
125
  - lib/dead_simple_cms/rails/action_view/form_builders/simple_form_with_bootstrap.rb
124
126
  - lib/dead_simple_cms/rails/action_view/presenter.rb
127
+ - lib/dead_simple_cms/rails/railtie.rb
125
128
  - lib/dead_simple_cms/section.rb
126
129
  - lib/dead_simple_cms/section/builder.rb
127
130
  - lib/dead_simple_cms/storage/base.rb
@@ -138,6 +141,7 @@ files:
138
141
  - spec/dead_simple_cms/configuration_spec.rb
139
142
  - spec/dead_simple_cms/file_uploader/base_spec.rb
140
143
  - spec/dead_simple_cms/group/configuration_spec.rb
144
+ - spec/dead_simple_cms/group/presenter/render_mixin_spec.rb
141
145
  - spec/dead_simple_cms/group/presenter_spec.rb
142
146
  - spec/dead_simple_cms/group_spec.rb
143
147
  - spec/dead_simple_cms/rails/action_view/form_builders/default_spec.rb
@@ -195,6 +199,7 @@ test_files:
195
199
  - spec/dead_simple_cms/configuration_spec.rb
196
200
  - spec/dead_simple_cms/file_uploader/base_spec.rb
197
201
  - spec/dead_simple_cms/group/configuration_spec.rb
202
+ - spec/dead_simple_cms/group/presenter/render_mixin_spec.rb
198
203
  - spec/dead_simple_cms/group/presenter_spec.rb
199
204
  - spec/dead_simple_cms/group_spec.rb
200
205
  - spec/dead_simple_cms/rails/action_view/form_builders/default_spec.rb
@@ -1,23 +0,0 @@
1
- require 'delegate'
2
- module DeadSimpleCMS
3
- class Group
4
- # Public: Presenter class used for rendering groups.
5
- #
6
- # Within the context of this group, you can call methods as if you were in the view_context.
7
- class Presenter < SimpleDelegator
8
-
9
- attr_reader :group
10
-
11
- def initialize(view_context, group, *args)
12
- @group = group
13
- initialize_extra_arguments(*args)
14
- super(view_context)
15
- end
16
-
17
- # Private: Initialize extra arguments for the presenter.
18
- def initialize_extra_arguments(*args)
19
- end
20
-
21
- end
22
- end
23
- end