khalsah-spiffy-generators 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +2 -0
- data/Rakefile +17 -0
- data/VERSION +1 -0
- data/generators/spiffy_layout/spiffy_layout_generator.rb +26 -0
- data/generators/spiffy_layout/templates/helper.rb +10 -0
- data/generators/spiffy_layout/templates/layout.html.haml +18 -0
- data/generators/spiffy_layout/templates/layout.html.haml_spec.rb +41 -0
- data/generators/spiffy_layout/templates/stylesheet.sass +67 -0
- data/generators/spiffy_scaffold/spiffy_scaffold_generator.rb +72 -0
- data/generators/spiffy_scaffold/templates/controller.rb +46 -0
- data/generators/spiffy_scaffold/templates/controller_spec.rb +145 -0
- data/generators/spiffy_scaffold/templates/migration.rb +14 -0
- data/generators/spiffy_scaffold/templates/model.rb +2 -0
- data/generators/spiffy_scaffold/templates/model_spec.rb +9 -0
- data/generators/spiffy_scaffold/templates/routing_spec.rb +11 -0
- data/generators/spiffy_scaffold/templates/views/_form.html.haml +11 -0
- data/generators/spiffy_scaffold/templates/views/_form.html.haml_spec.rb +31 -0
- data/generators/spiffy_scaffold/templates/views/edit.html.haml +8 -0
- data/generators/spiffy_scaffold/templates/views/edit.html.haml_spec.rb +14 -0
- data/generators/spiffy_scaffold/templates/views/index.html.haml +22 -0
- data/generators/spiffy_scaffold/templates/views/index.html.haml_spec.rb +42 -0
- data/generators/spiffy_scaffold/templates/views/new.html.haml +7 -0
- data/generators/spiffy_scaffold/templates/views/new.html.haml_spec.rb +14 -0
- data/generators/spiffy_scaffold/templates/views/show.html.haml +13 -0
- data/generators/spiffy_scaffold/templates/views/show.html.haml_spec.rb +42 -0
- data/spiffy-generators.gemspec +54 -0
- metadata +78 -0
data/.gitignore
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
|
4
|
+
begin
|
5
|
+
require 'jeweler'
|
6
|
+
Jeweler::Tasks.new do |gem|
|
7
|
+
gem.name = "spiffy-generators"
|
8
|
+
gem.summary = %Q{My personal Rails generators.}
|
9
|
+
gem.email = "khalsah@gmail.com"
|
10
|
+
gem.homepage = "http://github.com/khalsah/spiffy-generators"
|
11
|
+
gem.authors = ["Hargobind Khalsa"]
|
12
|
+
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
13
|
+
end
|
14
|
+
|
15
|
+
rescue LoadError
|
16
|
+
puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
|
17
|
+
end
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.2.0
|
@@ -0,0 +1,26 @@
|
|
1
|
+
class SpiffyLayoutGenerator < Rails::Generator::Base
|
2
|
+
def initialize(runtime_args, runtime_options = {})
|
3
|
+
super
|
4
|
+
@name = @args.first || 'application'
|
5
|
+
end
|
6
|
+
|
7
|
+
def manifest
|
8
|
+
record do |m|
|
9
|
+
m.directory "spec/views/layouts"
|
10
|
+
m.template "layout.html.haml_spec.rb", "spec/views/layouts/#{filename}.html.haml_spec.rb"
|
11
|
+
|
12
|
+
m.directory "app/views/layouts"
|
13
|
+
m.template "layout.html.haml", "app/views/layouts/#{filename}.html.haml"
|
14
|
+
|
15
|
+
m.directory "app/helpers"
|
16
|
+
m.file "helper.rb", "app/helpers/layout_helper.rb"
|
17
|
+
|
18
|
+
m.directory "public/stylesheets/sass"
|
19
|
+
m.file "stylesheet.sass", "public/stylesheets/sass/#{filename}.sass"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def filename
|
24
|
+
@name.underscore
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
!!! XML
|
2
|
+
!!! 1.1
|
3
|
+
%html{html_attrs}
|
4
|
+
|
5
|
+
%head
|
6
|
+
%title= h( yield(:title) || "Untitled" )
|
7
|
+
= stylesheet_link_tag '<%= filename %>'
|
8
|
+
= yield(:head)
|
9
|
+
|
10
|
+
%body
|
11
|
+
#container
|
12
|
+
- if show_title?
|
13
|
+
%h1= h yield(:title)
|
14
|
+
|
15
|
+
- flash.each do |name, msg|
|
16
|
+
= content_tag :div, msg, :id => "flash_#{name}"
|
17
|
+
|
18
|
+
= yield
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
+
|
3
|
+
describe 'layouts/<%= filename %>.html.haml' do
|
4
|
+
it "should render the content" do
|
5
|
+
render :inline => 'THIS-IS-THE-CONTENT', :layout => '<%= filename %>'
|
6
|
+
response.should include_text('THIS-IS-THE-CONTENT')
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should render the title 'Untitled' if not title is set" do
|
10
|
+
render
|
11
|
+
response.should have_tag('title', 'Untitled')
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should render the title when it is given" do
|
15
|
+
render :inline => "<%%= title('THIS-IS-THE-TITLE') %>", :layout => '<%= filename %>'
|
16
|
+
response.should have_tag('title', 'THIS-IS-THE-TITLE')
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should display the title as a header" do
|
20
|
+
render :inline => "<%%= title('THIS-IS-THE-TITLE') %>", :layout => '<%= filename %>'
|
21
|
+
response.should have_tag('h1', 'THIS-IS-THE-TITLE')
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should not display the title as a header if asked not to" do
|
25
|
+
render :inline => "<%%= title('THIS-IS-THE-TITLE', false) %>", :layout => '<%= filename %>'
|
26
|
+
response.should_not have_tag('h1', 'THIS-IS-THE-TITLE')
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should render all flashes" do
|
30
|
+
flash[:notice] = 'THE-NOTICE-FLASH'
|
31
|
+
flash[:weird] = 'THE-WEIRD-FLASH'
|
32
|
+
render
|
33
|
+
response.should have_tag('div#flash_weird', 'THE-WEIRD-FLASH')
|
34
|
+
response.should have_tag('div#flash_notice', 'THE-NOTICE-FLASH')
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should render head content" do
|
38
|
+
render :inline => "<%%= @content_for_head = '<meta/>' %>", :layout => '<%= filename %>'
|
39
|
+
response.should have_tag('head>meta')
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
!primary_color = #4B7399
|
2
|
+
|
3
|
+
body
|
4
|
+
:background-color = !primary_color
|
5
|
+
:font
|
6
|
+
:family Verdana, Helvetica, Arial
|
7
|
+
:size 14px
|
8
|
+
|
9
|
+
a
|
10
|
+
:color #0000FF
|
11
|
+
img
|
12
|
+
:border none
|
13
|
+
|
14
|
+
.clear
|
15
|
+
:clear both
|
16
|
+
:height 0
|
17
|
+
:overflow hidden
|
18
|
+
|
19
|
+
#container
|
20
|
+
:width 75%
|
21
|
+
:margin 0 auto
|
22
|
+
:background #fff
|
23
|
+
:padding 20px 40px
|
24
|
+
:border solid 1px black
|
25
|
+
:margin-top 20px
|
26
|
+
|
27
|
+
#flash_notice,
|
28
|
+
#flash_error
|
29
|
+
:padding 5px 8px
|
30
|
+
:margin 10px 0
|
31
|
+
|
32
|
+
#flash_notice
|
33
|
+
:background-color #CFC
|
34
|
+
:border solid 1px #6C6
|
35
|
+
|
36
|
+
#flash_error
|
37
|
+
:background-color #FCC
|
38
|
+
:border solid 1px #C66
|
39
|
+
|
40
|
+
.fieldWithErrors
|
41
|
+
:display inline
|
42
|
+
|
43
|
+
#errorExplanation
|
44
|
+
:width 400px
|
45
|
+
:border 2px solid #CF0000
|
46
|
+
:padding 0
|
47
|
+
:padding-bottom 12px
|
48
|
+
:margin-bottom 20px
|
49
|
+
:background-color #f0f0f0
|
50
|
+
h2
|
51
|
+
:text-align left
|
52
|
+
:padding 5px 5px 5px 15px
|
53
|
+
:margin 0
|
54
|
+
:font
|
55
|
+
:weight bold
|
56
|
+
:size 12px
|
57
|
+
:background-color #c00
|
58
|
+
:color #fff
|
59
|
+
p
|
60
|
+
:color #333
|
61
|
+
:margin-bottom 0
|
62
|
+
:padding 8px
|
63
|
+
ul
|
64
|
+
:margin 2px 24px
|
65
|
+
li
|
66
|
+
:font-size 12px
|
67
|
+
:list-style disc
|
@@ -0,0 +1,72 @@
|
|
1
|
+
class SpiffyScaffoldGenerator < Rails::Generator::Base
|
2
|
+
attr_reader :name, :attributes
|
3
|
+
|
4
|
+
def initialize(runtime_args, runtime_options = {})
|
5
|
+
super
|
6
|
+
usage if @args.empty?
|
7
|
+
|
8
|
+
@name = @args.first.singularize
|
9
|
+
@attributes = []
|
10
|
+
|
11
|
+
@args[1..-1].each do |arg|
|
12
|
+
@attributes << Rails::Generator::GeneratedAttribute.new(*arg.split(':'))
|
13
|
+
end
|
14
|
+
|
15
|
+
@attributes.uniq!
|
16
|
+
end
|
17
|
+
|
18
|
+
def manifest
|
19
|
+
record do |m|
|
20
|
+
# Generate Model Spec
|
21
|
+
m.directory "spec/models"
|
22
|
+
m.template "model_spec.rb", "spec/models/#{singular_name}_spec.rb"
|
23
|
+
|
24
|
+
# Generate Migration
|
25
|
+
m.directory "db/migrate"
|
26
|
+
m.migration_template 'migration.rb', 'db/migrate', :migration_file_name => "create_#{plural_name}"
|
27
|
+
|
28
|
+
# Generate Model
|
29
|
+
m.directory "app/models"
|
30
|
+
m.template "model.rb", "app/models/#{singular_name}.rb"
|
31
|
+
|
32
|
+
# Generate Routing Spec
|
33
|
+
m.directory 'spec/routing'
|
34
|
+
m.template 'routing_spec.rb', "spec/routing/#{plural_name}_routing_spec.rb"
|
35
|
+
|
36
|
+
# Generate Routing
|
37
|
+
m.route_resources plural_name
|
38
|
+
|
39
|
+
# Generate Controller Spec
|
40
|
+
m.directory 'spec/controllers'
|
41
|
+
m.template 'controller_spec.rb', "spec/controllers/#{plural_name}_controller_spec.rb"
|
42
|
+
|
43
|
+
# Generate Controller
|
44
|
+
m.directory 'app/controllers'
|
45
|
+
m.template 'controller.rb', "app/controllers/#{plural_name}_controller.rb"
|
46
|
+
|
47
|
+
# Generate Views w/ Specs
|
48
|
+
m.directory "spec/views/#{plural_name}"
|
49
|
+
m.directory "app/views/#{plural_name}"
|
50
|
+
%w[index show new edit _form].each do |action|
|
51
|
+
m.template "views/#{action}.html.haml_spec.rb", "spec/views/#{plural_name}/#{action}.html.haml_spec.rb"
|
52
|
+
m.template "views/#{action}.html.haml", "app/views/#{plural_name}/#{action}.html.haml"
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def singular_name
|
58
|
+
name.underscore
|
59
|
+
end
|
60
|
+
|
61
|
+
def plural_name
|
62
|
+
singular_name.pluralize
|
63
|
+
end
|
64
|
+
|
65
|
+
def class_name
|
66
|
+
name.camelize
|
67
|
+
end
|
68
|
+
|
69
|
+
def plural_class_name
|
70
|
+
class_name.pluralize
|
71
|
+
end
|
72
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
class <%= plural_class_name %>Controller < ApplicationController
|
2
|
+
before_filter :find_<%= singular_name %>, :only => [:show, :edit, :update, :destroy]
|
3
|
+
|
4
|
+
def index
|
5
|
+
@<%= plural_name %> = <%= class_name %>.all
|
6
|
+
end
|
7
|
+
|
8
|
+
def show
|
9
|
+
end
|
10
|
+
|
11
|
+
def new
|
12
|
+
@<%= singular_name %> = <%= class_name %>.new
|
13
|
+
end
|
14
|
+
|
15
|
+
def edit
|
16
|
+
end
|
17
|
+
|
18
|
+
def create
|
19
|
+
@<%= singular_name %> = <%= class_name %>.new(params[:<%= singular_name %>])
|
20
|
+
if @<%= singular_name %>.save
|
21
|
+
flash[:notice] = '<%= name.humanize.capitalize %> successfully created.'
|
22
|
+
redirect_to(@<%= singular_name %>)
|
23
|
+
else
|
24
|
+
render :new
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def update
|
29
|
+
if @<%= singular_name %>.update_attributes(params[:<%= singular_name %>])
|
30
|
+
flash[:notice] = '<%= name.humanize.capitalize %> successfully updated.'
|
31
|
+
redirect_to(@<%= singular_name %>)
|
32
|
+
else
|
33
|
+
render :edit
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def destroy
|
38
|
+
@<%= singular_name %>.destroy
|
39
|
+
flash[:notice] = '<%= name.humanize.capitalize %> successfully deleted.'
|
40
|
+
redirect_to(<%= plural_name %>_url)
|
41
|
+
end
|
42
|
+
|
43
|
+
def find_<%= singular_name %>
|
44
|
+
@<%= singular_name %> = <%= class_name %>.find(params[:id])
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,145 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe <%= plural_class_name %>Controller do
|
4
|
+
|
5
|
+
def mock_<%= singular_name %>(stubs = {})
|
6
|
+
@mock_<%= singular_name %> ||= <%= class_name %>.stub_instance(stubs)
|
7
|
+
end
|
8
|
+
|
9
|
+
describe 'GET index' do
|
10
|
+
before(:each) do
|
11
|
+
<%= class_name %>.stub_method(:find => [mock_<%= singular_name %>])
|
12
|
+
get :index
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should find all <%= plural_name.humanize %>" do
|
16
|
+
<%= class_name %>.should have_received(:find).with(:all)
|
17
|
+
end
|
18
|
+
it { should assign_to(:<%= plural_name %>).with([mock_<%= singular_name %>]) }
|
19
|
+
it { should respond_with(:success) }
|
20
|
+
it { should render_template(:index) }
|
21
|
+
it { should_not set_the_flash }
|
22
|
+
end
|
23
|
+
|
24
|
+
describe 'GET show' do
|
25
|
+
before(:each) do
|
26
|
+
<%= class_name %>.stub_method(:find => mock_<%= singular_name %>)
|
27
|
+
get :show, :id => '42'
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should find the <%= singular_name.humanize %>" do
|
31
|
+
<%= class_name %>.should have_received(:find).with('42')
|
32
|
+
end
|
33
|
+
it { should assign_to(:<%= singular_name %>).with(mock_<%= singular_name %>) }
|
34
|
+
it { should respond_with(:success) }
|
35
|
+
it { should render_template(:show) }
|
36
|
+
it { should_not set_the_flash }
|
37
|
+
end
|
38
|
+
|
39
|
+
describe 'GET new' do
|
40
|
+
before(:each) do
|
41
|
+
<%= class_name %>.stub_method(:new => mock_<%= singular_name %>)
|
42
|
+
get :new
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should create a blank <%= singular_name.humanize %>" do
|
46
|
+
<%= class_name %>.should have_received(:new).with()
|
47
|
+
end
|
48
|
+
it { should assign_to(:<%= singular_name %>).with(mock_<%= singular_name %>) }
|
49
|
+
it { should respond_with(:success) }
|
50
|
+
it { should render_template(:new) }
|
51
|
+
it { should_not set_the_flash }
|
52
|
+
end
|
53
|
+
|
54
|
+
describe 'GET edit' do
|
55
|
+
before(:each) do
|
56
|
+
<%= class_name %>.stub_method(:find => mock_<%= singular_name %>)
|
57
|
+
get :edit, :id => 42
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should find the <%= singular_name.humanize %>" do
|
61
|
+
<%= class_name %>.should have_received(:find).with('42')
|
62
|
+
end
|
63
|
+
it { should assign_to(:<%= singular_name %>).with(mock_<%= singular_name %>) }
|
64
|
+
it { should respond_with(:success) }
|
65
|
+
it { should render_template(:edit) }
|
66
|
+
it { should_not set_the_flash }
|
67
|
+
end
|
68
|
+
|
69
|
+
describe 'POST create' do
|
70
|
+
describe 'with valid params' do
|
71
|
+
before(:each) do
|
72
|
+
<%= class_name %>.stub_method(:new => mock_<%= singular_name %>(:save => true))
|
73
|
+
post :create, :<%= singular_name %> => {'these' => 'params'}
|
74
|
+
end
|
75
|
+
|
76
|
+
it "should create the <%= singular_name.humanize.downcase %> with the correct params" do
|
77
|
+
<%= class_name %>.should have_received(:new).with({'these' => 'params'})
|
78
|
+
end
|
79
|
+
it "should save the <%= singular_name.humanize.downcase %>" do
|
80
|
+
mock_<%= singular_name %>.should have_received(:save).with()
|
81
|
+
end
|
82
|
+
it { should respond_with(:redirect) }
|
83
|
+
it { should redirect_to(<%= singular_name %>_url(mock_<%= singular_name %>)) }
|
84
|
+
it { should set_the_flash.to(/created/i) }
|
85
|
+
end
|
86
|
+
|
87
|
+
describe 'with invalid params' do
|
88
|
+
before(:each) do
|
89
|
+
<%= class_name %>.stub_method(:new => mock_<%= singular_name %>(:save => false))
|
90
|
+
post :create, :<%= singular_name %> => {'these' => 'params'}
|
91
|
+
end
|
92
|
+
|
93
|
+
it { should assign_to(:<%= singular_name %>).with(mock_<%= singular_name %>) }
|
94
|
+
it { should respond_with(:success) }
|
95
|
+
it { should render_template(:new) }
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
describe 'PUT update' do
|
100
|
+
describe 'with valid params' do
|
101
|
+
before(:each) do
|
102
|
+
<%= class_name %>.stub_method(:find => mock_<%= singular_name %>(:update_attributes => true))
|
103
|
+
put :update, :id => 42, :<%= singular_name %> => {'these' => 'params'}
|
104
|
+
end
|
105
|
+
|
106
|
+
it "should find the <%= singular_name.humanize.downcase %>" do
|
107
|
+
<%= class_name %>.should have_received(:find).with('42')
|
108
|
+
end
|
109
|
+
it "should update the <%= singular_name.humanize.downcase %> with the correct params" do
|
110
|
+
mock_<%= singular_name %>.should have_received(:update_attributes).with({'these' => 'params'})
|
111
|
+
end
|
112
|
+
it { should respond_with(:redirect) }
|
113
|
+
it { should redirect_to(<%= singular_name %>_url(mock_<%= singular_name %>)) }
|
114
|
+
it { should set_the_flash.to(/updated/i) }
|
115
|
+
end
|
116
|
+
|
117
|
+
describe 'with invalid params' do
|
118
|
+
before(:each) do
|
119
|
+
<%= class_name %>.stub_method(:find => mock_<%= singular_name %>(:update_attributes => false))
|
120
|
+
put :update, :id => 42, :<%= singular_name %> => {'these' => 'params'}
|
121
|
+
end
|
122
|
+
|
123
|
+
it { should assign_to(:<%= singular_name %>) }
|
124
|
+
it { should respond_with(:success) }
|
125
|
+
it { should render_template(:edit) }
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
describe 'DELETE destory' do
|
130
|
+
before(:each) do
|
131
|
+
<%= class_name %>.stub_method(:find => mock_<%= singular_name %>(:destroy => true))
|
132
|
+
delete :destroy, :id => 42
|
133
|
+
end
|
134
|
+
|
135
|
+
it "should find the <%= singular_name.humanize.downcase %>" do
|
136
|
+
<%= class_name %>.should have_received(:find).with('42')
|
137
|
+
end
|
138
|
+
it "should delete the <%= singular_name.humanize.downcase %>" do
|
139
|
+
mock_<%= singular_name %>.should have_received(:destroy).with()
|
140
|
+
end
|
141
|
+
it { should respond_with(:redirect) }
|
142
|
+
it { should redirect_to(<%= plural_name %>_url) }
|
143
|
+
it { should set_the_flash.to(/deleted/i) }
|
144
|
+
end
|
145
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class Create<%= plural_class_name %> < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
create_table :<%= plural_name %>, :force => true do |t|
|
4
|
+
<%- attributes.each do |attribute| -%>
|
5
|
+
t.<%= attribute.type %> :<%= attribute.name %>
|
6
|
+
<%- end -%>
|
7
|
+
t.timestamps
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.down
|
12
|
+
drop_table :<%= plural_name %>
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe <%= class_name %> do
|
4
|
+
<%- attributes.each do |attribute| -%>
|
5
|
+
it { should have_db_column(:<%= attribute.name %>).of_type(:<%= attribute.type %>) }
|
6
|
+
<%- end -%>
|
7
|
+
it { should have_db_column(:created_at).of_type(:datetime) }
|
8
|
+
it { should have_db_column(:updated_at).of_type(:datetime) }
|
9
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe <%= plural_class_name %>Controller do
|
4
|
+
it { should route(:get, '/<%= plural_name %>'). to(:action => :index) }
|
5
|
+
it { should route(:get, '/<%= plural_name %>/42'). to(:action => :show, :id => 42) }
|
6
|
+
it { should route(:get, '/<%= plural_name %>/new'). to(:action => :new) }
|
7
|
+
it { should route(:get, '/<%= plural_name %>/42/edit'). to(:action => :edit, :id => 42) }
|
8
|
+
it { should route(:post, '/<%= plural_name %>'). to(:action => :create) }
|
9
|
+
it { should route(:put, '/<%= plural_name %>/42'). to(:action => :update, :id => 42) }
|
10
|
+
it { should route(:delete, '/<%= plural_name %>/42'). to(:action => :destroy, :id => 42) }
|
11
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
- submit_label ||= 'Submit'
|
2
|
+
- form_for @<%= singular_name %> do |form|
|
3
|
+
= form.error_messages
|
4
|
+
<%- attributes.each do |attribute| -%>
|
5
|
+
%p
|
6
|
+
= form.label :<%= attribute.name %>
|
7
|
+
%br/
|
8
|
+
= form.<%= attribute.field_type %> :<%= attribute.name %>
|
9
|
+
<%- end -%>
|
10
|
+
%p
|
11
|
+
= form.submit submit_label
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
+
|
3
|
+
describe '/<%= plural_name %>/_form.html.haml' do
|
4
|
+
before(:each) do
|
5
|
+
<%= singular_name %> = <%= class_name %>.new
|
6
|
+
<%= singular_name %>.stub_method(:new_record? => true)
|
7
|
+
assigns[:<%= singular_name %>] = <%= singular_name %>
|
8
|
+
render
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should render the <%= singular_name %> form" do
|
12
|
+
response.should have_tag("form[action=?]", <%= plural_name %>_path) do
|
13
|
+
<%- attributes.each do |attribute| -%>
|
14
|
+
<%- case attribute.field_type -%>
|
15
|
+
<%- when :text_field, :check_box -%>
|
16
|
+
with_tag("input#?[name=?]", "<%= singular_name %>_<%= attribute.name %>", "<%= singular_name %>[<%= attribute.name %>]")
|
17
|
+
<%- when :text_area -%>
|
18
|
+
with_tag("textarea#?[name=?]", "<%= singular_name %>_<%= attribute.name %>", "<%= singular_name %>[<%= attribute.name %>]")
|
19
|
+
<%- when :datetime_select -%>
|
20
|
+
%w[1i 2i 3i 4i 5i].each do |i|
|
21
|
+
with_tag("select#?[name=?]", "<%= singular_name %>_<%= attribute.name %>_#{i}", "<%= singular_name %>[<%= attribute.name %>(#{i})]")
|
22
|
+
end
|
23
|
+
<%- when :date_select -%>
|
24
|
+
%w[1i 2i 3i].each do |i|
|
25
|
+
with_tag("select#?[name=?]", "<%= singular_name %>_<%= attribute.name %>_#{i}", "<%= singular_name %>[<%= attribute.name %>(#{i})]")
|
26
|
+
end
|
27
|
+
<%- end -%>
|
28
|
+
<%- end -%>
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
+
|
3
|
+
describe '/<%= plural_name %>/edit.html.haml' do
|
4
|
+
before(:each) do
|
5
|
+
<%= singular_name %> = <%= class_name %>.new
|
6
|
+
template.track_methods(:render)
|
7
|
+
assigns[:<%= singular_name %>] = <%= singular_name %>
|
8
|
+
render
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should render the form partial" do
|
12
|
+
template.should have_received(:render).with('form', :submit_label => 'Update', :object => nil, :form => nil)
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
- title "<%= plural_name.titleize %>"
|
2
|
+
|
3
|
+
%table
|
4
|
+
%tr
|
5
|
+
<%- attributes.each do |attribute| -%>
|
6
|
+
%th <%= attribute.column.human_name %>
|
7
|
+
<%- end -%>
|
8
|
+
- for <%= singular_name %> in @<%= plural_name %>
|
9
|
+
%tr
|
10
|
+
<%- attributes.each do |attribute| -%>
|
11
|
+
%td= h(<%= singular_name %>.<%= attribute.name %>)
|
12
|
+
<%- end -%>
|
13
|
+
%td
|
14
|
+
%table
|
15
|
+
%tr
|
16
|
+
%td= link_to 'Show', <%= singular_name %>
|
17
|
+
%td= link_to 'Edit', edit_<%= singular_name %>_path(<%= singular_name %>)
|
18
|
+
%td= button_to 'Delete', <%= singular_name %>, :confirm => 'Are you sure?', :method => :delete
|
19
|
+
|
20
|
+
%table
|
21
|
+
%tr
|
22
|
+
%td= link_to 'New <%= singular_name.titleize %>', new_<%= singular_name %>_path
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
+
|
3
|
+
describe '/<%= plural_name %>/index.html.haml' do
|
4
|
+
before(:each) do
|
5
|
+
<%= singular_name %> = <%= class_name %>.new
|
6
|
+
<%= singular_name %>.stub_method(:id => 42, :to_param => '42')
|
7
|
+
<%- attributes.each do |attribute| -%>
|
8
|
+
<%- case attribute.type -%>
|
9
|
+
<%- when :string, :text -%>
|
10
|
+
<%= singular_name %>.<%= attribute.name %> = '<%= attribute.column.human_name.upcase %>-VALUE'
|
11
|
+
<%- when :integer -%>
|
12
|
+
<%= singular_name %>.<%= attribute.name %> = '42'
|
13
|
+
<%- when :float, :decimal -%>
|
14
|
+
<%= singular_name %>.<%= attribute.name %> = '3.14'
|
15
|
+
<%- when :datetime, :timestamp, :time -%>
|
16
|
+
<%= singular_name %>.<%= attribute.name %> = DateTime.strptime('2042-01-01T00:00:00+000')
|
17
|
+
<%- when :date -%>
|
18
|
+
<%= singular_name %>.<%= attribute.name %> = Date.strptime('2042-01-01')
|
19
|
+
<%- end -%>
|
20
|
+
<%- end -%>
|
21
|
+
|
22
|
+
assigns[:<%= plural_name %>] = [<%= singular_name %>]
|
23
|
+
render
|
24
|
+
end
|
25
|
+
<%- attributes.each do |attribute| -%>
|
26
|
+
|
27
|
+
it "should render the <%= attribute.column.human_name.downcase %>" do
|
28
|
+
<%- case attribute.type -%>
|
29
|
+
<%- when :string, :text -%>
|
30
|
+
response.should have_tag('td', '<%= attribute.column.human_name.upcase %>-VALUE')
|
31
|
+
<%- when :integer -%>
|
32
|
+
response.should have_tag('td', '42')
|
33
|
+
<%- when :float, :decimal -%>
|
34
|
+
response.should have_tag('td', '3.14')
|
35
|
+
<%- when :datetime, :timestamp, :time -%>
|
36
|
+
response.should have_tag('td', '2042-01-01 00:00:00 UTC')
|
37
|
+
<%- when :date -%>
|
38
|
+
response.should have_tag('td', '2042-01-01')
|
39
|
+
<%- end -%>
|
40
|
+
end
|
41
|
+
<%- end -%>
|
42
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
+
|
3
|
+
describe '/<%= plural_name %>/new.html.haml' do
|
4
|
+
before(:each) do
|
5
|
+
<%= singular_name %> = <%= class_name %>.new
|
6
|
+
template.track_methods(:render)
|
7
|
+
assigns[:<%= singular_name %>] = <%= singular_name %>
|
8
|
+
render
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should render the form partial" do
|
12
|
+
template.should have_received(:render).with('form', :submit_label => 'Create', :object => nil, :form => nil)
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
- title "<%= singular_name.titleize %>"
|
2
|
+
|
3
|
+
<%- attributes.each do |attribute| -%>
|
4
|
+
%p
|
5
|
+
%strong <%= attribute.column.human_name.titleize %>
|
6
|
+
= h(@<%= singular_name %>.<%= attribute.name %>)
|
7
|
+
<%- end -%>
|
8
|
+
|
9
|
+
%table.actions
|
10
|
+
%tr
|
11
|
+
%td= link_to 'Edit', edit_<%= singular_name %>_path(@<%= singular_name %>)
|
12
|
+
%td= button_to 'Delete', @<%= singular_name %>, :confirm => 'Are you sure?', :method => :delete
|
13
|
+
%td= link_to 'View All', <%= plural_name %>_path
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
+
|
3
|
+
describe '/<%= plural_name %>/show.html.haml' do
|
4
|
+
before(:each) do
|
5
|
+
<%= singular_name %> = <%= class_name %>.new
|
6
|
+
<%= singular_name %>.stub_method(:id => 42, :to_param => '42')
|
7
|
+
<%- attributes.each do |attribute| -%>
|
8
|
+
<%- case attribute.type -%>
|
9
|
+
<%- when :string, :text -%>
|
10
|
+
<%= singular_name %>.<%= attribute.name %> = '<%= attribute.column.human_name.upcase %>-VALUE'
|
11
|
+
<%- when :integer -%>
|
12
|
+
<%= singular_name %>.<%= attribute.name %> = '42'
|
13
|
+
<%- when :float, :decimal -%>
|
14
|
+
<%= singular_name %>.<%= attribute.name %> = '3.14'
|
15
|
+
<%- when :datetime, :timestamp, :time -%>
|
16
|
+
<%= singular_name %>.<%= attribute.name %> = DateTime.strptime('2042-01-01T00:00:00+000')
|
17
|
+
<%- when :date -%>
|
18
|
+
<%= singular_name %>.<%= attribute.name %> = Date.strptime('2042-01-01')
|
19
|
+
<%- end -%>
|
20
|
+
<%- end -%>
|
21
|
+
|
22
|
+
assigns[:<%= singular_name %>] = <%= singular_name %>
|
23
|
+
render
|
24
|
+
end
|
25
|
+
<%- attributes.each do |attribute| -%>
|
26
|
+
|
27
|
+
it "should render the <%= attribute.column.human_name.downcase %>" do
|
28
|
+
<%- case attribute.type -%>
|
29
|
+
<%- when :string, :text -%>
|
30
|
+
response.should include_text('<%= attribute.column.human_name.upcase %>-VALUE')
|
31
|
+
<%- when :integer -%>
|
32
|
+
response.should include_text('42')
|
33
|
+
<%- when :float, :decimal -%>
|
34
|
+
response.should include_text('3.14')
|
35
|
+
<%- when :datetime, :timestamp, :time -%>
|
36
|
+
response.should include_text('2042-01-01 00:00:00 UTC')
|
37
|
+
<%- when :date -%>
|
38
|
+
response.should include_text('2042-01-01')
|
39
|
+
<%- end -%>
|
40
|
+
end
|
41
|
+
<%- end -%>
|
42
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = %q{spiffy-generators}
|
5
|
+
s.version = "0.2.0"
|
6
|
+
|
7
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
|
+
s.authors = ["Hargobind Khalsa"]
|
9
|
+
s.date = %q{2009-05-22}
|
10
|
+
s.email = %q{khalsah@gmail.com}
|
11
|
+
s.files = [
|
12
|
+
".gitignore",
|
13
|
+
"Rakefile",
|
14
|
+
"VERSION",
|
15
|
+
"generators/spiffy_layout/spiffy_layout_generator.rb",
|
16
|
+
"generators/spiffy_layout/templates/helper.rb",
|
17
|
+
"generators/spiffy_layout/templates/layout.html.haml",
|
18
|
+
"generators/spiffy_layout/templates/layout.html.haml_spec.rb",
|
19
|
+
"generators/spiffy_layout/templates/stylesheet.sass",
|
20
|
+
"generators/spiffy_scaffold/spiffy_scaffold_generator.rb",
|
21
|
+
"generators/spiffy_scaffold/templates/controller.rb",
|
22
|
+
"generators/spiffy_scaffold/templates/controller_spec.rb",
|
23
|
+
"generators/spiffy_scaffold/templates/migration.rb",
|
24
|
+
"generators/spiffy_scaffold/templates/model.rb",
|
25
|
+
"generators/spiffy_scaffold/templates/model_spec.rb",
|
26
|
+
"generators/spiffy_scaffold/templates/routing_spec.rb",
|
27
|
+
"generators/spiffy_scaffold/templates/views/_form.html.haml",
|
28
|
+
"generators/spiffy_scaffold/templates/views/_form.html.haml_spec.rb",
|
29
|
+
"generators/spiffy_scaffold/templates/views/edit.html.haml",
|
30
|
+
"generators/spiffy_scaffold/templates/views/edit.html.haml_spec.rb",
|
31
|
+
"generators/spiffy_scaffold/templates/views/index.html.haml",
|
32
|
+
"generators/spiffy_scaffold/templates/views/index.html.haml_spec.rb",
|
33
|
+
"generators/spiffy_scaffold/templates/views/new.html.haml",
|
34
|
+
"generators/spiffy_scaffold/templates/views/new.html.haml_spec.rb",
|
35
|
+
"generators/spiffy_scaffold/templates/views/show.html.haml",
|
36
|
+
"generators/spiffy_scaffold/templates/views/show.html.haml_spec.rb",
|
37
|
+
"spiffy-generators.gemspec"
|
38
|
+
]
|
39
|
+
s.homepage = %q{http://github.com/khalsah/spiffy-generators}
|
40
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
41
|
+
s.require_paths = ["lib"]
|
42
|
+
s.rubygems_version = %q{1.3.1}
|
43
|
+
s.summary = %q{My personal Rails generators.}
|
44
|
+
|
45
|
+
if s.respond_to? :specification_version then
|
46
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
47
|
+
s.specification_version = 2
|
48
|
+
|
49
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
50
|
+
else
|
51
|
+
end
|
52
|
+
else
|
53
|
+
end
|
54
|
+
end
|
metadata
ADDED
@@ -0,0 +1,78 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: khalsah-spiffy-generators
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Hargobind Khalsa
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-05-22 00:00:00 -07:00
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description:
|
17
|
+
email: khalsah@gmail.com
|
18
|
+
executables: []
|
19
|
+
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files: []
|
23
|
+
|
24
|
+
files:
|
25
|
+
- .gitignore
|
26
|
+
- Rakefile
|
27
|
+
- VERSION
|
28
|
+
- generators/spiffy_layout/spiffy_layout_generator.rb
|
29
|
+
- generators/spiffy_layout/templates/helper.rb
|
30
|
+
- generators/spiffy_layout/templates/layout.html.haml
|
31
|
+
- generators/spiffy_layout/templates/layout.html.haml_spec.rb
|
32
|
+
- generators/spiffy_layout/templates/stylesheet.sass
|
33
|
+
- generators/spiffy_scaffold/spiffy_scaffold_generator.rb
|
34
|
+
- generators/spiffy_scaffold/templates/controller.rb
|
35
|
+
- generators/spiffy_scaffold/templates/controller_spec.rb
|
36
|
+
- generators/spiffy_scaffold/templates/migration.rb
|
37
|
+
- generators/spiffy_scaffold/templates/model.rb
|
38
|
+
- generators/spiffy_scaffold/templates/model_spec.rb
|
39
|
+
- generators/spiffy_scaffold/templates/routing_spec.rb
|
40
|
+
- generators/spiffy_scaffold/templates/views/_form.html.haml
|
41
|
+
- generators/spiffy_scaffold/templates/views/_form.html.haml_spec.rb
|
42
|
+
- generators/spiffy_scaffold/templates/views/edit.html.haml
|
43
|
+
- generators/spiffy_scaffold/templates/views/edit.html.haml_spec.rb
|
44
|
+
- generators/spiffy_scaffold/templates/views/index.html.haml
|
45
|
+
- generators/spiffy_scaffold/templates/views/index.html.haml_spec.rb
|
46
|
+
- generators/spiffy_scaffold/templates/views/new.html.haml
|
47
|
+
- generators/spiffy_scaffold/templates/views/new.html.haml_spec.rb
|
48
|
+
- generators/spiffy_scaffold/templates/views/show.html.haml
|
49
|
+
- generators/spiffy_scaffold/templates/views/show.html.haml_spec.rb
|
50
|
+
- spiffy-generators.gemspec
|
51
|
+
has_rdoc: false
|
52
|
+
homepage: http://github.com/khalsah/spiffy-generators
|
53
|
+
post_install_message:
|
54
|
+
rdoc_options:
|
55
|
+
- --charset=UTF-8
|
56
|
+
require_paths:
|
57
|
+
- lib
|
58
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: "0"
|
63
|
+
version:
|
64
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: "0"
|
69
|
+
version:
|
70
|
+
requirements: []
|
71
|
+
|
72
|
+
rubyforge_project:
|
73
|
+
rubygems_version: 1.2.0
|
74
|
+
signing_key:
|
75
|
+
specification_version: 2
|
76
|
+
summary: My personal Rails generators.
|
77
|
+
test_files: []
|
78
|
+
|