2010-06-11 14:02:47 -04:00
|
|
|
require 'rails/ruby_version_check'
|
|
|
|
|
2010-01-17 06:41:55 -05:00
|
|
|
require 'pathname'
|
2009-12-31 15:28:48 -05:00
|
|
|
|
|
|
|
require 'active_support'
|
|
|
|
require 'active_support/core_ext/kernel/reporting'
|
2011-07-10 07:35:06 -04:00
|
|
|
require 'active_support/core_ext/array/extract_options'
|
2009-12-31 15:28:48 -05:00
|
|
|
|
2010-01-21 17:14:20 -05:00
|
|
|
require 'rails/application'
|
2009-12-31 15:28:48 -05:00
|
|
|
require 'rails/version'
|
2012-01-17 11:53:09 -05:00
|
|
|
require 'rails/deprecation'
|
2009-12-31 15:28:48 -05:00
|
|
|
|
2010-01-24 19:06:12 -05:00
|
|
|
require 'active_support/railtie'
|
2010-01-17 06:41:55 -05:00
|
|
|
require 'action_dispatch/railtie'
|
|
|
|
|
2009-12-31 15:28:48 -05:00
|
|
|
# For Ruby 1.9, UTF-8 is the default internal and external encoding.
|
2011-12-20 11:58:45 -05:00
|
|
|
silence_warnings do
|
|
|
|
Encoding.default_external = Encoding::UTF_8
|
|
|
|
Encoding.default_internal = Encoding::UTF_8
|
2009-12-31 15:28:48 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
module Rails
|
2010-03-20 15:03:43 -04:00
|
|
|
autoload :Info, 'rails/info'
|
Use Rails to Render Default Index Page
This is an alternative implementation to #7771 thanks to the advice of @spastorino
Rails is a dynamic framework that serves a static index.html by default. One of my first questions ever on IRC was solved by simply deleting my public/index.html file. This file is a source of confusion when starting as it over-rides any set "root" in the routes yet it itself is not listed in the routes. By making the page dynamic by default we can eliminate this confusion.
This PR moves the static index page to an internal controller/route/view similar to `rails/info`. When someone starts a rails server, if no root is defined, this route will take over and the "dynamic" index page from rails/welcome_controller will be rendered. These routes are only added in development. If a developer defines a root in their routes, it automatically takes precedence over this route and will be rendered, with no deleting of files required.
In addition to removing this source of confusion for new devs, we can now use Rails view helpers to build and render this page. While not the primary intent, the added value of "dogfooding" should not be under-estimated.
The prior PR #7771 had push-back since it introduced developer facing files. This PR solves all of the same problems, but does not have any new developer facing files (it actually removes one).
cc/ @wsouto, @dickeyxxx, @tyre, @ryanb, @josevalim, @maxim, @subdigital, @steveklabnik
ATP Railties and Actionpack.
2012-12-05 14:02:51 -05:00
|
|
|
autoload :InfoController, 'rails/info_controller'
|
|
|
|
autoload :WelcomeController, 'rails/welcome_controller'
|
2010-03-20 15:03:43 -04:00
|
|
|
|
2009-12-31 15:28:48 -05:00
|
|
|
class << self
|
2012-12-01 15:41:54 -05:00
|
|
|
attr_accessor :application, :cache, :logger
|
2009-12-31 15:28:48 -05:00
|
|
|
|
|
|
|
# The Configuration instance used to configure the Rails environment
|
|
|
|
def configuration
|
2010-01-12 06:52:09 -05:00
|
|
|
application.config
|
2009-12-31 15:28:48 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
def initialize!
|
|
|
|
application.initialize!
|
|
|
|
end
|
|
|
|
|
|
|
|
def initialized?
|
2011-08-15 04:11:11 -04:00
|
|
|
application.initialized?
|
2009-12-31 15:28:48 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
def backtrace_cleaner
|
2012-04-06 00:59:57 -04:00
|
|
|
@backtrace_cleaner ||= begin
|
2010-06-14 17:21:53 -04:00
|
|
|
# Relies on Active Support, so we have to lazy load to postpone definition until AS has been loaded
|
2009-12-31 15:28:48 -05:00
|
|
|
require 'rails/backtrace_cleaner'
|
|
|
|
Rails::BacktraceCleaner.new
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def root
|
|
|
|
application && application.config.root
|
|
|
|
end
|
|
|
|
|
|
|
|
def env
|
2012-12-20 17:40:02 -05:00
|
|
|
@_env ||= ActiveSupport::StringInquirer.new(ENV["RAILS_ENV"] || ENV["RACK_ENV"] || "development")
|
2009-12-31 15:28:48 -05:00
|
|
|
end
|
|
|
|
|
2010-04-08 01:52:35 -04:00
|
|
|
def env=(environment)
|
|
|
|
@_env = ActiveSupport::StringInquirer.new(environment)
|
|
|
|
end
|
|
|
|
|
2011-06-21 07:02:47 -04:00
|
|
|
# Returns all rails groups for loading based on:
|
|
|
|
#
|
|
|
|
# * The Rails environment;
|
|
|
|
# * The environment variable RAILS_GROUPS;
|
2011-07-10 07:35:06 -04:00
|
|
|
# * The optional envs given as argument and the hash with group dependencies;
|
2011-06-21 07:02:47 -04:00
|
|
|
#
|
2012-10-14 06:03:39 -04:00
|
|
|
# groups assets: [:development, :test]
|
2011-06-21 07:02:47 -04:00
|
|
|
#
|
|
|
|
# # Returns
|
|
|
|
# # => [:default, :development, :assets] for Rails.env == "development"
|
|
|
|
# # => [:default, :production] for Rails.env == "production"
|
2011-07-10 07:35:06 -04:00
|
|
|
def groups(*groups)
|
|
|
|
hash = groups.extract_options!
|
2011-06-21 07:02:47 -04:00
|
|
|
env = Rails.env
|
2011-07-10 07:35:06 -04:00
|
|
|
groups.unshift(:default, env)
|
2011-06-21 07:02:47 -04:00
|
|
|
groups.concat ENV["RAILS_GROUPS"].to_s.split(",")
|
|
|
|
groups.concat hash.map { |k,v| k if v.map(&:to_s).include?(env) }
|
|
|
|
groups.compact!
|
2011-07-10 07:35:06 -04:00
|
|
|
groups.uniq!
|
2011-06-21 07:02:47 -04:00
|
|
|
groups
|
|
|
|
end
|
|
|
|
|
2009-12-31 15:28:48 -05:00
|
|
|
def version
|
|
|
|
VERSION::STRING
|
|
|
|
end
|
|
|
|
|
|
|
|
def public_path
|
2012-10-02 20:44:02 -04:00
|
|
|
application && Pathname.new(application.paths["public"].first)
|
2009-12-31 15:28:48 -05:00
|
|
|
end
|
2009-12-22 20:03:23 -05:00
|
|
|
end
|
2009-12-31 15:28:48 -05:00
|
|
|
end
|