diff options
Diffstat (limited to 'railties/lib/rails_generator/generators')
7 files changed, 63 insertions, 2 deletions
diff --git a/railties/lib/rails_generator/generators/applications/app/app_generator.rb b/railties/lib/rails_generator/generators/applications/app/app_generator.rb index 2c31d89538..c8c2239f34 100644 --- a/railties/lib/rails_generator/generators/applications/app/app_generator.rb +++ b/railties/lib/rails_generator/generators/applications/app/app_generator.rb @@ -125,6 +125,7 @@ class AppGenerator < Rails::Generator::Base create_database_configuration_file(m) create_routes_file(m) create_locale_file(m) + create_seeds_file(m) create_initializer_files(m) create_environment_files(m) end @@ -176,6 +177,10 @@ class AppGenerator < Rails::Generator::Base m.file "configs/routes.rb", "config/routes.rb" end + def create_seeds_file(m) + m.file "configs/seeds.rb", "db/seeds.rb" + end + def create_initializer_files(m) %w( backtrace_silencers diff --git a/railties/lib/rails_generator/generators/applications/app/template_runner.rb b/railties/lib/rails_generator/generators/applications/app/template_runner.rb index 3b49b1fa92..0e24d11950 100644 --- a/railties/lib/rails_generator/generators/applications/app/template_runner.rb +++ b/railties/lib/rails_generator/generators/applications/app/template_runner.rb @@ -227,7 +227,7 @@ module Rails # def generate(what, *args) log 'generating', what - argument = args.map(&:to_s).flatten.join(" ") + argument = args.map {|arg| arg.to_s }.flatten.join(" ") in_root { run_ruby_script("script/generate #{what} #{argument}", false) } end diff --git a/railties/lib/rails_generator/generators/components/model/templates/model.rb b/railties/lib/rails_generator/generators/components/model/templates/model.rb index 6fcf393bdf..0656b06dfe 100644 --- a/railties/lib/rails_generator/generators/components/model/templates/model.rb +++ b/railties/lib/rails_generator/generators/components/model/templates/model.rb @@ -1,5 +1,5 @@ class <%= class_name %> < ActiveRecord::Base -<% attributes.select(&:reference?).each do |attribute| -%> +<% attributes.select {|attr| attr.reference? }.each do |attribute| -%> belongs_to :<%= attribute.name %> <% end -%> end diff --git a/railties/lib/rails_generator/generators/components/model_subclass/USAGE b/railties/lib/rails_generator/generators/components/model_subclass/USAGE new file mode 100644 index 0000000000..a4b558a401 --- /dev/null +++ b/railties/lib/rails_generator/generators/components/model_subclass/USAGE @@ -0,0 +1,13 @@ +Description: + Create a model subclass of parent, used for Single Table Inheritance. + + Both subclass and parent name can be either CamelCased or under_scored. + + This generates a model class in app/models and a unit test in test/unit. + +Examples: + `./script/generate model_subclass admin user` + + creates an Admin model, which will inheritate from User model, test: + Model: app/models/admin.rb + Test: test/unit/admin_test.rb diff --git a/railties/lib/rails_generator/generators/components/model_subclass/model_subclass_generator.rb b/railties/lib/rails_generator/generators/components/model_subclass/model_subclass_generator.rb new file mode 100644 index 0000000000..e8ac3da2cd --- /dev/null +++ b/railties/lib/rails_generator/generators/components/model_subclass/model_subclass_generator.rb @@ -0,0 +1,32 @@ +class ModelSubclassGenerator < Rails::Generator::NamedBase + default_options :skip_unit_test => false + + def manifest + record do |m| + # Check for class naming collisions. + m.class_collisions class_name, "#{class_name}Test" + + # Model and test directories. + m.directory File.join('app/models', class_path) + m.directory File.join('test/unit', class_path) + + # Model class and unit test + m.template 'model.rb', File.join('app/models', class_path, "#{file_name}.rb"), :assigns => assigns + m.template 'unit_test.rb', File.join('test/unit', class_path, "#{file_name}_test.rb"), :assigns => assigns + + end + end + + protected + def banner + "Usage: #{$0} #{spec.name} Subclass Parent" + end + + def assigns + {:parent_class_name => parent_class_name} + end + + def parent_class_name + @args.first.try(:camelize) || usage + end +end diff --git a/railties/lib/rails_generator/generators/components/model_subclass/templates/model.rb b/railties/lib/rails_generator/generators/components/model_subclass/templates/model.rb new file mode 100644 index 0000000000..d0037b322b --- /dev/null +++ b/railties/lib/rails_generator/generators/components/model_subclass/templates/model.rb @@ -0,0 +1,3 @@ +class <%= class_name %> < <%= parent_class_name %> + +end
\ No newline at end of file diff --git a/railties/lib/rails_generator/generators/components/model_subclass/templates/unit_test.rb b/railties/lib/rails_generator/generators/components/model_subclass/templates/unit_test.rb new file mode 100644 index 0000000000..3e0bc29d3a --- /dev/null +++ b/railties/lib/rails_generator/generators/components/model_subclass/templates/unit_test.rb @@ -0,0 +1,8 @@ +require 'test_helper' + +class <%= class_name %>Test < ActiveSupport::TestCase + # Replace this with your real tests. + test "the truth" do + assert true + end +end |