cells 2.3.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.
- 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
|