aboutsummaryrefslogtreecommitdiffstats
path: root/railties/lib/rails_generator
diff options
context:
space:
mode:
Diffstat (limited to 'railties/lib/rails_generator')
-rw-r--r--railties/lib/rails_generator/generators/applications/app/app_generator.rb5
-rw-r--r--railties/lib/rails_generator/generators/applications/app/template_runner.rb2
-rw-r--r--railties/lib/rails_generator/generators/components/model/templates/model.rb2
-rw-r--r--railties/lib/rails_generator/generators/components/model_subclass/USAGE13
-rw-r--r--railties/lib/rails_generator/generators/components/model_subclass/model_subclass_generator.rb32
-rw-r--r--railties/lib/rails_generator/generators/components/model_subclass/templates/model.rb3
-rw-r--r--railties/lib/rails_generator/generators/components/model_subclass/templates/unit_test.rb8
-rw-r--r--railties/lib/rails_generator/scripts.rb2
8 files changed, 64 insertions, 3 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
diff --git a/railties/lib/rails_generator/scripts.rb b/railties/lib/rails_generator/scripts.rb
index 9b1a99838a..3763b75dba 100644
--- a/railties/lib/rails_generator/scripts.rb
+++ b/railties/lib/rails_generator/scripts.rb
@@ -57,7 +57,7 @@ module Rails
usage << <<end_blurb
-More are available at http://wiki.rubyonrails.org/rails/pages/AvailableGenerators
+You can also install additional generators for your own use:
1. Download, for example, login_generator.zip
2. Unzip to directory #{Dir.user_home}/.rails/generators/login
to use the generator with all your Rails apps