cells 2.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +30 -0
- data/README +150 -0
- data/README.rdoc +150 -0
- data/Rakefile +77 -0
- data/VERSION +1 -0
- data/generators/cell/USAGE +26 -0
- data/generators/cell/cell_generator.rb +48 -0
- data/generators/cell/templates/cell.rb +9 -0
- data/generators/cell/templates/view.html.erb +2 -0
- data/generators/cell/templates/view.html.haml +4 -0
- data/init.rb +59 -0
- data/lib/cell/base.rb +454 -0
- data/lib/cell/caching.rb +151 -0
- data/lib/cell/view.rb +55 -0
- data/lib/cells_helper.rb +49 -0
- data/lib/rails_extensions.rb +75 -0
- data/test/bugs_test.rb +26 -0
- data/test/caching_test.rb +266 -0
- data/test/capture_test.rb +56 -0
- data/test/cell_view_test.rb +9 -0
- data/test/cells/cells_test_one_cell.rb +20 -0
- data/test/cells/cells_test_two_cell.rb +2 -0
- data/test/cells/really_module/nested_cell.rb +11 -0
- data/test/cells/simple_cell.rb +5 -0
- data/test/cells/test_cell.rb +34 -0
- data/test/cells_test.rb +345 -0
- data/test/helper_test.rb +159 -0
- data/test/helpers/helper_using_cell_helper.rb +5 -0
- data/test/rails_extensions_test.rb +25 -0
- data/test/render_test.rb +229 -0
- data/test/testing_helper.rb +67 -0
- metadata +85 -0
data/CHANGES
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
- 2.3
|
2
|
+
* Cell::Base#new(controller, opts={})
|
3
|
+
We got rid of the second argument cell_name, since it was completely useless.
|
4
|
+
* when a state view couldn't be found there's no longer a warning message, but an exception.
|
5
|
+
* moved Cell::Base to lib/cell/base.rb
|
6
|
+
* moved Rails extension code to lib/rails_extensions.rb
|
7
|
+
* removed all the boot code since we don't need it anymore
|
8
|
+
|
9
|
+
|
10
|
+
- trunk
|
11
|
+
* Remove dependency on Engines
|
12
|
+
* Improved support for helpers
|
13
|
+
|
14
|
+
- cells-1.0
|
15
|
+
* view rendering rewritten, we now use a separate ActionView::Base instance
|
16
|
+
that fixes bug #1
|
17
|
+
* introduced view inheritance, so derived cells inherit view files from their
|
18
|
+
superclass
|
19
|
+
* introduced automatic view file finding, Cell::Base#path is no longer needed
|
20
|
+
* added support for helpers in cell views
|
21
|
+
* removed Cell::Registry in favor or a new cells autoloading mechanism
|
22
|
+
|
23
|
+
- zells-0.1
|
24
|
+
* partly fixed bug #1 where cell instance variables could not be accessed
|
25
|
+
when calling #render_cell under special circumstances
|
26
|
+
* added lots of tests
|
27
|
+
* tests use #assert_select now
|
28
|
+
|
29
|
+
- zells-0.1-rc1
|
30
|
+
* first release into an unsuspecting world
|
data/README
ADDED
@@ -0,0 +1,150 @@
|
|
1
|
+
= Overview
|
2
|
+
|
3
|
+
Cells are like controllers in Rails - they have methods and corresponding views.
|
4
|
+
However, their big advantage to controllers is their <em>modularity</em>: you can have
|
5
|
+
as many cells on a page as you want. That's as if you had multiple controllers in one
|
6
|
+
page, where each "controller" renders only a certain part of the page.
|
7
|
+
As if this wasn't enough, cells are superfast and lightweight.
|
8
|
+
|
9
|
+
They perfectly work together with AJAX/JavaScript, but also run fine without it,
|
10
|
+
Michael.
|
11
|
+
|
12
|
+
== Give me code!
|
13
|
+
|
14
|
+
To quickly create the necessary files for an example cell run the generator:
|
15
|
+
|
16
|
+
script/generate cell Article newest top_article
|
17
|
+
|
18
|
+
|
19
|
+
The generated cell class located in <tt>app/cells/article_cell.rb</tt> could look like
|
20
|
+
this, after some editing:
|
21
|
+
|
22
|
+
class ArticleCell < Cell::Base
|
23
|
+
helper :my_formatting_and_escaping_helper # you can use helpers in cell views!
|
24
|
+
|
25
|
+
def newest
|
26
|
+
@articles = Article.get_newest
|
27
|
+
render # will render the view named newest.html.[erb|haml|...]".
|
28
|
+
end
|
29
|
+
|
30
|
+
def top_article
|
31
|
+
@article = Article.top_article
|
32
|
+
render :view => :top_article_v2, # renders top_article_v2.html.[erb|haml|...]
|
33
|
+
:layout => :box # and put it in the layout "box.html".
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
The corresponding views are in <tt>app/cells/article/newest.html.erb</tt>:
|
38
|
+
|
39
|
+
<h2>Hot stuff!</h2>
|
40
|
+
<ul>
|
41
|
+
<% @articles.each do |article| %>
|
42
|
+
<li><%= article.title %></li>
|
43
|
+
<% end %>
|
44
|
+
</ul>
|
45
|
+
|
46
|
+
The other view would be in <tt>app/cells/article/top_article_v2.html.haml</tt>:
|
47
|
+
|
48
|
+
%h2
|
49
|
+
= @article.title
|
50
|
+
= format_and_escape(@article.text)
|
51
|
+
|
52
|
+
You already know that from controllers, don't you? Speaking of controllers, here's
|
53
|
+
how you could plug the cells into the page. In <tt>app/controllers/blog_controller.rb</tt>
|
54
|
+
there could be an action
|
55
|
+
|
56
|
+
class BlogController < ApplicationController
|
57
|
+
def top_page
|
58
|
+
...
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
where the rendered action view could be <tt>app/views/blog/top_page.html.erb</tt>:
|
63
|
+
|
64
|
+
<%= yield %>
|
65
|
+
|
66
|
+
<div><%= render_cell(:article, :newest) %></div>
|
67
|
+
<div><%= render_cell(:article, :top_article) %></div>
|
68
|
+
|
69
|
+
The "top page" would consist of the controller action's content, and two additional
|
70
|
+
independent boxes with interesting content. These two boxes are <em>cells</em> and could
|
71
|
+
be used on another page, too.
|
72
|
+
|
73
|
+
= Caching
|
74
|
+
|
75
|
+
To improve performance rendered state views can be cached using Rails' caching mechanism.
|
76
|
+
If this it configured (e.g. using our fast friend memcached) all you have to do is to
|
77
|
+
tell Cells which state you want to cache. You can further attach a proc for deciding
|
78
|
+
versions or to instruct re-rendering.
|
79
|
+
|
80
|
+
cache :my_cached_state, Proc.new{|cell| Version.for(User.find(1)}
|
81
|
+
|
82
|
+
This would result in re-rendering the state <tt>:my_cached_state</tt> only if the
|
83
|
+
version of the user instance changes.
|
84
|
+
|
85
|
+
= Compatibility with other rails plugins
|
86
|
+
|
87
|
+
Cells uses the rails rendering code and thus stays completely compatible with (most?) plugins.
|
88
|
+
|
89
|
+
=== I18N
|
90
|
+
|
91
|
+
All of Rails' new i18n features work with Cells. For example
|
92
|
+
|
93
|
+
t("Translate me, I'm a lonesome string in a cell state view!")
|
94
|
+
|
95
|
+
from the i18n helper can also be used in cell views.
|
96
|
+
|
97
|
+
=== Haml
|
98
|
+
|
99
|
+
Alternative templating engines will work seamlessly with Cells, too. Usem the markup language
|
100
|
+
of your choice (.erb, .haml, ...) to write your cell views.
|
101
|
+
|
102
|
+
=== Engines
|
103
|
+
|
104
|
+
You can even put cells in plugins and thus maximize the modularity of your code.
|
105
|
+
As soon as the plugin has an app/cells/ directory your cells will be added automatically
|
106
|
+
and can be used everywhere in your application.
|
107
|
+
|
108
|
+
= Installation
|
109
|
+
|
110
|
+
To install, simply cd to your rails app directory and run
|
111
|
+
|
112
|
+
script/plugin install git://github.com/apotonick/cells.git
|
113
|
+
|
114
|
+
This release is tested and runs with Rails 2.3.
|
115
|
+
|
116
|
+
|
117
|
+
= Documentation
|
118
|
+
|
119
|
+
Reference documentation is found in the documentation of the Cell::Base class.
|
120
|
+
|
121
|
+
See http://cells.rubyforge.org for documentation targeted at cells
|
122
|
+
newbies, including an overview of what you can do with cells and a
|
123
|
+
tutorial.
|
124
|
+
|
125
|
+
= LICENSE
|
126
|
+
|
127
|
+
Copyright (c) 2007-2009, Nick Sutterer
|
128
|
+
|
129
|
+
Copyright (c) 2007-2008, Solide ICT by Peter Bex and Bob Leers
|
130
|
+
|
131
|
+
The MIT License
|
132
|
+
|
133
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
134
|
+
of this software and associated documentation files (the "Software"), to deal
|
135
|
+
in the Software without restriction, including without limitation the rights
|
136
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
137
|
+
copies of the Software, and to permit persons to whom the Software is
|
138
|
+
furnished to do so, subject to the following conditions:
|
139
|
+
|
140
|
+
The above copyright notice and this permission notice shall be included in
|
141
|
+
all copies or substantial portions of the Software.
|
142
|
+
|
143
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
144
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
145
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
146
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
147
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
148
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
149
|
+
THE SOFTWARE.
|
150
|
+
|
data/README.rdoc
ADDED
@@ -0,0 +1,150 @@
|
|
1
|
+
= Overview
|
2
|
+
|
3
|
+
Cells are like controllers in Rails - they have methods and corresponding views.
|
4
|
+
However, their big advantage to controllers is their <em>modularity</em>: you can have
|
5
|
+
as many cells on a page as you want. That's as if you had multiple controllers in one
|
6
|
+
page, where each "controller" renders only a certain part of the page.
|
7
|
+
As if this wasn't enough, cells are superfast and lightweight.
|
8
|
+
|
9
|
+
They perfectly work together with AJAX/JavaScript, but also run fine without it,
|
10
|
+
Michael.
|
11
|
+
|
12
|
+
== Give me code!
|
13
|
+
|
14
|
+
To quickly create the necessary files for an example cell run the generator:
|
15
|
+
|
16
|
+
script/generate cell Article newest top_article
|
17
|
+
|
18
|
+
|
19
|
+
The generated cell class located in <tt>app/cells/article_cell.rb</tt> could look like
|
20
|
+
this, after some editing:
|
21
|
+
|
22
|
+
class ArticleCell < Cell::Base
|
23
|
+
helper :my_formatting_and_escaping_helper # you can use helpers in cell views!
|
24
|
+
|
25
|
+
def newest
|
26
|
+
@articles = Article.get_newest
|
27
|
+
render # will render the view named newest.html.[erb|haml|...]".
|
28
|
+
end
|
29
|
+
|
30
|
+
def top_article
|
31
|
+
@article = Article.top_article
|
32
|
+
render :view => :top_article_v2, # renders top_article_v2.html.[erb|haml|...]
|
33
|
+
:layout => :box # and put it in the layout "box.html".
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
The corresponding views are in <tt>app/cells/article/newest.html.erb</tt>:
|
38
|
+
|
39
|
+
<h2>Hot stuff!</h2>
|
40
|
+
<ul>
|
41
|
+
<% @articles.each do |article| %>
|
42
|
+
<li><%= article.title %></li>
|
43
|
+
<% end %>
|
44
|
+
</ul>
|
45
|
+
|
46
|
+
The other view would be in <tt>app/cells/article/top_article_v2.html.haml</tt>:
|
47
|
+
|
48
|
+
%h2
|
49
|
+
= @article.title
|
50
|
+
= format_and_escape(@article.text)
|
51
|
+
|
52
|
+
You already know that from controllers, don't you? Speaking of controllers, here's
|
53
|
+
how you could plug the cells into the page. In <tt>app/controllers/blog_controller.rb</tt>
|
54
|
+
there could be an action
|
55
|
+
|
56
|
+
class BlogController < ApplicationController
|
57
|
+
def top_page
|
58
|
+
...
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
where the rendered action view could be <tt>app/views/blog/top_page.html.erb</tt>:
|
63
|
+
|
64
|
+
<%= yield %>
|
65
|
+
|
66
|
+
<div><%= render_cell(:article, :newest) %></div>
|
67
|
+
<div><%= render_cell(:article, :top_article) %></div>
|
68
|
+
|
69
|
+
The "top page" would consist of the controller action's content, and two additional
|
70
|
+
independent boxes with interesting content. These two boxes are <em>cells</em> and could
|
71
|
+
be used on another page, too.
|
72
|
+
|
73
|
+
= Caching
|
74
|
+
|
75
|
+
To improve performance rendered state views can be cached using Rails' caching mechanism.
|
76
|
+
If this it configured (e.g. using our fast friend memcached) all you have to do is to
|
77
|
+
tell Cells which state you want to cache. You can further attach a proc for deciding
|
78
|
+
versions or to instruct re-rendering.
|
79
|
+
|
80
|
+
cache :my_cached_state, Proc.new{|cell| Version.for(User.find(1)}
|
81
|
+
|
82
|
+
This would result in re-rendering the state <tt>:my_cached_state</tt> only if the
|
83
|
+
version of the user instance changes.
|
84
|
+
|
85
|
+
= Compatibility with other rails plugins
|
86
|
+
|
87
|
+
Cells uses the rails rendering code and thus stays completely compatible with (most?) plugins.
|
88
|
+
|
89
|
+
=== I18N
|
90
|
+
|
91
|
+
All of Rails' new i18n features work with Cells. For example
|
92
|
+
|
93
|
+
t("Translate me, I'm a lonesome string in a cell state view!")
|
94
|
+
|
95
|
+
from the i18n helper can also be used in cell views.
|
96
|
+
|
97
|
+
=== Haml
|
98
|
+
|
99
|
+
Alternative templating engines will work seamlessly with Cells, too. Usem the markup language
|
100
|
+
of your choice (.erb, .haml, ...) to write your cell views.
|
101
|
+
|
102
|
+
=== Engines
|
103
|
+
|
104
|
+
You can even put cells in plugins and thus maximize the modularity of your code.
|
105
|
+
As soon as the plugin has an app/cells/ directory your cells will be added automatically
|
106
|
+
and can be used everywhere in your application.
|
107
|
+
|
108
|
+
= Installation
|
109
|
+
|
110
|
+
To install, simply cd to your rails app directory and run
|
111
|
+
|
112
|
+
script/plugin install git://github.com/apotonick/cells.git
|
113
|
+
|
114
|
+
This release is tested and runs with Rails 2.3.
|
115
|
+
|
116
|
+
|
117
|
+
= Documentation
|
118
|
+
|
119
|
+
Reference documentation is found in the documentation of the Cell::Base class.
|
120
|
+
|
121
|
+
See http://cells.rubyforge.org for documentation targeted at cells
|
122
|
+
newbies, including an overview of what you can do with cells and a
|
123
|
+
tutorial.
|
124
|
+
|
125
|
+
= LICENSE
|
126
|
+
|
127
|
+
Copyright (c) 2007-2009, Nick Sutterer
|
128
|
+
|
129
|
+
Copyright (c) 2007-2008, Solide ICT by Peter Bex and Bob Leers
|
130
|
+
|
131
|
+
The MIT License
|
132
|
+
|
133
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
134
|
+
of this software and associated documentation files (the "Software"), to deal
|
135
|
+
in the Software without restriction, including without limitation the rights
|
136
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
137
|
+
copies of the Software, and to permit persons to whom the Software is
|
138
|
+
furnished to do so, subject to the following conditions:
|
139
|
+
|
140
|
+
The above copyright notice and this permission notice shall be included in
|
141
|
+
all copies or substantial portions of the Software.
|
142
|
+
|
143
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
144
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
145
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
146
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
147
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
148
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
149
|
+
THE SOFTWARE.
|
150
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,77 @@
|
|
1
|
+
require 'rake'
|
2
|
+
require 'rake/testtask'
|
3
|
+
require 'rake/rdoctask'
|
4
|
+
|
5
|
+
NAME = "cells"
|
6
|
+
SUMMARY = %{Cells are lightweight controllers for Rails and can be rendered in controllers and views, providing an elegant and fast way for encapsulation and component-orientation.}
|
7
|
+
HOMEPAGE = "http://cells.rubyforge.org"
|
8
|
+
AUTHORS = ["Nick Sutterer"]
|
9
|
+
EMAIL = "apotonick@gmail.com"
|
10
|
+
SUPPORT_FILES = %w[README CHANGES]
|
11
|
+
|
12
|
+
desc 'Default: run unit tests.'
|
13
|
+
task :default => :test
|
14
|
+
|
15
|
+
desc 'Test the cells plugin.'
|
16
|
+
Rake::TestTask.new(:test) do |t|
|
17
|
+
t.libs << 'lib'
|
18
|
+
t.pattern = 'test/**/*_test.rb'
|
19
|
+
t.verbose = true
|
20
|
+
end
|
21
|
+
|
22
|
+
desc 'Generate documentation for the cells plugin.'
|
23
|
+
Rake::RDocTask.new(:rdoc) do |rdoc|
|
24
|
+
rdoc.rdoc_dir = 'rdoc'
|
25
|
+
rdoc.title = 'Cells Documentation'
|
26
|
+
rdoc.options << '--line-numbers' << '--inline-source'
|
27
|
+
rdoc.rdoc_files.include('README')
|
28
|
+
rdoc.rdoc_files.include('init.rb')
|
29
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
30
|
+
end
|
31
|
+
|
32
|
+
# rdoc -m "README.rdoc" init.rb lib/ generators/ README.rdoc
|
33
|
+
|
34
|
+
# Gem managment tasks.
|
35
|
+
#
|
36
|
+
# == Bump gem version (any):
|
37
|
+
#
|
38
|
+
# rake version:bump:major
|
39
|
+
# rake version:bump:minor
|
40
|
+
# rake version:bump:patch
|
41
|
+
#
|
42
|
+
# == Generate gemspec, build & install locally:
|
43
|
+
#
|
44
|
+
# rake gemspec
|
45
|
+
# rake build
|
46
|
+
# sudo rake install
|
47
|
+
#
|
48
|
+
# == Git tag & push to origin/master
|
49
|
+
#
|
50
|
+
# rake release
|
51
|
+
#
|
52
|
+
# == Release to Gemcutter.org:
|
53
|
+
#
|
54
|
+
# rake gemcutter:release
|
55
|
+
#
|
56
|
+
begin
|
57
|
+
gem 'jeweler'
|
58
|
+
require 'jeweler'
|
59
|
+
Jeweler::Tasks.new do |gemspec|
|
60
|
+
gemspec.name = NAME
|
61
|
+
gemspec.summary = SUMMARY
|
62
|
+
gemspec.description = SUMMARY
|
63
|
+
gemspec.homepage = HOMEPAGE
|
64
|
+
gemspec.authors = AUTHORS
|
65
|
+
gemspec.email = EMAIL
|
66
|
+
|
67
|
+
gemspec.require_paths = %w{lib}
|
68
|
+
gemspec.files = FileList["[A-Z]*", File.join(*%w[{generators,lib} ** *]).to_s, "init.rb"]
|
69
|
+
gemspec.extra_rdoc_files = SUPPORT_FILES
|
70
|
+
|
71
|
+
# gemspec.add_dependency 'activesupport', '>= 2.3.0' # Dependencies and minimum versions?
|
72
|
+
end
|
73
|
+
Jeweler::GemcutterTasks.new
|
74
|
+
rescue LoadError
|
75
|
+
puts "Jeweler - or one of its dependencies - is not available. " <<
|
76
|
+
"Install it with: sudo gem install jeweler -s http://gemcutter.org"
|
77
|
+
end
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.3.0
|
@@ -0,0 +1,26 @@
|
|
1
|
+
Description:
|
2
|
+
Stubs out a new cell and its views. Pass the cell name, either
|
3
|
+
CamelCased or under_scored, and a list of views as arguments.
|
4
|
+
|
5
|
+
This generates a cell class in app/cells and view templates in
|
6
|
+
app/cells/cell_name.
|
7
|
+
|
8
|
+
Examples:
|
9
|
+
|
10
|
+
./script/generate cell Announcements index
|
11
|
+
|
12
|
+
This will create an Announcements cell:
|
13
|
+
Cell:
|
14
|
+
app/cells/announcements_cell.rb
|
15
|
+
Views:
|
16
|
+
app/cells/announcements/index.html.erb
|
17
|
+
|
18
|
+
|
19
|
+
./script/generate cell Articles popular recent --haml
|
20
|
+
|
21
|
+
This will create an Articles cell:
|
22
|
+
Cell:
|
23
|
+
app/cells/articles_cell.rb
|
24
|
+
Views:
|
25
|
+
app/cells/articles/popular.html.haml
|
26
|
+
app/cells/articles/recent.html.haml
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'rails_generator/generators/components/controller/controller_generator'
|
2
|
+
|
3
|
+
class CellGenerator < ControllerGenerator
|
4
|
+
|
5
|
+
attr_reader :template_type
|
6
|
+
|
7
|
+
def initialize(runtime_args, runtime_options = {})
|
8
|
+
super
|
9
|
+
@template_type = options[:haml] ? :haml : :erb
|
10
|
+
end
|
11
|
+
|
12
|
+
def manifest
|
13
|
+
record do |m|
|
14
|
+
# Check for class naming collisions.
|
15
|
+
m.class_collisions class_path, "#{class_name}Cell"
|
16
|
+
|
17
|
+
# Directories
|
18
|
+
m.directory File.join('app/cells', class_path)
|
19
|
+
m.directory File.join('app/cells', class_path, file_name)
|
20
|
+
|
21
|
+
# Cell
|
22
|
+
m.template 'cell.rb', File.join('app/cells', class_path, "#{file_name}_cell.rb")
|
23
|
+
|
24
|
+
# View template for each action.
|
25
|
+
actions.each do |action|
|
26
|
+
path = File.join('app/cells', class_path, file_name, "#{action}.html.#{template_type}")
|
27
|
+
m.template "view.html.#{template_type}", path,
|
28
|
+
:assigns => { :action => action, :path => path }
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def add_options!(opt)
|
34
|
+
opt.separator ''
|
35
|
+
opt.separator 'Options:'
|
36
|
+
|
37
|
+
# Allow option to generate HAML views instead of ERB.
|
38
|
+
opt.on('--haml',
|
39
|
+
"Generate HAML output instead of the default ERB.") do |v|
|
40
|
+
options[:haml] = v
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def banner
|
45
|
+
"Usage: #{$0} cell NAME a_view another_view ... [--haml]"
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|