cells 3.5.2 → 3.5.4
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/CHANGES.textile +11 -0
- data/lib/cell.rb +15 -6
- data/lib/cell/rails.rb +0 -1
- data/lib/cells.rb +1 -23
- data/lib/cells/railtie.rb +19 -0
- data/lib/cells/version.rb +1 -1
- data/test/cell_module_test.rb +6 -0
- data/test/rails/cells_test.rb +21 -0
- data/test/rails/integration_test.rb +1 -1
- metadata +4 -6
- data/lib/cell/active_helper.rb +0 -32
- data/lib/cells/helpers.rb +0 -7
- data/lib/cells/helpers/capture_helper.rb +0 -51
data/CHANGES.textile
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
h2. 3.5.3
|
2
|
+
|
3
|
+
h3. Bugfixes
|
4
|
+
* state-args work even if your state method receives optional arguments or default values, like @def show(user, age=18)@.
|
5
|
+
|
6
|
+
h3. Changes
|
7
|
+
|
8
|
+
* Cell::Base.view_paths is now setup in an initializer. If you do scary stuff with view_paths this might lead to scary problems.
|
9
|
+
* Cells::DEFAULT_VIEW_PATHS is now Cell::Base::DEFAULT_VIEW_PATHS. Note that Cells will set its view_paths to DEFAULT_VIEW_PATHS at initialization time. If you want to alter the view_paths, use Base.append_view_path and friends in a separate initializer.
|
10
|
+
|
11
|
+
|
1
12
|
h2. 3.5.2
|
2
13
|
|
3
14
|
h3. Bugfixes
|
data/lib/cell.rb
CHANGED
@@ -1,9 +1,19 @@
|
|
1
1
|
module Cell
|
2
|
-
autoload :Caching,
|
2
|
+
autoload :Caching, 'cell/caching'
|
3
3
|
|
4
4
|
extend ActiveSupport::Concern
|
5
|
-
|
5
|
+
|
6
|
+
DEFAULT_VIEW_PATHS = [
|
7
|
+
File.join('app', 'cells'),
|
8
|
+
File.join('app', 'cells', 'layouts')
|
9
|
+
]
|
10
|
+
|
6
11
|
module ClassMethods
|
12
|
+
# Called in Railtie at initialization time.
|
13
|
+
def setup_view_paths!
|
14
|
+
self.view_paths = self::DEFAULT_VIEW_PATHS
|
15
|
+
end
|
16
|
+
|
7
17
|
def render_cell_for(controller, name, state, *args)
|
8
18
|
cell = create_cell_for(controller, name, *args) # DISCUSS: we always save options.
|
9
19
|
yield cell if block_given?
|
@@ -73,9 +83,8 @@ module Cell
|
|
73
83
|
superclass.find_class_view_for_state(state) << view_for_state(state)
|
74
84
|
end
|
75
85
|
|
76
|
-
|
77
|
-
|
78
|
-
name.underscore.sub(/_cell$/, '')
|
86
|
+
def cell_name # TODO: remove in 3.6.
|
87
|
+
controller_path
|
79
88
|
end
|
80
89
|
|
81
90
|
# The cell class constant for +cell_name+.
|
@@ -91,7 +100,7 @@ module Cell
|
|
91
100
|
end
|
92
101
|
|
93
102
|
def state_accepts_args?(state)
|
94
|
-
method(state).arity
|
103
|
+
method(state).arity != 0
|
95
104
|
end
|
96
105
|
end
|
97
106
|
end
|
data/lib/cell/rails.rb
CHANGED
data/lib/cells.rb
CHANGED
@@ -60,17 +60,12 @@
|
|
60
60
|
# this is pretty DRY and object-oriented, isn't it?
|
61
61
|
|
62
62
|
require 'cell/rails'
|
63
|
+
require 'cells/railtie'
|
63
64
|
require 'cells/rails'
|
64
65
|
require 'cell/test_case' if Rails.env == "test"
|
65
66
|
require 'cells/rails_compat' # fixes a bug in Rails <3.0.4. # TODO: remove me as soon as we support 3.1, only.
|
66
67
|
|
67
68
|
module Cells
|
68
|
-
# Default view paths for Cells.
|
69
|
-
DEFAULT_VIEW_PATHS = [
|
70
|
-
File.join('app', 'cells'),
|
71
|
-
File.join('app', 'cells', 'layouts')
|
72
|
-
]
|
73
|
-
|
74
69
|
# Setup your special needs for Cells here. Use this to add new view paths.
|
75
70
|
#
|
76
71
|
# Example:
|
@@ -85,20 +80,3 @@ module Cells
|
|
85
80
|
end
|
86
81
|
|
87
82
|
Cell::Base = Cell::Rails
|
88
|
-
|
89
|
-
Cell::Base.view_paths = Cells::DEFAULT_VIEW_PATHS if Cell::Base.view_paths.blank?
|
90
|
-
|
91
|
-
|
92
|
-
require "rails/railtie"
|
93
|
-
|
94
|
-
class Cells::Railtie < Rails::Railtie
|
95
|
-
initializer "cells.attach_router" do |app|
|
96
|
-
Cell::Rails.class_eval do
|
97
|
-
include app.routes.url_helpers
|
98
|
-
end
|
99
|
-
end
|
100
|
-
|
101
|
-
rake_tasks do
|
102
|
-
load "cells/cells.rake"
|
103
|
-
end
|
104
|
-
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require "rails/railtie"
|
2
|
+
|
3
|
+
module Cells
|
4
|
+
class Railtie < Rails::Railtie
|
5
|
+
initializer "cells.attach_router" do |app|
|
6
|
+
Cell::Rails.class_eval do
|
7
|
+
include app.routes.url_helpers
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
initializer "cells.setup_view_paths" do |app|
|
12
|
+
Cell::Base.setup_view_paths!
|
13
|
+
end
|
14
|
+
|
15
|
+
rake_tasks do
|
16
|
+
load "cells/cells.rake"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/cells/version.rb
CHANGED
data/test/cell_module_test.rb
CHANGED
@@ -170,6 +170,12 @@ class CellModuleTest < ActiveSupport::TestCase
|
|
170
170
|
def listen(what, where) end
|
171
171
|
end.state_accepts_args?(:listen))
|
172
172
|
end
|
173
|
+
|
174
|
+
should "be true for multiple arg with defaults" do
|
175
|
+
assert(cell(:bassist) do
|
176
|
+
def listen(what, where="") end
|
177
|
+
end.state_accepts_args?(:listen))
|
178
|
+
end
|
173
179
|
end
|
174
180
|
end
|
175
181
|
end
|
data/test/rails/cells_test.rb
CHANGED
@@ -34,9 +34,30 @@ class RailsCellsTest < ActiveSupport::TestCase
|
|
34
34
|
end
|
35
35
|
assert_equal "D", cell(:bassist).render_state(:listen, :note => "D")
|
36
36
|
end
|
37
|
+
|
38
|
+
should "accept state-args with default parameters" do
|
39
|
+
BassistCell.class_eval do
|
40
|
+
def listen(first, second="D")
|
41
|
+
render :text => first+second
|
42
|
+
end
|
43
|
+
end
|
44
|
+
assert_equal "AD", cell(:bassist).render_state(:listen, "A")
|
45
|
+
end
|
37
46
|
end
|
38
47
|
|
48
|
+
|
39
49
|
context "A rails cell" do
|
50
|
+
should "respond to DEFAULT_VIEW_PATHS" do
|
51
|
+
assert_equal ["app/cells", "app/cells/layouts"], Cell::Base::DEFAULT_VIEW_PATHS
|
52
|
+
end
|
53
|
+
|
54
|
+
should "respond to .setup_view_paths!" do
|
55
|
+
swap( Cell::Base, :view_paths => []) do
|
56
|
+
Cell::Base.setup_view_paths!
|
57
|
+
assert_equal ActionView::PathSet.new(Cell::Rails::DEFAULT_VIEW_PATHS), Cell::Base.view_paths
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
40
61
|
should "respond to view_paths" do
|
41
62
|
assert_kind_of ActionView::PathSet, Cell::Rails.view_paths, "must be a PathSet for proper template caching/reloading (see issue#2)"
|
42
63
|
end
|
@@ -11,7 +11,7 @@ class RailsIntegrationTest < ActionController::TestCase
|
|
11
11
|
|
12
12
|
should "respond to #render_cell with arbitrary options" do
|
13
13
|
BassistCell.class_eval do
|
14
|
-
def enjoy(what, where)
|
14
|
+
def enjoy(what, where="the bar")
|
15
15
|
render :text => "I like #{what} in #{where}."
|
16
16
|
end
|
17
17
|
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 3
|
7
7
|
- 5
|
8
|
-
-
|
9
|
-
version: 3.5.
|
8
|
+
- 4
|
9
|
+
version: 3.5.4
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Nick Sutterer
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2011-02-
|
17
|
+
date: 2011-02-20 00:00:00 +01:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -76,16 +76,14 @@ files:
|
|
76
76
|
- about.yml
|
77
77
|
- cells.gemspec
|
78
78
|
- lib/cell.rb
|
79
|
-
- lib/cell/active_helper.rb
|
80
79
|
- lib/cell/caching.rb
|
81
80
|
- lib/cell/rails.rb
|
82
81
|
- lib/cell/test_case.rb
|
83
82
|
- lib/cells.rb
|
84
83
|
- lib/cells/cells.rake
|
85
|
-
- lib/cells/helpers.rb
|
86
|
-
- lib/cells/helpers/capture_helper.rb
|
87
84
|
- lib/cells/rails.rb
|
88
85
|
- lib/cells/rails_compat.rb
|
86
|
+
- lib/cells/railtie.rb
|
89
87
|
- lib/cells/version.rb
|
90
88
|
- lib/generators/USAGE
|
91
89
|
- lib/generators/cells/base.rb
|
data/lib/cell/active_helper.rb
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
module Cell::ActiveHelper
|
2
|
-
|
3
|
-
def self.included(base)
|
4
|
-
base.extend ClassMethods
|
5
|
-
|
6
|
-
base.class_inheritable_array :active_helpers
|
7
|
-
base.active_helpers = []
|
8
|
-
end
|
9
|
-
|
10
|
-
module ClassMethods
|
11
|
-
# The passed helpers will be imported in the view and thus be available in
|
12
|
-
# your template.
|
13
|
-
#
|
14
|
-
# Example:
|
15
|
-
# class BassistCell < Cell::Base
|
16
|
-
# active_helper SlappingHelper
|
17
|
-
#
|
18
|
-
# The helper file usually resides in +app/active_helpers/+, baby.
|
19
|
-
def active_helper(*classes)
|
20
|
-
active_helpers.push(*classes).uniq!
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
def import_active_helpers_into(view)
|
25
|
-
return if self.class.active_helpers.blank?
|
26
|
-
|
27
|
-
# We simply assume if somebody's using #active_helper, it is already
|
28
|
-
# required.
|
29
|
-
view.extend ::ActiveHelper
|
30
|
-
view.use *self.class.active_helpers
|
31
|
-
end
|
32
|
-
end
|
data/lib/cells/helpers.rb
DELETED
@@ -1,51 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
# Sorry for the interface violations, but it looks as if there are
|
4
|
-
# no interfaces in rails at all.
|
5
|
-
module Cells
|
6
|
-
module Helpers
|
7
|
-
module CaptureHelper
|
8
|
-
# Executes #capture on the global ActionView and sets <tt>name</tt> as the
|
9
|
-
# instance variable name.
|
10
|
-
#
|
11
|
-
# Example:
|
12
|
-
#
|
13
|
-
# <p>
|
14
|
-
# <% global_capture :greeting do
|
15
|
-
# <h1>Hi, Nick!</h1>
|
16
|
-
# <% end %>
|
17
|
-
#
|
18
|
-
# The captured markup can be accessed in your global action view or in your layout.
|
19
|
-
#
|
20
|
-
# <%= @greeting %>
|
21
|
-
def global_capture(name, &block)
|
22
|
-
global_view = controller.parent_controller.view_context
|
23
|
-
content = capture(&block)
|
24
|
-
global_view.send(:instance_variable_set, :"@#{name}", content)
|
25
|
-
end
|
26
|
-
|
27
|
-
|
28
|
-
# Executes #content_for on the global ActionView.
|
29
|
-
#
|
30
|
-
# Example:
|
31
|
-
#
|
32
|
-
# <p>
|
33
|
-
# <% global_content_for :greetings do
|
34
|
-
# <h1>Hi, Michal!</h1>
|
35
|
-
# <% end %>
|
36
|
-
#
|
37
|
-
# As in global_capture, the markup can be accessed in your global action view or in your layout.
|
38
|
-
#
|
39
|
-
# <%= yield :greetings %>
|
40
|
-
def global_content_for(name, content = nil, &block)
|
41
|
-
# OMG. that SUCKS.
|
42
|
-
global_view = controller.parent_controller.view_context
|
43
|
-
ivar = :"@content_for_#{name}"
|
44
|
-
content = capture(&block) if block_given?
|
45
|
-
old_content = global_view.send(:'instance_variable_get', ivar)
|
46
|
-
global_view.send(:'instance_variable_set', ivar, "#{old_content}#{content}")
|
47
|
-
nil
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|