Skip to content
This repository
tree: adff4a706a
Fetching contributors…

Octocat-spinner-32-eaf2f5

Cannot retrieve contributors at this time

file 138 lines (114 sloc) 3.484 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
require 'rails/ruby_version_check'

require 'pathname'

require 'active_support'
require 'active_support/core_ext/kernel/reporting'
require 'active_support/core_ext/array/extract_options'

require 'rails/application'
require 'rails/version'
require 'rails/deprecation'

require 'active_support/railtie'
require 'action_dispatch/railtie'

# For Ruby 1.9, UTF-8 is the default internal and external encoding.
silence_warnings do
  Encoding.default_external = Encoding::UTF_8
  Encoding.default_internal = Encoding::UTF_8
end

module Rails
  autoload :Info, 'rails/info'
  autoload :InfoController, 'rails/info_controller'
  autoload :Queueing, 'rails/queueing'

  class << self
    def application
      @application ||= nil
    end

    def application=(application)
      @application = application
    end

    # The Configuration instance used to configure the Rails environment
    def configuration
      application.config
    end

    # Rails.queue is the application's queue. You can push a job onto
    # the queue by:
    #
    # Rails.queue.push job
    #
    # A job is an object that responds to +run+. Queue consumers will
    # pop jobs off of the queue and invoke the queue's +run+ method.
    #
    # Note that depending on your queue implementation, jobs may not
    # be executed in the same process as they were created in, and
    # are never executed in the same thread as they were created in.
    #
    # If necessary, a queue implementation may need to serialize your
    # job for distribution to another process. The documentation of
    # your queue will specify the requirements for that serialization.
    def queue
      application.queue
    end

    def initialize!
      application.initialize!
    end

    def initialized?
      application.initialized?
    end

    def logger
      @logger ||= nil
    end

    def logger=(logger)
      @logger = logger
    end

    def backtrace_cleaner
      @backtrace_cleaner ||= begin
        # Relies on Active Support, 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
      application && application.config.root
    end

    def env
      @_env ||= ActiveSupport::StringInquirer.new(ENV["RAILS_ENV"] || ENV["RACK_ENV"] || "development")
    end

    def env=(environment)
      @_env = ActiveSupport::StringInquirer.new(environment)
    end

    def cache
      @cache ||= nil
    end

    def cache=(cache)
      @cache = cache
    end

    # Returns all rails groups for loading based on:
    #
    # * The Rails environment;
    # * The environment variable RAILS_GROUPS;
    # * The optional envs given as argument and the hash with group dependencies;
    #
    # == Examples
    #
    # groups :assets => [:development, :test]
    #
    # # Returns
    # # => [:default, :development, :assets] for Rails.env == "development"
    # # => [:default, :production] for Rails.env == "production"
    #
    def groups(*groups)
      hash = groups.extract_options!
      env = Rails.env
      groups.unshift(:default, env)
      groups.concat ENV["RAILS_GROUPS"].to_s.split(",")
      groups.concat hash.map { |k,v| k if v.map(&:to_s).include?(env) }
      groups.compact!
      groups.uniq!
      groups
    end

    def version
      VERSION::STRING
    end

    def public_path
      application && application.paths["public"].first
    end
  end
end
Something went wrong with that request. Please try again.