diff options
author | Emilio Tagua <miloops@gmail.com> | 2009-06-30 19:34:26 -0300 |
---|---|---|
committer | Emilio Tagua <miloops@gmail.com> | 2009-06-30 19:34:26 -0300 |
commit | 9c70442534c7754eac3738e0ddf11446b01c4f9e (patch) | |
tree | 7af8614ad91e7400735a6be1b36dca704d87e3b6 /railties/lib/rails/core.rb | |
parent | 50f73bd39c729b4ba4b5215b608e5767ab0aa7a1 (diff) | |
parent | b5dfdc714fab7d2836e0a979ca88b4a17db9ec06 (diff) | |
download | rails-9c70442534c7754eac3738e0ddf11446b01c4f9e.tar.gz rails-9c70442534c7754eac3738e0ddf11446b01c4f9e.tar.bz2 rails-9c70442534c7754eac3738e0ddf11446b01c4f9e.zip |
Merge commit 'rails/master'
Conflicts:
activerecord/test/cases/adapter_test.rb
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 |