Skip to content

Commit ab6e0dd

Browse files
committed
add observer generator
1 parent 0ca44cd commit ab6e0dd

File tree

6 files changed

+55
-1
lines changed

6 files changed

+55
-1
lines changed

Gemfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ gem "rspec", "~> 2.14.1"
66
gem "pry", "~> 0.9.12.6"
77
gem "coveralls", require: false
88
gem "codeclimate-test-reporter"
9+
gem "ammeter", "~> 1.0.0"
10+
gem "railties"
911

1012
# Specify your gem's dependencies in mongoid-observers.gemspec
1113
gemspec
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# encoding: utf-8
2+
require "rails/generators"
3+
require "rails/generators/mongoid_generator"
4+
5+
module Mongoid
6+
module Generators
7+
class ObserverGenerator < Base
8+
check_class_collision suffix: "Observer"
9+
10+
def self.source_root
11+
File.expand_path("../templates", __FILE__)
12+
end
13+
14+
def create_observer_file
15+
template "observer.rb.tt", File.join("app/models", class_path, "#{file_name}_observer.rb")
16+
end
17+
18+
hook_for :test_framework
19+
end
20+
end
21+
end
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<% module_namespacing do -%>
2+
class <%= class_name %>Observer < Mongoid::Observer
3+
end
4+
<% end -%>

lib/mongoid/observers/railtie.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ class Railtie < ::Rails::Railtie
66
initializer "mongoid.observer" do |app|
77
ActiveSupport.on_load(:mongoid) do
88
if app.config.respond_to?(:mongoid)
9-
Mongoid.observers = app.config.mongoid.observers
9+
::Mongoid.observers = app.config.mongoid.observers
1010
end
1111
end
1212
end
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
require "spec_helper"
2+
3+
# Generators are not automatically loaded by Rails
4+
require "generators/mongoid/observer/observer_generator"
5+
6+
describe Mongoid::Generators::ObserverGenerator do
7+
# Tell the generator where to put its output (what it thinks of as Rails.root)
8+
destination File.expand_path("../../../../../spec/tmp", __FILE__)
9+
10+
before do
11+
prepare_destination
12+
end
13+
14+
it "observer without namespace" do
15+
run_generator %w(product)
16+
expect(file("app/models/product_observer.rb")).to exist
17+
expect(file("app/models/product_observer.rb")).to contain(/class ProductObserver < Mongoid::Observer/)
18+
end
19+
20+
it "observer with namespace" do
21+
run_generator %w(admin/account)
22+
expect(file("app/models/admin/account_observer.rb")).to exist
23+
expect(file("app/models/admin/account_observer.rb")).to contain(/class Admin::AccountObserver < Mongoid::Observer/)
24+
end
25+
end

spec/spec_helper.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@
1616
$LOAD_PATH.unshift(MODELS)
1717

1818
require "pry"
19+
require "rails"
1920
require "mongoid-observers"
21+
require "ammeter/init"
2022

2123
# mongoid connection
2224
Mongoid.load! File.dirname(__FILE__) + "/config/mongoid.yml", :test

0 commit comments

Comments
 (0)