khalsah-spiffy-generators 0.2.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/.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
|
+
|