rails 4.1.16 → 4.2.0.beta1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -3
  3. data/guides/CHANGELOG.md +13 -102
  4. data/guides/Rakefile +2 -2
  5. data/guides/assets/javascripts/guides.js +6 -0
  6. data/guides/assets/stylesheets/main.css +4 -1
  7. data/guides/bug_report_templates/action_controller_gem.rb +2 -2
  8. data/guides/bug_report_templates/action_controller_master.rb +5 -2
  9. data/guides/bug_report_templates/active_record_master.rb +2 -0
  10. data/guides/rails_guides.rb +2 -2
  11. data/guides/rails_guides/helpers.rb +1 -1
  12. data/guides/rails_guides/levenshtein.rb +29 -21
  13. data/guides/rails_guides/markdown.rb +6 -7
  14. data/guides/rails_guides/markdown/renderer.rb +1 -1
  15. data/guides/source/2_3_release_notes.md +3 -3
  16. data/guides/source/3_0_release_notes.md +4 -4
  17. data/guides/source/3_1_release_notes.md +2 -2
  18. data/guides/source/3_2_release_notes.md +2 -2
  19. data/guides/source/4_1_release_notes.md +8 -9
  20. data/guides/source/4_2_release_notes.md +572 -0
  21. data/guides/source/_license.html.erb +1 -1
  22. data/guides/source/_welcome.html.erb +2 -8
  23. data/guides/source/action_controller_overview.md +79 -7
  24. data/guides/source/action_mailer_basics.md +36 -11
  25. data/guides/source/action_view_overview.md +138 -119
  26. data/guides/source/active_job_basics.md +253 -0
  27. data/guides/source/active_model_basics.md +23 -0
  28. data/guides/source/active_record_basics.md +16 -15
  29. data/guides/source/active_record_callbacks.md +12 -9
  30. data/guides/source/{migrations.md → active_record_migrations.md} +90 -217
  31. data/guides/source/active_record_postgresql.md +437 -0
  32. data/guides/source/active_record_querying.md +261 -261
  33. data/guides/source/active_record_validations.md +7 -7
  34. data/guides/source/active_support_core_extensions.md +105 -44
  35. data/guides/source/active_support_instrumentation.md +3 -2
  36. data/guides/source/api_documentation_guidelines.md +62 -16
  37. data/guides/source/asset_pipeline.md +58 -46
  38. data/guides/source/association_basics.md +47 -38
  39. data/guides/source/caching_with_rails.md +31 -6
  40. data/guides/source/command_line.md +56 -25
  41. data/guides/source/configuring.md +98 -19
  42. data/guides/source/contributing_to_ruby_on_rails.md +174 -111
  43. data/guides/source/credits.html.erb +1 -1
  44. data/guides/source/debugging_rails_applications.md +438 -284
  45. data/guides/source/development_dependencies_install.md +17 -4
  46. data/guides/source/documents.yaml +11 -7
  47. data/guides/source/engines.md +192 -203
  48. data/guides/source/form_helpers.md +54 -45
  49. data/guides/source/generators.md +20 -11
  50. data/guides/source/getting_started.md +330 -191
  51. data/guides/source/i18n.md +92 -62
  52. data/guides/source/index.html.erb +1 -0
  53. data/guides/source/initialization.md +108 -59
  54. data/guides/source/layout.html.erb +1 -4
  55. data/guides/source/layouts_and_rendering.md +24 -23
  56. data/guides/source/nested_model_forms.md +3 -3
  57. data/guides/source/plugins.md +26 -26
  58. data/guides/source/rails_application_templates.md +21 -3
  59. data/guides/source/rails_on_rack.md +1 -1
  60. data/guides/source/routing.md +97 -71
  61. data/guides/source/ruby_on_rails_guides_guidelines.md +10 -12
  62. data/guides/source/security.md +39 -33
  63. data/guides/source/testing.md +111 -108
  64. data/guides/source/upgrading_ruby_on_rails.md +131 -14
  65. data/guides/source/working_with_javascript_in_rails.md +18 -16
  66. data/guides/w3c_validator.rb +2 -0
  67. metadata +37 -94
  68. data/guides/bug_report_templates/generic_gem.rb +0 -15
  69. data/guides/bug_report_templates/generic_master.rb +0 -26
  70. data/guides/code/getting_started/Gemfile +0 -40
  71. data/guides/code/getting_started/Gemfile.lock +0 -125
  72. data/guides/code/getting_started/README.rdoc +0 -28
  73. data/guides/code/getting_started/Rakefile +0 -6
  74. data/guides/code/getting_started/app/assets/javascripts/application.js +0 -15
  75. data/guides/code/getting_started/app/assets/javascripts/comments.js.coffee +0 -3
  76. data/guides/code/getting_started/app/assets/javascripts/posts.js.coffee +0 -3
  77. data/guides/code/getting_started/app/assets/javascripts/welcome.js.coffee +0 -3
  78. data/guides/code/getting_started/app/assets/stylesheets/application.css +0 -13
  79. data/guides/code/getting_started/app/assets/stylesheets/comments.css.scss +0 -3
  80. data/guides/code/getting_started/app/assets/stylesheets/posts.css.scss +0 -3
  81. data/guides/code/getting_started/app/assets/stylesheets/welcome.css.scss +0 -3
  82. data/guides/code/getting_started/app/controllers/application_controller.rb +0 -5
  83. data/guides/code/getting_started/app/controllers/comments_controller.rb +0 -23
  84. data/guides/code/getting_started/app/controllers/posts_controller.rb +0 -53
  85. data/guides/code/getting_started/app/controllers/welcome_controller.rb +0 -4
  86. data/guides/code/getting_started/app/helpers/application_helper.rb +0 -2
  87. data/guides/code/getting_started/app/helpers/comments_helper.rb +0 -2
  88. data/guides/code/getting_started/app/helpers/posts_helper.rb +0 -2
  89. data/guides/code/getting_started/app/helpers/welcome_helper.rb +0 -2
  90. data/guides/code/getting_started/app/models/comment.rb +0 -3
  91. data/guides/code/getting_started/app/models/post.rb +0 -7
  92. data/guides/code/getting_started/app/views/comments/_comment.html.erb +0 -15
  93. data/guides/code/getting_started/app/views/comments/_form.html.erb +0 -13
  94. data/guides/code/getting_started/app/views/layouts/application.html.erb +0 -14
  95. data/guides/code/getting_started/app/views/posts/_form.html.erb +0 -27
  96. data/guides/code/getting_started/app/views/posts/edit.html.erb +0 -5
  97. data/guides/code/getting_started/app/views/posts/index.html.erb +0 -21
  98. data/guides/code/getting_started/app/views/posts/new.html.erb +0 -5
  99. data/guides/code/getting_started/app/views/posts/show.html.erb +0 -18
  100. data/guides/code/getting_started/app/views/welcome/index.html.erb +0 -4
  101. data/guides/code/getting_started/bin/bundle +0 -4
  102. data/guides/code/getting_started/bin/rails +0 -4
  103. data/guides/code/getting_started/bin/rake +0 -4
  104. data/guides/code/getting_started/config.ru +0 -4
  105. data/guides/code/getting_started/config/application.rb +0 -18
  106. data/guides/code/getting_started/config/boot.rb +0 -4
  107. data/guides/code/getting_started/config/database.yml +0 -25
  108. data/guides/code/getting_started/config/environment.rb +0 -5
  109. data/guides/code/getting_started/config/environments/development.rb +0 -30
  110. data/guides/code/getting_started/config/environments/production.rb +0 -80
  111. data/guides/code/getting_started/config/environments/test.rb +0 -36
  112. data/guides/code/getting_started/config/initializers/backtrace_silencers.rb +0 -7
  113. data/guides/code/getting_started/config/initializers/filter_parameter_logging.rb +0 -4
  114. data/guides/code/getting_started/config/initializers/inflections.rb +0 -16
  115. data/guides/code/getting_started/config/initializers/locale.rb +0 -9
  116. data/guides/code/getting_started/config/initializers/mime_types.rb +0 -5
  117. data/guides/code/getting_started/config/initializers/secret_token.rb +0 -12
  118. data/guides/code/getting_started/config/initializers/session_store.rb +0 -3
  119. data/guides/code/getting_started/config/initializers/wrap_parameters.rb +0 -14
  120. data/guides/code/getting_started/config/locales/en.yml +0 -23
  121. data/guides/code/getting_started/config/routes.rb +0 -7
  122. data/guides/code/getting_started/db/migrate/20130122042648_create_posts.rb +0 -10
  123. data/guides/code/getting_started/db/migrate/20130122045842_create_comments.rb +0 -11
  124. data/guides/code/getting_started/db/schema.rb +0 -33
  125. data/guides/code/getting_started/db/seeds.rb +0 -7
  126. data/guides/code/getting_started/public/404.html +0 -60
  127. data/guides/code/getting_started/public/422.html +0 -60
  128. data/guides/code/getting_started/public/500.html +0 -59
  129. data/guides/code/getting_started/public/favicon.ico +0 -0
  130. data/guides/code/getting_started/public/robots.txt +0 -5
  131. data/guides/code/getting_started/test/controllers/comments_controller_test.rb +0 -7
  132. data/guides/code/getting_started/test/controllers/posts_controller_test.rb +0 -7
  133. data/guides/code/getting_started/test/controllers/welcome_controller_test.rb +0 -9
  134. data/guides/code/getting_started/test/fixtures/comments.yml +0 -11
  135. data/guides/code/getting_started/test/fixtures/posts.yml +0 -9
  136. data/guides/code/getting_started/test/helpers/comments_helper_test.rb +0 -4
  137. data/guides/code/getting_started/test/helpers/posts_helper_test.rb +0 -4
  138. data/guides/code/getting_started/test/helpers/welcome_helper_test.rb +0 -4
  139. data/guides/code/getting_started/test/models/comment_test.rb +0 -7
  140. data/guides/code/getting_started/test/models/post_test.rb +0 -7
  141. data/guides/code/getting_started/test/test_helper.rb +0 -12
