Andreas
Andreas

Reputation: 2397

Why is application.rb different between Rails 4.1 and 4.0

If I run

rails new _4.1.0.beta1_ rails4.1app --skip-test-unit

I find this code in config/application.rb

# Pick the frameworks you want:
require "active_model/railtie"
require "active_record/railtie"
require "action_controller/railtie"
require "action_mailer/railtie"
require "action_view/railtie"
require "sprockets/railtie"
# require "rails/test_unit/railtie"

While if Create a Rails 4.0 app:

rails new _4.0.2_ rails4.0app --skip-test-unit

I get this in config/application.rb

# Pick the frameworks you want:
require "active_record/railtie"
require "action_controller/railtie"
require "action_mailer/railtie"
require "sprockets/railtie"
# require "rails/test_unit/railtie"

Doesnt rails 4.0.2 include active_model and action_view? I think it's related to introduction of Action Pack, but it's really bugging me that I don't know why the files are different.

Upvotes: 3

Views: 691

Answers (1)

marvelousNinja
marvelousNinja

Reputation: 1510

What I did is just opened that file's template in rails repo. Here's a link. You can read through history, or just clone repo and use gitk tool to do it a bit faster. Here's what I found:

Template for Rails 4.0:

<% if include_all_railties? -%>
require 'rails/all'
<% else -%>
# Pick the frameworks you want:
<%= comment_if :skip_active_record %>require "active_record/railtie"
require "action_controller/railtie"
require "action_mailer/railtie"
<%= comment_if :skip_sprockets %>require "sprockets/railtie"
<%= comment_if :skip_test_unit %>require "rails/test_unit/railtie"
<% end -%>

Template for Rails current Rails master:

<% if include_all_railties? -%>
require 'rails/all'
<% else -%>
# Pick the frameworks you want:
require "active_model/railtie"
<%= comment_if :skip_active_record %>require "active_record/railtie"
require "action_controller/railtie"
require "action_mailer/railtie"
<%= comment_if :skip_action_view %>require "action_view/railtie"
<%= comment_if :skip_sprockets %>require "sprockets/railtie"
<%= comment_if :skip_test_unit %>require "rails/test_unit/railtie"
<% end -%>

There's not much difference here. I believe it has to do something with dependency structure inside of Rails itself. For example, now ActionController doesn't state ActionView as a required part of it, so it should be loaded separately.

Upvotes: 1

Related Questions