diff options
Diffstat (limited to 'railties/lib/rails/railtie/configurable.rb')
-rw-r--r-- | railties/lib/rails/railtie/configurable.rb | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/railties/lib/rails/railtie/configurable.rb b/railties/lib/rails/railtie/configurable.rb new file mode 100644 index 0000000000..2a8295426e --- /dev/null +++ b/railties/lib/rails/railtie/configurable.rb @@ -0,0 +1,35 @@ +require "active_support/concern" + +module Rails + class Railtie + module Configurable + extend ActiveSupport::Concern + + module ClassMethods + delegate :config, to: :instance + + def inherited(base) + raise "You cannot inherit from a #{superclass.name} child" + end + + def instance + @instance ||= new + end + + def respond_to?(*args) + super || instance.respond_to?(*args) + end + + def configure(&block) + class_eval(&block) + end + + private + + def method_missing(*args, &block) + instance.send(*args, &block) + end + end + end + end +end |