From cc676ccfa762dad81120f4a12f05860db2350250 Mon Sep 17 00:00:00 2001 From: Mike Gaffney Date: Thu, 30 Oct 2008 14:34:40 -0500 Subject: [PATCH] Adding in library generator: [#1303 state:resolved] --- .../generators/components/library/USAGE | 18 ++++++++++++++++ .../components/library/library_generator.rb | 22 ++++++++++++++++++++ .../components/library/templates/library.rb | 2 + .../components/library/templates/unit_test.rb | 8 +++++++ 4 files changed, 50 insertions(+), 0 deletions(-) create mode 100644 railties/lib/rails_generator/generators/components/library/USAGE create mode 100644 railties/lib/rails_generator/generators/components/library/library_generator.rb create mode 100644 railties/lib/rails_generator/generators/components/library/templates/library.rb create mode 100644 railties/lib/rails_generator/generators/components/library/templates/unit_test.rb diff --git a/railties/lib/rails_generator/generators/components/library/USAGE b/railties/lib/rails_generator/generators/components/library/USAGE new file mode 100644 index 0000000..b58936e --- /dev/null +++ b/railties/lib/rails_generator/generators/components/library/USAGE @@ -0,0 +1,18 @@ +Description: + Stubs out a tested library. Pass the library name, either CamelCased or + under_scored. + + This generates a library class in lib, and a unit test in test/unit. + +Examples: + `./script/generate library email_parser` + + creates an EmailParser object and test: + Model: app/models/email_parser.rb + Test: test/unit/email_parser_test.rb + + `./script/generate library EmailParser` + + creates an EmailParser object and test: + Model: app/models/email_parser.rb + Test: test/unit/email_parser_test.rb diff --git a/railties/lib/rails_generator/generators/components/library/library_generator.rb b/railties/lib/rails_generator/generators/components/library/library_generator.rb new file mode 100644 index 0000000..51b2b2e --- /dev/null +++ b/railties/lib/rails_generator/generators/components/library/library_generator.rb @@ -0,0 +1,22 @@ +class LibraryGenerator < Rails::Generator::NamedBase + + def manifest + record do |m| + # Check for class naming collisions. + m.class_collisions class_path, class_name, "#{class_name}Test" + + # Model, test, and fixture directories. + m.directory File.join('lib', class_path) + m.directory File.join('test/unit', class_path) + + # Model class, unit test, and fixtures. + m.template 'library.rb', File.join('lib', class_path, "#{file_name}.rb") + m.template 'unit_test.rb', File.join('test/unit', class_path, "#{file_name}_test.rb") + end + end + + protected + def banner + "Usage: #{$0} #{spec.name} Library" + end +end diff --git a/railties/lib/rails_generator/generators/components/library/templates/library.rb b/railties/lib/rails_generator/generators/components/library/templates/library.rb new file mode 100644 index 0000000..dd80eac --- /dev/null +++ b/railties/lib/rails_generator/generators/components/library/templates/library.rb @@ -0,0 +1,2 @@ +class <%= class_name %> +end diff --git a/railties/lib/rails_generator/generators/components/library/templates/unit_test.rb b/railties/lib/rails_generator/generators/components/library/templates/unit_test.rb new file mode 100644 index 0000000..42498db --- /dev/null +++ b/railties/lib/rails_generator/generators/components/library/templates/unit_test.rb @@ -0,0 +1,8 @@ +require 'test_helper' + +class <%= class_name %>Test < Test::Unit::TestCase + # Replace this with your real tests. + def test_truth + assert true + end +end -- 1.6.0.1