lib/rails-env.rb in rails-env-1.0.0 vs lib/rails-env.rb in rails-env-1.0.1
- old
+ new
@@ -5,12 +5,37 @@
initializer 'rails-env' do
Rails.env.extend(Extension)
end
end
+ def self.propagate_configuration!
+ propagate(:action_mailer, '::ActionMailer::Base')
+ propagate(:active_record, '::ActiveRecord::Base')
+ propagate(:active_job, '::ActiveJob::Base')
+ propagate(:time_zone, '::Time', :zone)
+ propagate(:i18n, '::I18n')
+ end
+
+ def self.propagate(options_name, target_name, target_property = nil)
+ return unless Object.const_defined?(target_name)
+ return unless Rails.configuration.respond_to?(options_name)
+
+ target = Object.const_get(target_name)
+ options = Rails.configuration.public_send(options_name)
+
+ if options.kind_of?(Enumerable)
+ options.each do |key, value|
+ target.public_send("#{key}=", value) if target.respond_to?("#{key}=")
+ end
+ else
+ target.public_send("#{target_property}=", options)
+ end
+ end
+
module Extension
def on(*envs, &block)
env_matched = envs.include?(:any) || envs.include?(Rails.env.to_sym)
Rails.application.configure(&block) if env_matched
+ RailsEnv.propagate_configuration!
end
end
end