diff options
author | Yehuda Katz + Carl Lerche <ykatz+clerche@engineyard.com> | 2009-06-23 16:10:43 -0700 |
---|---|---|
committer | Yehuda Katz + Carl Lerche <ykatz+clerche@engineyard.com> | 2009-06-23 16:10:43 -0700 |
commit | 3aad4d7fbec6b0881733d3a9b2aff756f775ad35 (patch) | |
tree | 277565cb5ceb4018ad5db8b604b86d353e92cd0b /railties/lib/rails/core.rb | |
parent | ce9d9fda77e6b8ca0ac64e528af1892a5d508636 (diff) | |
download | rails-3aad4d7fbec6b0881733d3a9b2aff756f775ad35.tar.gz rails-3aad4d7fbec6b0881733d3a9b2aff756f775ad35.tar.bz2 rails-3aad4d7fbec6b0881733d3a9b2aff756f775ad35.zip |
Separate Rails module methods, the config object, and the initializer into separate files.
Diffstat (limited to 'railties/lib/rails/core.rb')
-rw-r--r-- | railties/lib/rails/core.rb | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/railties/lib/rails/core.rb b/railties/lib/rails/core.rb new file mode 100644 index 0000000000..33695a27b9 --- /dev/null +++ b/railties/lib/rails/core.rb @@ -0,0 +1,97 @@ +module Rails + # Needs to be duplicated from Active Support since its needed before Active + # Support is available. Here both Options and Hash are namespaced to prevent + # conflicts with other implementations AND with the classes residing in Active Support. + # --- + # TODO: w0t? + class << self + # The Configuration instance used to configure the Rails environment + def configuration + @@configuration + end + + def configuration=(configuration) + @@configuration = configuration + end + + def initialized? + @initialized || false + end + + def initialized=(initialized) + @initialized ||= initialized + end + + def logger + if defined?(RAILS_DEFAULT_LOGGER) + RAILS_DEFAULT_LOGGER + else + nil + end + end + + def backtrace_cleaner + @@backtrace_cleaner ||= begin + # Relies on ActiveSupport, so we have to lazy load to postpone definition until AS has been loaded + require 'rails/backtrace_cleaner' + Rails::BacktraceCleaner.new + end + end + + def root + Pathname.new(RAILS_ROOT) if defined?(RAILS_ROOT) + end + + def env + @_env ||= ActiveSupport::StringInquirer.new(RAILS_ENV) + end + + def cache + RAILS_CACHE + end + + def version + VERSION::STRING + end + + def public_path + @@public_path ||= self.root ? File.join(self.root, "public") : "public" + end + + def public_path=(path) + @@public_path = path + end + end + + class OrderedOptions < Array #:nodoc: + def []=(key, value) + key = key.to_sym + + if pair = find_pair(key) + pair.pop + pair << value + else + self << [key, value] + end + end + + def [](key) + pair = find_pair(key.to_sym) + pair ? pair.last : nil + end + + def method_missing(name, *args) + if name.to_s =~ /(.*)=$/ + self[$1.to_sym] = args.first + else + self[name] + end + end + + private + def find_pair(key) + self.each { |i| return i if i.first == key } + return false + end + end +end
\ No newline at end of file |