Add table_name_prefix to Engine's namespace automatically

This commit is contained in:
Piotr Sarnacki 2010-08-03 22:36:12 +02:00
parent a7c6fe4c2a
commit db8a864e69
3 changed files with 16 additions and 1 deletions

@ -201,11 +201,19 @@ def endpoint(endpoint = nil)
end
def namespace(mod)
# TODO: extract that into a module
engine_name(generate_railtie_name(mod))
_railtie = self
name = engine_name
mod.singleton_class.instance_eval do
define_method(:_railtie) do
_railtie
end
define_method(:table_name_prefix) do
"#{name}_"
end
end
end
end

@ -167,8 +167,13 @@ def abstract_railtie?
def railtie_name(name = nil)
@railtie_name = name.to_s if name
@railtie_name ||= ActiveSupport::Inflector.underscore(self.name).gsub("/", "_")
@railtie_name ||= generate_railtie_name(self.name)
end
protected
def generate_railtie_name(class_or_module)
ActiveSupport::Inflector.underscore(class_or_module).gsub("/", "_")
end
end
delegate :railtie_name, :to => "self.class"

@ -408,6 +408,8 @@ class MyMailer < ActionMailer::Base
boot_rails
assert_equal "bukkits_", Bukkits.table_name_prefix
assert_equal "bukkits", Bukkits::Engine.engine_name
assert_equal Bukkits._railtie, Bukkits::Engine
assert ::Bukkits::MyMailer.method_defined?(:foo_path)
assert !::Bukkits::MyMailer.method_defined?(:bar_path)