Created
June 6, 2014 20:47
-
-
Save cnruby/67fadb2d2b9c9f6616cc to your computer and use it in GitHub Desktop.
《??》Where is the default “Welcome Aboard” page located in my app?
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Since Rails 4, the "Welcome aboard" page is no longer located in public/index.html. It is - as you've already detected - located inside one of the Rails gems. | |
So you already answered the question yourself; the "Welcome aboard" page is - in your case - located at /Users/7stud/.rvm/gems/ruby-2.0.0-p247@railstutorial_rails_4_0/gems/railties-4.0.0/lib/rails/templates/rails/welcome/index.html.erb | |
To get rid of it, following the instructions on the page. Basically they are: | |
Create a controller | |
Add a root route in config/routes.rb to route to that newly created controller. | |
As for how the request to your application ends up at a controller inside railties, let's dig into the gem: Inside Rails::Application::Finisher we find this: | |
initializer :add_builtin_route do |app| | |
if Rails.env.development? | |
app.routes.append do | |
get '/rails/info/properties' => "rails/info#properties" | |
get '/rails/info/routes' => "rails/info#routes" | |
get '/rails/info' => "rails/info#index" | |
get '/' => "rails/welcome#index" | |
end | |
end | |
end | |
This block adds a few routes to your application when running in development mode - one of those is the route to the "Welcome aboard" action: get '/' => "rails/welcome#index" | |
This - like any other initializer - is done when your start your application server (running rails server or however you do it). In the case of Finisher, all its initializer are run after all other initializers are run. | |
Note how the routes are appended so that they are appear last in the Routeset. This, combined with the fact that Rails uses the first matching route it finds, ensures those default routes will only get used if no other route is defined. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment