aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--railties/lib/rails_generator/generators/components/observer/USAGE15
-rw-r--r--railties/lib/rails_generator/generators/components/observer/observer_generator.rb16
-rw-r--r--railties/lib/rails_generator/generators/components/observer/templates/observer.rb2
-rw-r--r--railties/lib/rails_generator/generators/components/observer/templates/unit_test.rb10
4 files changed, 43 insertions, 0 deletions
diff --git a/railties/lib/rails_generator/generators/components/observer/USAGE b/railties/lib/rails_generator/generators/components/observer/USAGE
new file mode 100644
index 0000000000..8abaf3678f
--- /dev/null
+++ b/railties/lib/rails_generator/generators/components/observer/USAGE
@@ -0,0 +1,15 @@
+Description:
+ The observer generator creates stubs for a new observer.
+
+ The generator takes a observer name as its argument. The observer name may be
+ given in CamelCase or under_score and should not be suffixed with 'Observer'.
+
+ The generator creates a observer class in app/models and a test suite in
+ test/unit.
+
+Example:
+ ./script/generate observer Account
+
+ This will create an Account observer:
+ Observer: app/models/account_observer.rb
+ Test: test/unit/account_observer_test.rb
diff --git a/railties/lib/rails_generator/generators/components/observer/observer_generator.rb b/railties/lib/rails_generator/generators/components/observer/observer_generator.rb
new file mode 100644
index 0000000000..18fbd32b75
--- /dev/null
+++ b/railties/lib/rails_generator/generators/components/observer/observer_generator.rb
@@ -0,0 +1,16 @@
+class ObserverGenerator < Rails::Generator::NamedBase
+ def manifest
+ record do |m|
+ # Check for class naming collisions.
+ m.class_collisions class_path, "#{class_name}Observer", "#{class_name}ObserverTest"
+
+ # Observer, and test directories.
+ m.directory File.join('app/models', class_path)
+ m.directory File.join('test/unit', class_path)
+
+ # Observer class and unit test fixtures.
+ m.template 'observer.rb', File.join('app/models', class_path, "#{file_name}_observer.rb")
+ m.template 'unit_test.rb', File.join('test/unit', class_path, "#{file_name}_observer_test.rb")
+ end
+ end
+end
diff --git a/railties/lib/rails_generator/generators/components/observer/templates/observer.rb b/railties/lib/rails_generator/generators/components/observer/templates/observer.rb
new file mode 100644
index 0000000000..b9a3004161
--- /dev/null
+++ b/railties/lib/rails_generator/generators/components/observer/templates/observer.rb
@@ -0,0 +1,2 @@
+class <%= class_name %>Observer < ActiveRecord::Observer
+end
diff --git a/railties/lib/rails_generator/generators/components/observer/templates/unit_test.rb b/railties/lib/rails_generator/generators/components/observer/templates/unit_test.rb
new file mode 100644
index 0000000000..68a8cf065b
--- /dev/null
+++ b/railties/lib/rails_generator/generators/components/observer/templates/unit_test.rb
@@ -0,0 +1,10 @@
+require File.dirname(__FILE__) + '<%= '/..' * class_nesting_depth %>/../test_helper'
+
+class <%= class_name %>ObserverTest < Test::Unit::TestCase
+ fixtures :<%= table_name %>
+
+ # Replace this with your real tests.
+ def test_truth
+ assert true
+ end
+end