@@ -187,7 +187,7 @@ Action Pack
187
187
 
188
188
  Rails will use `layouts/single_car` when a request comes in `:show` action, and use `layouts/application` (or `layouts/cars`, if exists) when a request comes in for any other actions.
189
189
 
190
- * `form\_for` is changed to use `#{action}\_#{as}` as the css class and id if `:as` option is provided. Earlier versions used `#{as}\_#{action}`.
190
+ * `form_for` is changed to use `#{action}_#{as}` as the css class and id if `:as` option is provided. Earlier versions used `#{as}_#{action}`.
191
191
 
192
192
  * `ActionController::ParamsWrapper` on Active Record models now only wrap `attr_accessible` attributes if they were set. If not, only the attributes returned by the class method `attribute_names` will be wrapped. This fixes the wrapping of nested attributes by adding them to `attr_accessible`.
193
193
 
@@ -562,4 +562,4 @@ Credits
562
562
 
563
563
  See the [full list of contributors to Rails](http://contributors.rubyonrails.org/) for the many people who spent many hours making Rails, the stable and robust framework it is. Kudos to all of them.
564
564
 
565
- Rails 3.2 Release Notes were compiled by [Vijay Dev](https://github.com/vijaydev.)
565
+ Rails 3.2 Release Notes were compiled by [Vijay Dev](https://github.com/vijaydev).
@@ -8,10 +8,10 @@ Highlights in Rails 4.1:
8
8
  * Action Pack variants
9
9
  * Action Mailer previews
10
10
 
11
- These release notes cover only the major changes. To learn about various bug
12
- fixes and changes, please refer to the change logs or check out the [list of
13
- commits](https://github.com/rails/rails/commits/4-1-stable) in the main Rails
14
- repository on GitHub.
11
+ These release notes cover only the major changes. To know about various bug
12
+ fixes and changes, please refer to the change logs or check out the
13
+ [list of commits](https://github.com/rails/rails/commits/master) in the main
14
+ Rails repository on GitHub.
15
15
 
16
16
  --------------------------------------------------------------------------------
17
17
 
@@ -396,7 +396,7 @@ for detailed changes.
396
396
  * Removed deprecated `scope` use without passing a callable object.
397
397
 
398
398
  * Removed deprecated `transaction_joinable=` in favor of `begin_transaction`
399
- with `d:joinable` option.
399
+ with a `:joinable` option.
400
400
 
401
401
  * Removed deprecated `decrement_open_transactions`.
402
402
 
@@ -465,10 +465,10 @@ for detailed changes.
465
465
 
466
466
  ### Notable changes
467
467
 
468
- * Default scopes are no longer overriden by chained conditions.
468
+ * Default scopes are no longer overridden by chained conditions.
469
469
 
470
470
  Before this change when you defined a `default_scope` in a model
471
- it was overriden by chained conditions in the same field. Now it
471
+ it was overridden by chained conditions in the same field. Now it
472
472
  is merged like any other scope. [More Details](upgrading_ruby_on_rails.html#changes-on-default-scopes).
473
473
 
474
474
  * Added `ActiveRecord::Base.to_param` for convenient "pretty" URLs derived from
@@ -555,13 +555,12 @@ for detailed changes.
555
555
  ([Pull Request](https://github.com/rails/rails/pull/13350))
556
556
 
557
557
  * Make `change_column_null`
558
- revertable. ([Commit](https://github.com/rails/rails/commit/724509a9d5322ff502aefa90dd282ba33a281a96))
558
+ revertible. ([Commit](https://github.com/rails/rails/commit/724509a9d5322ff502aefa90dd282ba33a281a96))
559
559
 
560
560
  * Added a flag to disable schema dump after migration. This is set to `false`
561
561
  by default in the production environment for new applications.
562
562
  ([Pull Request](https://github.com/rails/rails/pull/13948))
563
563
 
564
-
565
564
  Active Model
566
565
  ------------
567
566
 
@@ -0,0 +1,572 @@
1
+ Ruby on Rails 4.2 Release Notes
2
+ ===============================
3
+
4
+ Highlights in Rails 4.2:
5
+
6
+ * Active Job, Action Mailer #deliver_later
7
+ * Adequate Record
8
+ * Web Console
9
+ * Foreign key support
10
+
11
+ These release notes cover only the major changes. To know about various bug
12
+ fixes and changes, please refer to the change logs or check out the
13
+ [list of commits](https://github.com/rails/rails/commits/master) in the main
14
+ Rails repository on GitHub.
15
+
16
+ --------------------------------------------------------------------------------
17
+
18
+ NOTE: This document is a work in progress, please help to improve this by sending
19
+ a [pull request](https://github.com/rails/rails/edit/master/guides/source/4_2_release_notes.md).
20
+
21
+ Upgrading to Rails 4.2
22
+ ----------------------
23
+
24
+ If you're upgrading an existing application, it's a great idea to have good test
25
+ coverage before going in. You should also first upgrade to Rails 4.1 in case you
26
+ haven't and make sure your application still runs as expected before attempting
27
+ to upgrade to Rails 4.2. A list of things to watch out for when upgrading is
28
+ available in the
29
+ [Upgrading Ruby on Rails](upgrading_ruby_on_rails.html#upgrading-from-rails-4.1-to-rails-4.2)
30
+ guide.
31
+
32
+
33
+ Major Features
34
+ --------------
35
+
36
+ ### Active Job, Action Mailer #deliver_later
37
+
38
+ Active Job is a new framework in Rails 4.2. It is an adapter layer on top of
39
+ queuing systems like Resque, Delayed Job, Sidekiq, and more. You can write your
40
+ jobs to Active Job, and it'll run on all these queues with no changes. (It comes
41
+ pre-configured with an inline runner.)
42
+
43
+ Building on top of Active Job, Action Mailer now comes with a #deliver_later
44
+ method, which adds your email to be sent as a job to a queue, so it doesn't
45
+ bog down the controller or model.
46
+
47
+ The new GlobalID library makes it easy to pass Active Record objects to jobs by
48
+ serializing them in a generic form. This means you no longer have to manually
49
+ pack and unpack your Active Records by passing ids. Just give the job the
50
+ straight Active Record object, and it'll serialize it using GlobalID, and
51
+ deserialize it at run time.
52
+
53
+ ### Adequate Record
54
+
55
+ Rails 4.2 comes with a performance improvement feature called Adequate Record
56
+ for Active Record. A lot of common queries are now up to twice as fast in Rails
57
+ 4.2!
58
+
59
+ TODO: add some technical details
60
+
61
+ ### Web Console
62
+
63
+ New applications generated from Rails 4.2 now comes with the Web Console gem by
64
+ default.
65
+
66
+ Web Console is an IRB console available in the browser. In development mode, you
67
+ can go to /console and do your work right there. It will also be made available
68
+ on all exception pages and allows you to jump between the different points in
69
+ the backtrace.
70
+
71
+ ### Foreign key support
72
+
73
+ The migration DSL now supports adding and removing foreign keys. They are dumped
74
+ to `schema.rb` as well. At this time, only the `mysql`, `mysql2` and `postgresql`
75
+ adapters support foreign keys.
76
+
77
+ ```ruby
78
+ # add a foreign key to `articles.author_id` referencing `authors.id`
79
+ add_foreign_key :articles, :authors
80
+
81
+ # add a foreign key to `articles.author_id` referencing `users.lng_id`
82
+ add_foreign_key :articles, :users, column: :author_id, primary_key: "lng_id"
83
+
84
+ # remove the foreign key on `accounts.branch_id`
85
+ remove_foreign_key :accounts, :branches
86
+
87
+ # remove the foreign key on `accounts.owner_id`
88
+ remove_foreign_key :accounts, column: :owner_id
89
+ ```
90
+
91
+ See the API documentation on
92
+ [add_foreign_key](http://api.rubyonrails.org/v4.2.0/classes/ActiveRecord/ConnectionAdapters/SchemaStatements.html#method-i-add_foreign_key)
93
+ and
94
+ [remove_foreign_key](http://api.rubyonrails.org/v4.2.0/classes/ActiveRecord/ConnectionAdapters/SchemaStatements.html#method-i-remove_foreign_key)
95
+ for a full description.
96
+
97
+
98
+ Railties
99
+ --------
100
+
101
+ Please refer to the [Changelog][railties] for detailed changes.
102
+
103
+ ### Removals
104
+
105
+ * The `rails application` command has been removed without replacement.
106
+ ([Pull Request](https://github.com/rails/rails/pull/11616))
107
+
108
+ ### Deprecations
109
+
110
+ * Deprecated `Rails::Rack::LogTailer` without replacement.
111
+ ([Commit](https://github.com/rails/rails/commit/84a13e019e93efaa8994b3f8303d635a7702dbce))
112
+
113
+ ### Notable changes
114
+
115
+ * Introduced `web-console` in the default application Gemfile.
116
+ ([Pull Request](https://github.com/rails/rails/pull/16532))
117
+
118
+ * Added a `required` option to the model generator for associations.
119
+ ([Pull Request](https://github.com/rails/rails/pull/16062))
120
+
121
+ * Introduced an `after_bundle` callback for use in Rails templates.
122
+ ([Pull Request](https://github.com/rails/rails/pull/16359))
123
+
124
+ * Introduced the `x` namespace for defining custom configuration options:
125
+
126
+ ```ruby
127
+ # config/environments/production.rb
128
+ config.x.payment_processing.schedule = :daily
129
+ config.x.payment_processing.retries = 3
130
+ config.x.super_debugger = true
131
+ ```
132
+
133
+ These options are then available through the configuration object:
134
+
135
+ ```ruby
136
+ Rails.configuration.x.payment_processing.schedule # => :daily
137
+ Rails.configuration.x.payment_processing.retries # => 3
138
+ Rails.configuration.x.super_debugger # => true
139
+ ```
140
+
141
+ ([Commit](https://github.com/rails/rails/commit/611849772dd66c2e4d005dcfe153f7ce79a8a7db))
142
+
143
+ * Introduced `Rails::Application.config_for` to load a configuration for the
144
+ current environment.
145
+
146
+ ```ruby
147
+ # config/exception_notification.yml:
148
+ production:
149
+ url: http://127.0.0.1:8080
150
+ namespace: my_app_production
151
+ development:
152
+ url: http://localhost:3001
153
+ namespace: my_app_development
154
+
155
+ # config/production.rb
156
+ MyApp::Application.configure do
157
+ config.middleware.use ExceptionNotifier, config_for(:exception_notification)
158
+ end
159
+ ```
160
+
161
+ ([Pull Request](https://github.com/rails/rails/pull/16129))
162
+
163
+ * Introduced a `--skip-gems` option in the app generator to skip gems such as
164
+ `turbolinks` and `coffee-rails` that does not have their own specific flags.
165
+ ([Commit](https://github.com/rails/rails/commit/10565895805887d4faf004a6f71219da177f78b7))
166
+
167
+ * Introduced a `bin/setup` script to enable automated setup code when
168
+ bootstrapping an application.
169
+ ([Pull Request](https://github.com/rails/rails/pull/15189))
170
+
171
+ * Changed default value for `config.assets.digest` to `true` in development.
172
+ ([Pull Request](https://github.com/rails/rails/pull/15155))
173
+
174
+ * Introduced an API to register new extensions for `rake notes`.
175
+ ([Pull Request](https://github.com/rails/rails/pull/14379))
176
+
177
+ * Introduced `Rails.gem_version` as a convenience method to return `Gem::Version.new(Rails.version)`.
178
+ ([Pull Request](https://github.com/rails/rails/pull/14101))
179
+
180
+ * Introduced an `after_bundle` callback in the Rails templates.
181
+ ([Pull Request](https://github.com/rails/rails/pull/16359))
182
+
183
+
184
+ Action Pack
185
+ -----------
186
+
187
+ Please refer to the [Changelog][action-pack] for detailed changes.
188
+
189
+ ### Removals
190
+
191
+ * `respond_with` and the class-level `respond_to` were removed from Rails and
192
+ moved to the `responders` gem (version 2.0). Add `gem 'responders', '~> 2.0'`
193
+ to your `Gemfile` to continue using these features.
194
+ ([Pull Request](https://github.com/rails/rails/pull/16526))
195
+
196
+ * Removed deprecated `AbstractController::Helpers::ClassMethods::MissingHelperError`
197
+ in favor of `AbstractController::Helpers::MissingHelperError`.
198
+ ([Commit](https://github.com/rails/rails/commit/a1ddde15ae0d612ff2973de9cf768ed701b594e8))
199
+
200
+ ### Deprecations
201
+
202
+ * Deprecated `assert_tag`, `assert_no_tag`, `find_tag` and `find_all_tag` in
203
+ favor of `assert_select`.
204
+ ([Commit](https://github.com/rails/rails-dom-testing/commit/b12850bc5ff23ba4b599bf2770874dd4f11bf750))
205
+
206
+ * Deprecated support for setting the `:to` option of a router to a symbol or a
207
+ string that does not contain a `#` character:
208
+
209
+ ```ruby
210
+ get '/posts', to: MyRackApp => (No change necessary)
211
+ get '/posts', to: 'post#index' => (No change necessary)
212
+ get '/posts', to: 'posts' => get '/posts', controller: :posts
213
+ get '/posts', to: :index => get '/posts', action: :index
214
+ ```
215
+
216
+ ([Commit](https://github.com/rails/rails/commit/cc26b6b7bccf0eea2e2c1a9ebdcc9d30ca7390d9))
217
+
218
+ ### Notable changes
219
+
220
+ * Rails will now automatically include the template's digest in ETags.
221
+ ([Pull Request](https://github.com/rails/rails/pull/16527))
222
+
223
+ * `render nothing: true` or rendering a `nil` body no longer add a single
224
+ space padding to the response body.
225
+ ([Pull Request](https://github.com/rails/rails/pull/14883))
226
+
227
+ * Introduced the `always_permitted_parameters` option to configure which
228
+ parameters are permitted globally. The default value of this configuration
229
+ is `['controller', 'action']`.
230
+ ([Pull Request](https://github.com/rails/rails/pull/15933))
231
+
232
+ * The `*_filter` family methods have been removed from the documentation. Their
233
+ usage is discouraged in favor of the `*_action` family methods:
234
+
235
+ ```
236
+ after_filter => after_action
237
+ append_after_filter => append_after_action
238
+ append_around_filter => append_around_action
239
+ append_before_filter => append_before_action
240
+ around_filter => around_action
241
+ before_filter => before_action
242
+ prepend_after_filter => prepend_after_action
243
+ prepend_around_filter => prepend_around_action
244
+ prepend_before_filter => prepend_before_action
245
+ skip_after_filter => skip_after_action
246
+ skip_around_filter => skip_around_action
247
+ skip_before_filter => skip_before_action
248
+ skip_filter => skip_action_callback
249
+ ```
250
+
251
+ If your application is depending on these methods, you should use the
252
+ replacement `*_action` methods instead. These methods will be deprecated in
253
+ the future and eventually removed from Rails.
254
+
255
+ (Commit [1](https://github.com/rails/rails/commit/6c5f43bab8206747a8591435b2aa0ff7051ad3de),
256
+ [2](https://github.com/rails/rails/commit/489a8f2a44dc9cea09154ee1ee2557d1f037c7d4))
257
+
258
+ * Added HTTP method `MKCALENDAR` from RFC-4791
259
+ ([Pull Request](https://github.com/rails/rails/pull/15121))
260
+
261
+ * `*_fragment.action_controller` notifications now include the controller and action name
262
+ in the payload.
263
+ ([Pull Request](https://github.com/rails/rails/pull/14137))
264
+
265
+ * Segments that are passed into URL helpers are now automatically escaped.
266
+ ([Commit](https://github.com/rails/rails/commit/5460591f0226a9d248b7b4f89186bd5553e7768f))
267
+
268
+ * Improved the Routing Error page with fuzzy matching for route search.
269
+ ([Pull Request](https://github.com/rails/rails/pull/14619))
270
+
271
+ * Added an option to disable logging of CSRF failures.
272
+ ([Pull Request](https://github.com/rails/rails/pull/14280))
273
+
274
+
275
+ Action View
276
+ -------------
277
+
278
+ Please refer to the [Changelog][action-view] for detailed changes.
279
+
280
+ ### Deprecations
281
+
282
+ * Deprecated `AbstractController::Base.parent_prefixes`.
283
+ Override `AbstractController::Base.local_prefixes` when you want to change
284
+ where to find views.
285
+ ([Pull Request](https://github.com/rails/rails/pull/15026))
286
+
287
+ * Deprecated `ActionView::Digestor#digest(name, format, finder, options = {})`.
288
+ Arguments should be passed as a hash instead.
289
+ ([Pull Request](https://github.com/rails/rails/pull/14243))
290
+
291
+ ### Notable changes
292
+
293
+ * Introduced a `#{partial_name}_iteration` special local variable for use with
294
+ partials that are rendered with a collection. It provides access to the
295
+ current state of the iteration via the `#index`, `#size`, `#first?` and
296
+ `#last?` methods.
297
+ ([Pull Request](https://github.com/rails/rails/pull/7698))
298
+
299
+ * The form helpers no longer generate a `<div>` element with inline CSS around
300
+ the hidden fields.
301
+ ([Pull Request](https://github.com/rails/rails/pull/14738))
302
+
303
+
304
+ Action Mailer
305
+ -------------
306
+
307
+ Please refer to the [Changelog][action-mailer] for detailed changes.
308
+
309
+ ### Deprecations
310
+
311
+ * Deprecated `*_path` helpers in mailers. Always use `*_url` helpers instead.
312
+ ([Pull Request](https://github.com/rails/rails/pull/15840))
313
+
314
+ ### Notable changes
315
+
316
+ * Introduced `deliver_later` which enqueues a job on the application's queue
317
+ to deliver the mailer asynchronously.
318
+ ([Pull Request](https://github.com/rails/rails/pull/16485))
319
+
320
+ * Added the `show_previews` configuration option for enabling mailer previews
321
+ outside of the development environment.
322
+ ([Pull Request](https://github.com/rails/rails/pull/15970))
323
+
324
+
325
+ Active Record
326
+ -------------
327
+
328
+ Please refer to the
329
+ [Changelog](https://github.com/rails/rails/blob/4-2-stable/activerecord/CHANGELOG.md)
330
+ for detailed changes.
331
+
332
+ ### Removals
333
+
334
+ * Removed `cache_attributes` and friends. All attributes are cached.
335
+ ([Pull Request](https://github.com/rails/rails/pull/15429))
336
+
337
+ * Removed deprecated method `ActiveRecord::Base.quoted_locking_column`.
338
+ ([Pull Request](https://github.com/rails/rails/pull/15612))
339
+
340
+ * Removed deprecated `ActiveRecord::Migrator.proper_table_name`. Use the
341
+ `proper_table_name` instance method on `ActiveRecord::Migration` instead.
342
+ ([Pull Request](https://github.com/rails/rails/pull/15512))
343
+
344
+ * Removed unused `:timestamp` type. Transparently alias it to `:datetime`
345
+ in all cases. Fixes inconsistencies when column types are sent outside of
346
+ `ActiveRecord`, such as for XML Serialization.
347
+ ([Pull Request](https://github.com/rails/rails/pull/15184))
348
+
349
+ ### Deprecations
350
+
351
+ * Deprecated swallowing of errors inside `after_commit` and `after_rollback`.
352
+ ([Pull Request](https://github.com/rails/rails/pull/16537))
353
+
354
+ * Deprecated calling `DatabaseTasks.load_schema` without a connection. Use
355
+ `DatabaseTasks.load_schema_current` instead.
356
+ ([Commit](https://github.com/rails/rails/commit/f15cef67f75e4b52fd45655d7c6ab6b35623c608))
357
+
358
+ * Deprecated `Reflection#source_macro` without replacement as it is no longer
359
+ needed in Active Record.
360
+ ([Pull Request](https://github.com/rails/rails/pull/16373))
361
+
362
+ * Deprecated broken support for automatic detection of counter caches on
363
+ `has_many :through` associations. You should instead manually specify the
364
+ counter cache on the `has_many` and `belongs_to` associations for the
365
+ through records.
366
+ ([Pull Request](https://github.com/rails/rails/pull/15754))
367
+
368
+ * Deprecated `serialized_attributes` without replacement.
369
+ ([Pull Request](https://github.com/rails/rails/pull/15704))
370
+
371
+ * Deprecated returning `nil` from `column_for_attribute` when no column
372
+ exists. It will return a null object in Rails 5.0
373
+ ([Pull Request](https://github.com/rails/rails/pull/15878))
374
+
375
+ * Deprecated using `.joins`, `.preload` and `.eager_load` with associations
376
+ that depends on the instance state (i.e. those defined with a scope that
377
+ takes an argument) without replacement.
378
+ ([Commit](https://github.com/rails/rails/commit/ed56e596a0467390011bc9d56d462539776adac1))
379
+
380
+ * Deprecated passing Active Record objects to `.find` or `.exists?`. Call
381
+ `#id` on the objects first.
382
+ (Commit [1](https://github.com/rails/rails/commit/d92ae6ccca3bcfd73546d612efaea011270bd270),
383
+ [2](https://github.com/rails/rails/commit/d35f0033c7dec2b8d8b52058fb8db495d49596f7))
384
+
385
+ * Deprecated half-baked support for PostgreSQL range values with excluding
386
+ beginnings. We currently map PostgreSQL ranges to Ruby ranges. This conversion
387
+ is not fully possible because the Ruby range does not support excluded
388
+ beginnings.
389
+
390
+ The current solution of incrementing the beginning is not correct
391
+ and is now deprecated. For subtypes where we don't know how to increment
392
+ (e.g. `#succ` is not defined) it will raise an `ArgumentError` for ranges
393
+ with excluding beginnings.
394
+
395
+ ([Commit](https://github.com/rails/rails/commit/91949e48cf41af9f3e4ffba3e5eecf9b0a08bfc3))
396
+
397
+ ### Notable changes
398
+
399
+ * The PostgreSQL adapter now supports the `JSONB` datatype in PostgreSQL 9.4+.
400
+ ([Pull Request](https://github.com/rails/rails/pull/16220))
401
+
402
+ * The `#references` method in migrations now supports a `type` option for
403
+ specifying the type of the foreign key (e.g. `:uuid`).
404
+ ([Pull Request](https://github.com/rails/rails/pull/16231))
405
+
406
+ * Added a `:required` option to singular associations, which defines a
407
+ presence validation on the association.
408
+ ([Pull Request](https://github.com/rails/rails/pull/16056))
409
+
410
+ * Introduced `ActiveRecord::Base#validate!` that raises `RecordInvalid` if the
411
+ record is invalid.
412
+ ([Pull Request](https://github.com/rails/rails/pull/8639))
413
+
414
+ * `ActiveRecord::Base#reload` now behaves the same as `m = Model.find(m.id)`,
415
+ meaning that it no longer retains the extra attributes from custom
416
+ `select`s.
417
+ ([Pull Request](https://github.com/rails/rails/pull/15866))
418
+
419
+ * Introduced the `bin/rake db:purge` task to empty the database for the
420
+ current environment.
421
+ ([Commit](https://github.com/rails/rails/commit/e2f232aba15937a4b9d14bd91e0392c6d55be58d))
422
+
423
+ * `ActiveRecord::Dirty` now detects in-place changes to mutable values.
424
+ Serialized attributes on ActiveRecord models will no longer save when
425
+ unchanged. This also works with other types such as string columns and json
426
+ columns on PostgreSQL.
427
+ (Pull Requests [1](https://github.com/rails/rails/pull/15674),
428
+ [2](https://github.com/rails/rails/pull/15786),
429
+ [3](https://github.com/rails/rails/pull/15788))
430
+
431
+ * Added support for `#pretty_print` in `ActiveRecord::Base` objects.
432
+ ([Pull Request](https://github.com/rails/rails/pull/15172))
433
+
434
+ * PostgreSQL and SQLite adapters no longer add a default limit of 255
435
+ characters on string columns.
436
+ ([Pull Request](https://github.com/rails/rails/pull/14579))
437
+
438
+ * `sqlite3:///some/path` now resolves to the absolute system path
439
+ `/some/path`. For relative paths, use `sqlite3:some/path` instead.
440
+ (Previously, `sqlite3:///some/path` resolved to the relative path
441
+ `some/path`. This behaviour was deprecated on Rails 4.1.)
442
+ ([Pull Request](https://github.com/rails/rails/pull/14569))
443
+
444
+ * Introduced `#validate` as an alias for `#valid?`.
445
+ ([Pull Request](https://github.com/rails/rails/pull/14456))
446
+
447
+ * `#touch` now accepts multiple attributes to be touched at once.
448
+ ([Pull Request](https://github.com/rails/rails/pull/14423))
449
+
450
+ * Added support for fractional seconds for MySQL 5.6 and above.
451
+ (Pull Request [1](https://github.com/rails/rails/pull/8240),
452
+ [2](https://github.com/rails/rails/pull/14359))
453
+
454
+ * Added support for the `citext` column type in PostgreSQL adapter.
455
+ ([Pull Request](https://github.com/rails/rails/pull/12523))
456
+
457
+ * Added support for user-created range types in PostgreSQL adapter.
458
+ ([Commit](https://github.com/rails/rails/commit/4cb47167e747e8f9dc12b0ddaf82bdb68c03e032))
459
+
460
+
461
+ Active Model
462
+ ------------
463
+
464
+ Please refer to the [Changelog][active-model] for detailed changes.
465
+
466
+ ### Removals
467
+
468
+ * Removed deprecated `Validator#setup` without replacement.
469
+ ([Pull Request](https://github.com/rails/rails/pull/10716))
470
+
471
+ ### Deprecations
472
+
473
+ * Deprecated reset_#{attribute} in favor of restore_#{attribute}.
474
+ ([Pull Request](https://github.com/rails/rails/pull/16180))
475
+
476
+ * Deprecated ActiveModel::Dirty#reset_changes in favor of #clear_changes_information.
477
+ ([Pull Request](https://github.com/rails/rails/pull/16180))
478
+
479
+ ### Notable changes
480
+
481
+ * Introduced the `restore_attributes` method in `ActiveModel::Dirty` to restore
482
+ the changed (dirty) attributes to their previous values.
483
+ (Pull Request [1](https://github.com/rails/rails/pull/14861), [2](https://github.com/rails/rails/pull/16180))
484
+
485
+ * `has_secure_password` no longer disallow blank passwords (i.e. passwords
486
+ that contains only spaces) by default.
487
+ ([Pull Request](https://github.com/rails/rails/pull/16412))
488
+
489
+ * `has_secure_password` now verifies that the given password is less than 72
490
+ characters if validations are enabled.
491
+ ([Pull Request](https://github.com/rails/rails/pull/15708))
492
+
493
+ * Introduced `#validate` as an alias for `#valid?`.
494
+ ([Pull Request](https://github.com/rails/rails/pull/14456))
495
+
496
+
497
+ Active Support
498
+ --------------
499
+
500
+ Please refer to the [Changelog][active-support] for detailed changes.
501
+
502
+ ### Removals
503
+
504
+ * Removed deprecated `Numeric#ago`, `Numeric#until`, `Numeric#since`,
505
+ `Numeric#from_now`.
506
+ ([Commit](https://github.com/rails/rails/commit/f1eddea1e3f6faf93581c43651348f48b2b7d8bb))
507
+
508
+ * Removed deprecated string based terminators for `ActiveSupport::Callbacks`.
509
+ ([Pull Request](https://github.com/rails/rails/pull/15100))
510
+
511
+ ### Deprecations
512
+
513
+ * Deprecated `Kernel#silence_stderr`, `Kernel#capture` and `Kernel#quietly`
514
+ without replacement.
515
+ ([Pull Request](https://github.com/rails/rails/pull/13392))
516
+
517
+ * Deprecated `Class#superclass_delegating_accessor`, use
518
+ `Class#class_attribute` instead.
519
+ ([Pull Request](https://github.com/rails/rails/pull/14271))
520
+
521
+ * Deprecated `ActiveSupport::SafeBuffer#prepend!` as
522
+ `ActiveSupport::SafeBuffer#prepend` now performs the same function.
523
+ ([Pull Request](https://github.com/rails/rails/pull/14529))
524
+
525
+ ### Notable changes
526
+
527
+ * The `travel_to` test helper now truncates the `usec` component to 0.
528
+ ([Commit](https://github.com/rails/rails/commit/9f6e82ee4783e491c20f5244a613fdeb4024beb5))
529
+
530
+ * `ActiveSupport::TestCase` now randomizes the order that test cases are ran
531
+ by default.
532
+ ([Commit](https://github.com/rails/rails/commit/6ffb29d24e05abbd9ffe3ea974140d6c70221807))
533
+
534
+ * Introduced `Object#itself` as an identity function.
535
+ (Commit [1](https://github.com/rails/rails/commit/702ad710b57bef45b081ebf42e6fa70820fdd810),
536
+ [2](https://github.com/rails/rails/commit/64d91122222c11ad3918cc8e2e3ebc4b0a03448a))
537
+
538
+ * `Object#with_options` can now be used without an explicit receiver.
539
+ ([Pull Request](https://github.com/rails/rails/pull/16339))
540
+
541
+ * Introduced `String#truncate_words` to truncate a string by a number of words.
542
+ ([Pull Request](https://github.com/rails/rails/pull/16190))
543
+
544
+ * Added `Hash#transform_values` and `Hash#transform_values!` to simplify a
545
+ common pattern where the values of a hash must change, but the keys are left
546
+ the same.
547
+ ([Pull Request](https://github.com/rails/rails/pull/15819))
548
+
549
+ * The `humanize` inflector helper now strips any leading underscores.
550
+ ([Commit](https://github.com/rails/rails/commit/daaa21bc7d20f2e4ff451637423a25ff2d5e75c7))
551
+
552
+ * Introduced `Concern#class_methods` as an alternative to
553
+ `module ClassMethods`, as well as `Kernel#concern` to avoid the
554
+ `module Foo; extend ActiveSupport::Concern; end` boilerplate.
555
+ ([Commit](https://github.com/rails/rails/commit/b16c36e688970df2f96f793a759365b248b582ad))
556
+
557
+
558
+ Credits
559
+ -------
560
+
561
+ See the
562
+ [full list of contributors to Rails](http://contributors.rubyonrails.org/) for
563
+ the many people who spent many hours making Rails the stable and robust
564
+ framework it is today. Kudos to all of them.
565
+
566
+ [railties]: https://github.com/rails/rails/blob/4-2-stable/railties/CHANGELOG.md
567
+ [action-pack]: https://github.com/rails/rails/blob/4-2-stable/actionpack/CHANGELOG.md
568
+ [action-view]: https://github.com/rails/rails/blob/4-2-stable/actionview/CHANGELOG.md
569
+ [action-mailer]: https://github.com/rails/rails/blob/4-2-stable/actionmailer/CHANGELOG.md
570
+ [active-record]: https://github.com/rails/rails/blob/4-2-stable/activerecord/CHANGELOG.md
571
+ [active-model]: https://github.com/rails/rails/blob/4-2-stable/activemodel/CHANGELOG.md
572
+ [active-support]: https://github.com/rails/rails/blob/4-2-stable/activesupport/CHANGELOG.md