aboutsummaryrefslogtreecommitdiffstats
path: root/railties/generators/scaffold/scaffold_generator.rb
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2004-12-07 11:49:38 +0000
committerDavid Heinemeier Hansson <david@loudthinking.com>2004-12-07 11:49:38 +0000
commit2594581e9f5594b32918326be895b4d443ab3e9c (patch)
tree051f52e4619b70f4757dbabf362d51a7d5f5fde9 /railties/generators/scaffold/scaffold_generator.rb
parent3ee4357b8643c611bbe9eb3a7ce820a5e32cddaa (diff)
downloadrails-2594581e9f5594b32918326be895b4d443ab3e9c.tar.gz
rails-2594581e9f5594b32918326be895b4d443ab3e9c.tar.bz2
rails-2594581e9f5594b32918326be895b4d443ab3e9c.zip
Added a better generator for scaffolding that actually creates the code, so it can be edited bit by bit. See "script/generate scaffold" [bitsweat]. Added a whole new approach to generators that used the shared "script/generate" command. Run with no-args to see help [bitsweat].
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@63 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'railties/generators/scaffold/scaffold_generator.rb')
-rw-r--r--railties/generators/scaffold/scaffold_generator.rb53
1 files changed, 53 insertions, 0 deletions
diff --git a/railties/generators/scaffold/scaffold_generator.rb b/railties/generators/scaffold/scaffold_generator.rb
new file mode 100644
index 0000000000..ee556e8a03
--- /dev/null
+++ b/railties/generators/scaffold/scaffold_generator.rb
@@ -0,0 +1,53 @@
+require 'rails_generator'
+
+class ScaffoldGenerator < Rails::Generator::Base
+ def generate
+ # Model.
+ generator('model').generate
+
+ # Fixtures.
+ template "fixtures.yml", "test/fixtures/#{table_name}.yml"
+
+ # Controller class, functional test, helper, and views.
+ template "controller.rb", "app/controllers/#{file_name}_controller.rb"
+ template "functional_test.rb", "test/functional/#{file_name}_controller_test.rb"
+ template "controller/helper.rb", "app/helpers/#{file_name}_helper.rb"
+
+ # Layout and stylesheet.
+ unless File.file?("app/views/layouts/scaffold.rhtml")
+ template "layout.rhtml", "app/views/layouts/scaffold.rhtml"
+ end
+ unless File.file?("public/stylesheets/scaffold.css")
+ template "style.css", "public/stylesheets/scaffold.css"
+ end
+
+ # Scaffolded views.
+ scaffold_views.each do |action|
+ template "view_#{action}.rhtml", "app/views/#{file_name}/#{action}.rhtml"
+ end
+
+ # Unscaffolded views.
+ unscaffolded_actions.each do |action|
+ template "controller/view.rhtml",
+ "app/views/#{file_name}/#{action}.rhtml",
+ binding
+ end
+ end
+
+ protected
+ def scaffold_views
+ %w(list show new edit)
+ end
+
+ def scaffold_actions
+ scaffold_views + %w(index create update destroy)
+ end
+
+ def unscaffolded_actions
+ args - scaffold_actions
+ end
+
+ def suffix
+ "_#{singular_name}" if options[:suffix]
+ end
+end