Make Observer generator agnostic.

This commit is contained in:
José Valim
2009-06-27 11:05:43 +02:00
parent 85ff67ce4c
commit ff48e23a4e
8 changed files with 29 additions and 14 deletions

View File

@@ -12,6 +12,7 @@ require 'rails/version' unless defined?(Rails::VERSION)
require 'generators/base'
require 'generators/named_base'
require 'generators/active_record'
require 'generators/erb'
require 'generators/test_unit'

View File

@@ -0,0 +1,8 @@
require 'generators/named_base'
module ActiveRecord
module Generators
class Base < Rails::Generators::NamedBase
end
end
end

View File

@@ -0,0 +1,11 @@
module ActiveRecord
module Generators
class ObserverGenerator < Base
check_class_collision :suffix => "Observer"
def create_observer_file
template 'observer.rb', File.join('app/models', class_path, "#{file_name}_observer.rb")
end
end
end
end

View File

@@ -3,9 +3,10 @@ require 'generators/actions'
module Rails
module Generators
DEFAULTS = {
:orm => 'active_record',
:helper => true,
:test_framework => 'test_unit',
:template_engine => 'erb',
:helper => true
:template_engine => 'erb'
}
class Error < Thor::Error
@@ -41,7 +42,7 @@ module Rails
#
def self.namespace(name=nil)
return super if name
@namespace ||= "#{base_name}:generators:#{generator_name}"
@namespace ||= super.sub(/_generator$/, '')
end
# Invoke a generator based on the value supplied by the user to the
@@ -207,7 +208,7 @@ module Rails
def self.generator_name
@generator_name ||= begin
klass_name = self.name.split('::').last
klass_name.gsub!(/Generator$/, '')
klass_name.sub!(/Generator$/, '')
klass_name.underscore
end
end

View File

@@ -2,12 +2,11 @@ Description:
Stubs out a new observer. Pass the observer name, either CamelCased or
under_scored, as an argument.
The generator creates an observer class in app/models and invokes the
configured test framework.
This generator only invokes your ORM and test framework generators.
Example:
`./script/generate observer Account`
creates an Account observer and invoke the test framework:
For ActiveRecord and TestUnit it creates:
Observer: app/models/account_observer.rb
TestUnit: test/unit/account_observer_test.rb

View File

@@ -1,13 +1,7 @@
module Rails
module Generators
class ObserverGenerator < NamedBase
check_class_collision :suffix => "Observer"
def create_observer_file
template 'observer.rb', File.join('app/models', class_path, "#{file_name}_observer.rb")
end
invoke_for :test_framework
invoke_for :orm, :test_framework
end
end
end

View File

@@ -1,5 +1,6 @@
require 'abstract_unit'
require 'generators/generators_test_helper'
require 'generators/active_record/observer/observer_generator'
require 'generators/rails/observer/observer_generator'
require 'generators/test_unit/observer/observer_generator'