cells 3.5.5 → 3.5.6
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 +7 -0
- data/README.rdoc +11 -11
- data/cells.gemspec +1 -0
- data/lib/cells/version.rb +1 -1
- data/lib/generators/cells/view_generator.rb +18 -0
- data/lib/generators/erb/cell_generator.rb +7 -9
- data/lib/generators/haml/cell_generator.rb +7 -9
- data/lib/generators/slim/cell_generator.rb +17 -0
- data/lib/generators/templates/view.slim +4 -0
- data/test/app/cells/trumpeter/promote.html.erb +1 -0
- data/test/app/cells/trumpeter_cell.rb +8 -0
- data/test/cell_generator_test.rb +35 -0
- data/test/dummy/app/controllers/musician_controller.rb +13 -9
- data/test/dummy/config/environments/development.rb +0 -3
- data/test/dummy/config/routes.rb +1 -0
- data/test/rails/router_test.rb +10 -8
- data/test/test_helper.rb +1 -0
- metadata +21 -3
data/CHANGES.textile
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
h2. 3.5.6
|
|
2
|
+
|
|
3
|
+
h3. Changes
|
|
4
|
+
* Added a generator for slim. Use it with `-e slim` when generating.
|
|
5
|
+
|
|
6
|
+
|
|
1
7
|
h2. 3.5.5
|
|
2
8
|
|
|
3
9
|
h3. Bugfixes
|
|
@@ -6,6 +12,7 @@ h3. Bugfixes
|
|
|
6
12
|
h3. Changes
|
|
7
13
|
* Gem dependencies changed, we now require @actionpack@ and @railties@ >= 3.0.0 instead of @rails@.
|
|
8
14
|
|
|
15
|
+
|
|
9
16
|
h2. 3.5.4
|
|
10
17
|
|
|
11
18
|
h3. Bugfixes
|
data/README.rdoc
CHANGED
|
@@ -29,7 +29,7 @@ Rails 2.3:
|
|
|
29
29
|
|
|
30
30
|
Creating a cell is nothing more than
|
|
31
31
|
|
|
32
|
-
$ rails generate cell ShoppingCart display -
|
|
32
|
+
$ rails generate cell ShoppingCart display -e haml
|
|
33
33
|
create app/cells/
|
|
34
34
|
create app/cells/shopping_cart
|
|
35
35
|
create app/cells/shopping_cart_cell.rb
|
|
@@ -40,7 +40,7 @@ That looks very familiar.
|
|
|
40
40
|
|
|
41
41
|
== Render the cell
|
|
42
42
|
|
|
43
|
-
Now, render your cart. Why not put it in <tt>layouts/application.html.erb</tt> for now?
|
|
43
|
+
Now, render your cart. Why not put it in <tt>layouts/application.html.erb</tt> for now?
|
|
44
44
|
|
|
45
45
|
<div id="header">
|
|
46
46
|
<%= render_cell :shopping_cart, :display, :user => @current_user %>
|
|
@@ -51,11 +51,11 @@ Feels like rendering a controller action. For good encapsulation we pass the cur
|
|
|
51
51
|
|
|
52
52
|
Time to improve our cell code. Let's start with <tt>app/cells/shopping_cart_cell.rb</tt>:
|
|
53
53
|
|
|
54
|
-
class ShoppingCartCell < Cell::Rails
|
|
54
|
+
class ShoppingCartCell < Cell::Rails
|
|
55
55
|
def display(args)
|
|
56
56
|
user = args[:user]
|
|
57
57
|
@items = user.items_in_cart
|
|
58
|
-
|
|
58
|
+
|
|
59
59
|
render # renders display.html.haml
|
|
60
60
|
end
|
|
61
61
|
end
|
|
@@ -68,8 +68,8 @@ Is that a controller? Hell, yeah. We even got a +#render+ method as we know it f
|
|
|
68
68
|
Since a plain call to +#render+ will start rendering <tt>app/cells/shopping_cart/display.html.haml</tt> we should put some meaningful markup there.
|
|
69
69
|
|
|
70
70
|
#cart
|
|
71
|
-
You have #{@items.size} items in your shopping cart.
|
|
72
|
-
|
|
71
|
+
You have #{@items.size} items in your shopping cart.
|
|
72
|
+
|
|
73
73
|
=== ERB? Haml? Builder?
|
|
74
74
|
|
|
75
75
|
Yes, Cells support all template types that are supported by Rails itself. Remember- it's a controller!
|
|
@@ -78,7 +78,7 @@ Yes, Cells support all template types that are supported by Rails itself. Rememb
|
|
|
78
78
|
|
|
79
79
|
Yes, Cells have helpers just like controllers. If you need some specific helper, do
|
|
80
80
|
|
|
81
|
-
class ShoppingCartCell < Cell::Rails
|
|
81
|
+
class ShoppingCartCell < Cell::Rails
|
|
82
82
|
helper MyExtraHelper
|
|
83
83
|
|
|
84
84
|
and it will be around in your cart views.
|
|
@@ -107,7 +107,7 @@ Let +render_cell+ take care of creating the right cell. Just configure your supe
|
|
|
107
107
|
build do
|
|
108
108
|
UnauthorizedUserCell unless logged_in?
|
|
109
109
|
end
|
|
110
|
-
|
|
110
|
+
|
|
111
111
|
A call to
|
|
112
112
|
|
|
113
113
|
render_cell(:login, :box)
|
|
@@ -119,14 +119,14 @@ will render the configured +UnauthorizedUserCell+ instead of the original +Login
|
|
|
119
119
|
|
|
120
120
|
Cells do strict view caching. No cluttered fragment caching. Add
|
|
121
121
|
|
|
122
|
-
class ShoppingCartCell < Cell::Rails
|
|
122
|
+
class ShoppingCartCell < Cell::Rails
|
|
123
123
|
cache :display, :expires_in => 10.minutes
|
|
124
124
|
|
|
125
125
|
and your cart will be re-rendered after 10 minutes.
|
|
126
126
|
|
|
127
127
|
You can expand the state's cache key - why not use a versioner block to do just this?
|
|
128
128
|
|
|
129
|
-
class ShoppingCartCell < Cell::Rails
|
|
129
|
+
class ShoppingCartCell < Cell::Rails
|
|
130
130
|
cache :display do |cell, options|
|
|
131
131
|
options[:items].md5
|
|
132
132
|
end
|
|
@@ -181,7 +181,7 @@ In order to copy the cells rake tasks to your app, run
|
|
|
181
181
|
Cells can do more.
|
|
182
182
|
|
|
183
183
|
<b>No Limits</b>:: Have as many cells in your page as you need - no limitation to your +render_cell+ calls.
|
|
184
|
-
<b>Cell Nesting</b>:: Have complex cell hierarchies as you can call +render_cell+ within cells, too.
|
|
184
|
+
<b>Cell Nesting</b>:: Have complex cell hierarchies as you can call +render_cell+ within cells, too.
|
|
185
185
|
|
|
186
186
|
Go for it, you'll love it!
|
|
187
187
|
|
data/cells.gemspec
CHANGED
data/lib/cells/version.rb
CHANGED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
module Cells
|
|
2
|
+
module Generators
|
|
3
|
+
class ViewGenerator < Base
|
|
4
|
+
def create_views
|
|
5
|
+
for state in actions do
|
|
6
|
+
@state = state
|
|
7
|
+
@path = File.join(base_path, "#{state}.html.#{handler}") #base_path defined in Cells::Generators::Base.
|
|
8
|
+
template "view.#{handler}", @path
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
private
|
|
13
|
+
def handler
|
|
14
|
+
raise "Please implement #handler in your view generator and return something like `:erb`."
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -1,16 +1,14 @@
|
|
|
1
|
-
require 'generators/cells/
|
|
1
|
+
require 'generators/cells/view_generator'
|
|
2
2
|
|
|
3
3
|
module Erb
|
|
4
4
|
module Generators
|
|
5
|
-
class CellGenerator < ::Cells::Generators::
|
|
5
|
+
class CellGenerator < ::Cells::Generators::ViewGenerator
|
|
6
|
+
|
|
6
7
|
source_root File.expand_path('../../templates', __FILE__)
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
@path = File.join(base_path, "#{state}.html.erb") #base_path defined in Cells::Generators::Base.
|
|
12
|
-
template "view.erb", @path
|
|
13
|
-
end
|
|
8
|
+
|
|
9
|
+
private
|
|
10
|
+
def handler
|
|
11
|
+
:erb
|
|
14
12
|
end
|
|
15
13
|
end
|
|
16
14
|
end
|
|
@@ -1,16 +1,14 @@
|
|
|
1
|
-
require 'generators/cells/
|
|
1
|
+
require 'generators/cells/view_generator'
|
|
2
2
|
|
|
3
3
|
module Haml
|
|
4
4
|
module Generators
|
|
5
|
-
class CellGenerator < ::Cells::Generators::
|
|
5
|
+
class CellGenerator < ::Cells::Generators::ViewGenerator
|
|
6
|
+
|
|
6
7
|
source_root File.expand_path('../../templates', __FILE__)
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
@path = File.join(base_path, "#{state}.html.haml") #base_path defined in Cells::Generators::Base.
|
|
12
|
-
template "view.haml", @path
|
|
13
|
-
end
|
|
8
|
+
|
|
9
|
+
private
|
|
10
|
+
def handler
|
|
11
|
+
:haml
|
|
14
12
|
end
|
|
15
13
|
end
|
|
16
14
|
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
require 'generators/cells/view_generator'
|
|
2
|
+
|
|
3
|
+
module Slim
|
|
4
|
+
module Generators
|
|
5
|
+
class CellGenerator < ::Cells::Generators::ViewGenerator
|
|
6
|
+
|
|
7
|
+
source_root File.expand_path('../../templates', __FILE__)
|
|
8
|
+
|
|
9
|
+
private
|
|
10
|
+
def handler
|
|
11
|
+
:slim
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Find me at <%= link_to "vd.com", root_url %>
|
data/test/cell_generator_test.rb
CHANGED
|
@@ -21,6 +21,10 @@ class CellGeneratorTest < Rails::Generators::TestCase
|
|
|
21
21
|
assert_no_file "app/cells/blog/post.html.haml"
|
|
22
22
|
assert_no_file "app/cells/blog/post.html.haml"
|
|
23
23
|
assert_no_file "app/cells/blog/latest.html.haml"
|
|
24
|
+
|
|
25
|
+
assert_no_file "app/cells/blog/post.html.slim"
|
|
26
|
+
assert_no_file "app/cells/blog/post.html.slim"
|
|
27
|
+
assert_no_file "app/cells/blog/latest.html.slim"
|
|
24
28
|
end
|
|
25
29
|
|
|
26
30
|
should "work with namespaces" do
|
|
@@ -38,6 +42,33 @@ class CellGeneratorTest < Rails::Generators::TestCase
|
|
|
38
42
|
assert_file "app/cells/blog/post/latest.html.haml", %r(app/cells/blog/post/latest\.html\.haml)
|
|
39
43
|
end
|
|
40
44
|
|
|
45
|
+
should "work with namespaces and slim" do
|
|
46
|
+
run_generator %w(Blog::Post latest -e slim)
|
|
47
|
+
|
|
48
|
+
assert_file "app/cells/blog/post_cell.rb", /class Blog::PostCell < Cell::Rails/
|
|
49
|
+
assert_file "app/cells/blog/post/latest.html.slim", %r(app/cells/blog/post/latest\.html\.slim)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
should "create slim assets with -e slim" do
|
|
53
|
+
run_generator %w(Blog post latest -e slim)
|
|
54
|
+
|
|
55
|
+
assert_file "app/cells/blog_cell.rb", /class BlogCell < Cell::Rails/
|
|
56
|
+
assert_file "app/cells/blog_cell.rb", /def post/
|
|
57
|
+
assert_file "app/cells/blog_cell.rb", /def latest/
|
|
58
|
+
assert_file "app/cells/blog/post.html.slim", %r(app/cells/blog/post\.html\.slim)
|
|
59
|
+
assert_file "app/cells/blog/post.html.slim", %r(p)
|
|
60
|
+
assert_file "app/cells/blog/latest.html.slim", %r(app/cells/blog/latest\.html\.slim)
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
assert_no_file "app/cells/blog/post.html.erb"
|
|
64
|
+
assert_no_file "app/cells/blog/post.html.erb"
|
|
65
|
+
assert_no_file "app/cells/blog/latest.html.erb"
|
|
66
|
+
|
|
67
|
+
assert_no_file "app/cells/blog/post.html.haml"
|
|
68
|
+
assert_no_file "app/cells/blog/post.html.haml"
|
|
69
|
+
assert_no_file "app/cells/blog/latest.html.haml"
|
|
70
|
+
end
|
|
71
|
+
|
|
41
72
|
should "create haml assets with -e haml" do
|
|
42
73
|
run_generator %w(Blog post latest -e haml)
|
|
43
74
|
|
|
@@ -52,6 +83,10 @@ class CellGeneratorTest < Rails::Generators::TestCase
|
|
|
52
83
|
assert_no_file "app/cells/blog/post.html.erb"
|
|
53
84
|
assert_no_file "app/cells/blog/post.html.erb"
|
|
54
85
|
assert_no_file "app/cells/blog/latest.html.erb"
|
|
86
|
+
|
|
87
|
+
assert_no_file "app/cells/blog/post.html.slim"
|
|
88
|
+
assert_no_file "app/cells/blog/post.html.slim"
|
|
89
|
+
assert_no_file "app/cells/blog/latest.html.slim"
|
|
55
90
|
end
|
|
56
91
|
|
|
57
92
|
should "create test_unit assets with -t test_unit" do
|
|
@@ -2,31 +2,35 @@ class MusicianController < ActionController::Base
|
|
|
2
2
|
def index
|
|
3
3
|
render :text => render_cell(:bassist, :promote)
|
|
4
4
|
end
|
|
5
|
-
|
|
5
|
+
|
|
6
|
+
def promote
|
|
7
|
+
render :text => render_cell(:trumpeter, :promote)
|
|
8
|
+
end
|
|
9
|
+
|
|
6
10
|
def promotion
|
|
7
11
|
render :text => render_cell(:bassist, :provoke)
|
|
8
12
|
end
|
|
9
|
-
|
|
13
|
+
|
|
10
14
|
def featured
|
|
11
15
|
end
|
|
12
|
-
|
|
16
|
+
|
|
13
17
|
def featured_with_block
|
|
14
18
|
end
|
|
15
|
-
|
|
19
|
+
|
|
16
20
|
def skills
|
|
17
21
|
render :text => render_cell(:bassist, :listen)
|
|
18
22
|
end
|
|
19
|
-
|
|
23
|
+
|
|
20
24
|
def hamlet
|
|
21
25
|
end
|
|
22
|
-
|
|
26
|
+
|
|
23
27
|
attr_reader :flag
|
|
24
28
|
def promotion_with_block
|
|
25
29
|
html = render_cell(:bassist, :play) do |cell|
|
|
26
30
|
@flag = cell.class
|
|
27
31
|
end
|
|
28
|
-
|
|
29
|
-
render :text => html
|
|
32
|
+
|
|
33
|
+
render :text => html
|
|
30
34
|
end
|
|
31
|
-
|
|
35
|
+
|
|
32
36
|
end
|
|
@@ -13,7 +13,4 @@ Dummy::Application.configure do
|
|
|
13
13
|
config.consider_all_requests_local = true
|
|
14
14
|
config.action_view.debug_rjs = true
|
|
15
15
|
config.action_controller.perform_caching = false
|
|
16
|
-
|
|
17
|
-
# Don't care if the mailer can't send
|
|
18
|
-
config.action_mailer.raise_delivery_errors = false
|
|
19
16
|
end
|
data/test/dummy/config/routes.rb
CHANGED
data/test/rails/router_test.rb
CHANGED
|
@@ -7,25 +7,27 @@ module ApplicationTests
|
|
|
7
7
|
BassistCell.class_eval do
|
|
8
8
|
def promote; render; end
|
|
9
9
|
end
|
|
10
|
-
|
|
11
|
-
#assert ::Cell::Rails.view_context_class._routes, "Cells::Railtie initializer wasn't invoked."
|
|
12
|
-
#assert ! ::OmgController.new.respond_to?( :render_cell)
|
|
13
|
-
|
|
10
|
+
|
|
14
11
|
get "index"
|
|
15
12
|
assert_response :success
|
|
16
13
|
assert_equal "Find me at <a href=\"/musician\">vd.com</a>", @response.body
|
|
17
14
|
end
|
|
18
|
-
|
|
15
|
+
|
|
16
|
+
should "allow cells to use *_url helpers when mixing in AC::UrlFor" do
|
|
17
|
+
get "promote"
|
|
18
|
+
assert_response :success
|
|
19
|
+
assert_equal "Find me at <a href=\"http://test.host/\">vd.com</a>\n", @response.body
|
|
20
|
+
end
|
|
21
|
+
|
|
19
22
|
should "allow cells to use #config" do
|
|
20
|
-
|
|
21
23
|
BassistCell.class_eval do
|
|
22
24
|
def provoke; render; end
|
|
23
25
|
end
|
|
24
|
-
|
|
26
|
+
|
|
25
27
|
get "promotion"
|
|
26
28
|
assert_response :success
|
|
27
29
|
assert_equal "That's me, naked <img alt=\"Me\" src=\"/images/me.png\" />", @response.body
|
|
28
|
-
end
|
|
30
|
+
end
|
|
29
31
|
end
|
|
30
32
|
end
|
|
31
33
|
end
|
data/test/test_helper.rb
CHANGED
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
|
+
- 6
|
|
9
|
+
version: 3.5.6
|
|
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-03-
|
|
17
|
+
date: 2011-03-24 00:00:00 +01:00
|
|
18
18
|
default_executable:
|
|
19
19
|
dependencies:
|
|
20
20
|
- !ruby/object:Gem::Dependency
|
|
@@ -73,6 +73,19 @@ dependencies:
|
|
|
73
73
|
version: "0"
|
|
74
74
|
type: :development
|
|
75
75
|
version_requirements: *id004
|
|
76
|
+
- !ruby/object:Gem::Dependency
|
|
77
|
+
name: slim
|
|
78
|
+
prerelease: false
|
|
79
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
|
80
|
+
none: false
|
|
81
|
+
requirements:
|
|
82
|
+
- - ">="
|
|
83
|
+
- !ruby/object:Gem::Version
|
|
84
|
+
segments:
|
|
85
|
+
- 0
|
|
86
|
+
version: "0"
|
|
87
|
+
type: :development
|
|
88
|
+
version_requirements: *id005
|
|
76
89
|
description: Cells are view components for Rails. They are lightweight controllers, can be rendered in views and thus provide an elegant and fast way for encapsulation and component-orientation.
|
|
77
90
|
email:
|
|
78
91
|
- apotonick@gmail.com
|
|
@@ -103,13 +116,16 @@ files:
|
|
|
103
116
|
- lib/generators/USAGE
|
|
104
117
|
- lib/generators/cells/base.rb
|
|
105
118
|
- lib/generators/cells/cell_generator.rb
|
|
119
|
+
- lib/generators/cells/view_generator.rb
|
|
106
120
|
- lib/generators/erb/cell_generator.rb
|
|
107
121
|
- lib/generators/haml/cell_generator.rb
|
|
108
122
|
- lib/generators/rails/cell_generator.rb
|
|
123
|
+
- lib/generators/slim/cell_generator.rb
|
|
109
124
|
- lib/generators/templates/cell.rb
|
|
110
125
|
- lib/generators/templates/cell_test.rb
|
|
111
126
|
- lib/generators/templates/view.erb
|
|
112
127
|
- lib/generators/templates/view.haml
|
|
128
|
+
- lib/generators/templates/view.slim
|
|
113
129
|
- lib/generators/test_unit/cell_generator.rb
|
|
114
130
|
- test/active_helper_test.rb
|
|
115
131
|
- test/app/cells/bad_guitarist/_dii.html.erb
|
|
@@ -132,6 +148,8 @@ files:
|
|
|
132
148
|
- test/app/cells/layouts/metal.html.erb
|
|
133
149
|
- test/app/cells/producer/capture.html.erb
|
|
134
150
|
- test/app/cells/producer/content_for.html.erb
|
|
151
|
+
- test/app/cells/trumpeter/promote.html.erb
|
|
152
|
+
- test/app/cells/trumpeter_cell.rb
|
|
135
153
|
- test/cell_generator_test.rb
|
|
136
154
|
- test/cell_module_test.rb
|
|
137
155
|
- test/cells_module_test.rb
|