rails 4.1.0.beta2 → 4.1.0.rc1

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 (59) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -3
  3. data/guides/assets/images/getting_started/article_with_comments.png +0 -0
  4. data/guides/assets/images/getting_started/challenge.png +0 -0
  5. data/guides/assets/images/getting_started/confirm_dialog.png +0 -0
  6. data/guides/assets/images/getting_started/forbidden_attributes_for_new_article.png +0 -0
  7. data/guides/assets/images/getting_started/form_with_errors.png +0 -0
  8. data/guides/assets/images/getting_started/index_action_with_edit_link.png +0 -0
  9. data/guides/assets/images/getting_started/new_article.png +0 -0
  10. data/guides/assets/images/getting_started/rails_welcome.jpg +0 -0
  11. data/guides/assets/images/getting_started/routing_error_no_controller.png +0 -0
  12. data/guides/assets/images/getting_started/{show_action_for_posts.png → show_action_for_articles.png} +0 -0
  13. data/guides/assets/images/getting_started/template_is_missing_articles_new.png +0 -0
  14. data/guides/assets/images/getting_started/unknown_action_create_for_articles.png +0 -0
  15. data/guides/assets/images/getting_started/unknown_action_new_for_articles.png +0 -0
  16. data/guides/bug_report_templates/action_controller_gem.rb +5 -2
  17. data/guides/bug_report_templates/active_record_gem.rb +4 -1
  18. data/guides/code/getting_started/Gemfile +20 -23
  19. data/guides/code/getting_started/Gemfile.lock +73 -67
  20. data/guides/code/getting_started/app/views/layouts/application.html.erb +2 -2
  21. data/guides/code/getting_started/config/environments/production.rb +2 -2
  22. data/guides/code/getting_started/config/environments/test.rb +1 -1
  23. data/guides/rails_guides/helpers.rb +2 -0
  24. data/guides/source/3_0_release_notes.md +1 -1
  25. data/guides/source/4_1_release_notes.md +181 -61
  26. data/guides/source/action_controller_overview.md +46 -7
  27. data/guides/source/action_mailer_basics.md +5 -5
  28. data/guides/source/active_record_querying.md +18 -18
  29. data/guides/source/active_record_validations.md +11 -9
  30. data/guides/source/active_support_core_extensions.md +13 -1
  31. data/guides/source/api_documentation_guidelines.md +52 -2
  32. data/guides/source/asset_pipeline.md +54 -22
  33. data/guides/source/association_basics.md +13 -0
  34. data/guides/source/configuring.md +159 -11
  35. data/guides/source/contributing_to_ruby_on_rails.md +7 -6
  36. data/guides/source/development_dependencies_install.md +2 -0
  37. data/guides/source/documents.yaml +1 -1
  38. data/guides/source/engines.md +4 -3
  39. data/guides/source/form_helpers.md +10 -3
  40. data/guides/source/getting_started.md +525 -478
  41. data/guides/source/i18n.md +4 -4
  42. data/guides/source/initialization.md +2 -2
  43. data/guides/source/layouts_and_rendering.md +38 -8
  44. data/guides/source/migrations.md +5 -5
  45. data/guides/source/plugins.md +0 -1
  46. data/guides/source/routing.md +4 -2
  47. data/guides/source/security.md +47 -4
  48. data/guides/source/testing.md +10 -31
  49. data/guides/source/upgrading_ruby_on_rails.md +121 -12
  50. data/guides/source/working_with_javascript_in_rails.md +1 -1
  51. metadata +23 -24
  52. data/guides/assets/images/getting_started/forbidden_attributes_for_new_post.png +0 -0
  53. data/guides/assets/images/getting_started/new_post.png +0 -0
  54. data/guides/assets/images/getting_started/post_with_comments.png +0 -0
  55. data/guides/assets/images/getting_started/rails_welcome.png +0 -0
  56. data/guides/assets/images/getting_started/template_is_missing_posts_new.png +0 -0
  57. data/guides/assets/images/getting_started/undefined_method_post_path.png +0 -0
  58. data/guides/assets/images/getting_started/unknown_action_create_for_posts.png +0 -0
  59. data/guides/assets/images/getting_started/unknown_action_new_for_posts.png +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c4028ec4234df00141d26ba89be0adc8d980b706
4
- data.tar.gz: 838329499178162cc2dfd97197fbb25e2aa11664
3
+ metadata.gz: f7621750645b2b3623245eeecac73b517d827c5e
4
+ data.tar.gz: b90a28e976f9af320a80b48f06a28d0e82d507aa
5
5
  SHA512:
6
- metadata.gz: 6b6b8f9f1f802663a615ab1e9c7bb374b04aa7d921cdbfa2bc88cfbd227f962a2e149858483517739d352e020717598cbe88185c10bb8d26e42edfc438851f95
7
- data.tar.gz: 8ca8789360374e6e9e8d6902d32e6b2d1bc8978067899fb82a575a895a681b761c495a5d3fe9f9e7962fe3da16068b2e90431f7667431eb01b484ff7a0002978
6
+ metadata.gz: 63d3210259a8630b1ff4c840753ea77424a8fd7489d687ee5de9fbc5e7f036848a332878110b1a9de7f46f0935595611b14ea34f43db4b2e919267b9e67741e9
7
+ data.tar.gz: 4151069e5546e83879a544aa25d34494930879893565d60bfe3a31a495e5439c630fb5781cc36a77df1e69d654fed2e53c135a782fac622b4f0d38b8c177b5bf
data/README.md CHANGED
@@ -59,7 +59,8 @@ independently outside Rails.
59
59
 
60
60
  Run with `--help` or `-h` for options.
61
61
 
62
- 4. Using a browser, go to http://localhost:3000 and you'll see: "Welcome aboard: You're riding Ruby on Rails!"
62
+ 4. Using a browser, go to `http://localhost:3000` and you'll see:
63
+ "Welcome aboard: You're riding Ruby on Rails!"
63
64
 
64
65
  5. Follow the guidelines to start developing your application. You may find
65
66
  the following resources handy:
@@ -75,8 +76,7 @@ We encourage you to contribute to Ruby on Rails! Please check out the
75
76
 
76
77
  ## Code Status
77
78
 
78
- * [![Build Status](https://api.travis-ci.org/rails/rails.png)](https://travis-ci.org/rails/rails)
79
- * [![Dependencies](https://gemnasium.com/rails/rails.png?travis)](https://gemnasium.com/rails/rails)
79
+ * [![Build Status](https://travis-ci.org/rails/rails.png?branch=master)](https://travis-ci.org/rails/rails)
80
80
 
81
81
  ## License
82
82
 
@@ -29,7 +29,10 @@ end
29
29
  require 'minitest/autorun'
30
30
  require 'rack/test'
31
31
 
32
- class BugTest < MiniTest::Unit::TestCase
32
+ # Ensure backward compatibility with Minitest 4
33
+ Minitest::Test = MiniTest::Unit::TestCase unless defined?(Minitest::Test)
34
+
35
+ class BugTest < Minitest::Test
33
36
  include Rack::Test::Methods
34
37
 
35
38
  def test_returns_success
@@ -41,4 +44,4 @@ class BugTest < MiniTest::Unit::TestCase
41
44
  def app
42
45
  Rails.application
43
46
  end
44
- end
47
+ end
@@ -4,6 +4,9 @@ require 'active_record'
4
4
  require 'minitest/autorun'
5
5
  require 'logger'
6
6
 
7
+ # Ensure backward compatibility with Minitest 4
8
+ Minitest::Test = MiniTest::Unit::TestCase unless defined?(Minitest::Test)
9
+
7
10
  # This connection will do for database-independent bug reports.
8
11
  ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: ':memory:')
9
12
  ActiveRecord::Base.logger = Logger.new(STDOUT)
@@ -25,7 +28,7 @@ class Comment < ActiveRecord::Base
25
28
  belongs_to :post
26
29
  end
27
30
 
28
- class BugTest < MiniTest::Unit::TestCase
31
+ class BugTest < Minitest::Test
29
32
  def test_association_stuff
30
33
  post = Post.create!
31
34
  post.comments << Comment.create!
@@ -1,43 +1,40 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'rails', '4.0.0'
4
3
 
4
+ # Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
5
+ gem 'rails', '4.1.0'
5
6
  # Use sqlite3 as the database for Active Record
6
7
  gem 'sqlite3'
7
-
8
8
  # Use SCSS for stylesheets
9
- gem 'sass-rails'
10
-
9
+ gem 'sass-rails', '~> 4.0.1'
10
+ # Use Uglifier as compressor for JavaScript assets
11
+ gem 'uglifier', '>= 1.3.0'
11
12
  # Use CoffeeScript for .js.coffee assets and views
12
- gem 'coffee-rails'
13
-
13
+ gem 'coffee-rails', '~> 4.0.0'
14
14
  # See https://github.com/sstephenson/execjs#readme for more supported runtimes
15
- # gem 'therubyracer', platforms: :ruby
16
-
17
- # Use Uglifier as compressor for JavaScript assets
18
- gem 'uglifier', '>= 1.0.3'
15
+ # gem 'therubyracer', platforms: :ruby
19
16
 
17
+ # Use jquery as the JavaScript library
20
18
  gem 'jquery-rails'
21
-
22
19
  # Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
23
20
  gem 'turbolinks'
24
-
25
- group :doc do
26
- # bundle exec rake doc:rails generates the API under doc/api.
27
- gem 'sdoc', require: false
28
- end
29
-
30
21
  # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
31
- gem 'jbuilder', '~> 1.2'
22
+ gem 'jbuilder', '~> 2.0'
23
+ # bundle exec rake doc:rails generates the API under doc/api.
24
+ gem 'sdoc', '~> 0.4.0', group: :doc
32
25
 
33
- # To use ActiveModel has_secure_password
26
+ # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
27
+ gem 'spring', group: :development
28
+
29
+ # Use ActiveModel has_secure_password
34
30
  # gem 'bcrypt-ruby', '~> 3.1.2'
35
31
 
36
32
  # Use unicorn as the app server
37
33
  # gem 'unicorn'
38
34
 
39
- # Deploy with Capistrano
40
- # gem 'capistrano', group: :development
35
+ # Use Capistrano for deployment
36
+ # gem 'capistrano-rails', group: :development
37
+
38
+ # Use debugger
39
+ # gem 'debugger', group: [:development, :test]
41
40
 
42
- # To use debugger
43
- # gem 'debugger'
@@ -1,120 +1,126 @@
1
1
  GEM
2
2
  remote: https://rubygems.org/
3
3
  specs:
4
- actionmailer (4.0.0)
5
- actionpack (= 4.0.0)
6
- mail (~> 2.5.3)
7
- actionpack (4.0.0)
8
- activesupport (= 4.0.0)
9
- builder (~> 3.1.0)
10
- erubis (~> 2.7.0)
4
+ actionmailer (4.1.0)
5
+ actionpack (= 4.1.0)
6
+ actionview (= 4.1.0)
7
+ mail (~> 2.5.4)
8
+ actionpack (4.1.0)
9
+ actionview (= 4.1.0)
10
+ activesupport (= 4.1.0)
11
11
  rack (~> 1.5.2)
12
12
  rack-test (~> 0.6.2)
13
- activemodel (4.0.0)
14
- activesupport (= 4.0.0)
15
- builder (~> 3.1.0)
16
- activerecord (4.0.0)
17
- activemodel (= 4.0.0)
18
- activerecord-deprecated_finders (~> 1.0.2)
19
- activesupport (= 4.0.0)
20
- arel (~> 4.0.0)
21
- activerecord-deprecated_finders (1.0.3)
22
- activesupport (4.0.0)
23
- i18n (~> 0.6, >= 0.6.4)
24
- minitest (~> 4.2)
25
- multi_json (~> 1.3)
13
+ actionview (4.1.0)
14
+ activesupport (= 4.1.0)
15
+ builder (~> 3.1)
16
+ erubis (~> 2.7.0)
17
+ activemodel (4.1.0)
18
+ activesupport (= 4.1.0)
19
+ builder (~> 3.1)
20
+ activerecord (4.1.0)
21
+ activemodel (= 4.1.0)
22
+ activesupport (= 4.1.0)
23
+ arel (~> 5.0.0)
24
+ activesupport (4.1.0)
25
+ i18n (~> 0.6, >= 0.6.9)
26
+ json (~> 1.7, >= 1.7.7)
27
+ minitest (~> 5.1)
26
28
  thread_safe (~> 0.1)
27
- tzinfo (~> 0.3.37)
28
- arel (4.0.0)
29
- atomic (1.1.10)
30
- builder (3.1.4)
31
- coffee-rails (4.0.0)
29
+ tzinfo (~> 1.1)
30
+ arel (5.0.0)
31
+ atomic (1.1.14)
32
+ builder (3.2.2)
33
+ coffee-rails (4.0.1)
32
34
  coffee-script (>= 2.2.0)
33
- railties (>= 4.0.0.beta, < 5.0)
35
+ railties (>= 4.0.0, < 5.0)
34
36
  coffee-script (2.2.0)
35
37
  coffee-script-source
36
38
  execjs
37
39
  coffee-script-source (1.6.3)
38
40
  erubis (2.7.0)
39
- execjs (1.4.0)
40
- multi_json (~> 1.0)
41
+ execjs (2.0.2)
41
42
  hike (1.2.3)
42
- i18n (0.6.4)
43
- jbuilder (1.4.2)
43
+ i18n (0.6.9)
44
+ jbuilder (2.0.2)
44
45
  activesupport (>= 3.0.0)
45
46
  multi_json (>= 1.2.0)
46
- jquery-rails (3.0.2)
47
+ jquery-rails (3.0.4)
47
48
  railties (>= 3.0, < 5.0)
48
49
  thor (>= 0.14, < 2.0)
49
- json (1.8.0)
50
+ json (1.8.1)
50
51
  mail (2.5.4)
51
52
  mime-types (~> 1.16)
52
53
  treetop (~> 1.4.8)
53
- mime-types (1.23)
54
- minitest (4.7.5)
55
- multi_json (1.7.7)
54
+ mime-types (1.25.1)
55
+ minitest (5.2.1)
56
+ multi_json (1.8.4)
56
57
  polyglot (0.3.3)
57
58
  rack (1.5.2)
58
59
  rack-test (0.6.2)
59
60
  rack (>= 1.0)
60
- rails (4.0.0)
61
- actionmailer (= 4.0.0)
62
- actionpack (= 4.0.0)
63
- activerecord (= 4.0.0)
64
- activesupport (= 4.0.0)
61
+ rails (4.1.0)
62
+ actionmailer (= 4.1.0)
63
+ actionpack (= 4.1.0)
64
+ actionview (= 4.1.0)
65
+ activemodel (= 4.1.0)
66
+ activerecord (= 4.1.0)
67
+ activesupport (= 4.1.0)
65
68
  bundler (>= 1.3.0, < 2.0)
66
- railties (= 4.0.0)
69
+ railties (= 4.1.0)
67
70
  sprockets-rails (~> 2.0.0)
68
- railties (4.0.0)
69
- actionpack (= 4.0.0)
70
- activesupport (= 4.0.0)
71
+ railties (4.1.0)
72
+ actionpack (= 4.1.0)
73
+ activesupport (= 4.1.0)
71
74
  rake (>= 0.8.7)
72
75
  thor (>= 0.18.1, < 2.0)
73
- rake (10.1.0)
74
- rdoc (3.12.2)
76
+ rake (10.1.1)
77
+ rdoc (4.1.1)
75
78
  json (~> 1.4)
76
- sass (3.2.9)
77
- sass-rails (4.0.0)
78
- railties (>= 4.0.0.beta, < 5.0)
79
+ sass (3.2.13)
80
+ sass-rails (4.0.1)
81
+ railties (>= 4.0.0, < 5.0)
79
82
  sass (>= 3.1.10)
80
83
  sprockets-rails (~> 2.0.0)
81
- sdoc (0.3.20)
82
- json (>= 1.1.3)
83
- rdoc (~> 3.10)
84
- sprockets (2.10.0)
84
+ sdoc (0.4.0)
85
+ json (~> 1.8)
86
+ rdoc (~> 4.0, < 5.0)
87
+ spring (1.0.0)
88
+ sprockets (2.10.1)
85
89
  hike (~> 1.2)
86
90
  multi_json (~> 1.0)
87
91
  rack (~> 1.0)
88
92
  tilt (~> 1.1, != 1.3.0)
89
- sprockets-rails (2.0.0)
93
+ sprockets-rails (2.0.1)
90
94
  actionpack (>= 3.0)
91
95
  activesupport (>= 3.0)
92
96
  sprockets (~> 2.8)
93
- sqlite3 (1.3.7)
97
+ sqlite3 (1.3.8)
94
98
  thor (0.18.1)
95
- thread_safe (0.1.0)
99
+ thread_safe (0.1.3)
96
100
  atomic
97
101
  tilt (1.4.1)
98
- treetop (1.4.14)
102
+ treetop (1.4.15)
99
103
  polyglot
100
104
  polyglot (>= 0.3.1)
101
- turbolinks (1.2.0)
105
+ turbolinks (2.2.0)
102
106
  coffee-rails
103
- tzinfo (0.3.37)
104
- uglifier (2.1.1)
107
+ tzinfo (1.1.0)
108
+ thread_safe (~> 0.1)
109
+ uglifier (2.4.0)
105
110
  execjs (>= 0.3.0)
106
- multi_json (~> 1.0, >= 1.0.2)
111
+ json (>= 1.8.0)
107
112
 
108
113
  PLATFORMS
109
114
  ruby
110
115
 
111
116
  DEPENDENCIES
112
- coffee-rails
113
- jbuilder (~> 1.2)
117
+ coffee-rails (~> 4.0.0)
118
+ jbuilder (~> 2.0)
114
119
  jquery-rails
115
- rails (= 4.0.0)
116
- sass-rails
117
- sdoc
120
+ rails (= 4.1.0)
121
+ sass-rails (~> 4.0.1)
122
+ sdoc (~> 0.4.0)
123
+ spring
118
124
  sqlite3
119
125
  turbolinks
120
- uglifier (>= 1.0.3)
126
+ uglifier (>= 1.3.0)
@@ -2,8 +2,8 @@
2
2
  <html>
3
3
  <head>
4
4
  <title>Blog</title>
5
- <%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true %>
6
- <%= javascript_include_tag "application", "data-turbolinks-track" => true %>
5
+ <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %>
6
+ <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
7
7
  <%= csrf_meta_tags %>
8
8
  </head>
9
9
  <body>
@@ -5,7 +5,7 @@ Blog::Application.configure do
5
5
  config.cache_classes = true
6
6
 
7
7
  # Eager load code on boot. This eager loads most of Rails and
8
- # your application in memory, allowing both thread web servers
8
+ # your application in memory, allowing both threaded web servers
9
9
  # and those relying on copy on write to perform better.
10
10
  # Rake tasks automatically ignore this option for performance.
11
11
  config.eager_load = true
@@ -66,7 +66,7 @@ Blog::Application.configure do
66
66
  # config.action_mailer.raise_delivery_errors = false
67
67
 
68
68
  # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
69
- # the I18n.default_locale when a translation can not be found).
69
+ # the I18n.default_locale when a translation cannot be found).
70
70
  config.i18n.fallbacks = true
71
71
 
72
72
  # Send deprecation notices to registered listeners.
@@ -14,7 +14,7 @@ Blog::Application.configure do
14
14
 
15
15
  # Configure static asset server for tests with Cache-Control for performance.
16
16
  config.serve_static_assets = true
17
- config.static_cache_control = "public, max-age=3600"
17
+ config.static_cache_control = 'public, max-age=3600'
18
18
 
19
19
  # Show full error reports and disable caching.
20
20
  config.consider_all_requests_local = true
@@ -1,3 +1,5 @@
1
+ require 'yaml'
2
+
1
3
  module RailsGuides
2
4
  module Helpers
3
5
  def guide(name, url, options = {}, &block)
@@ -574,7 +574,7 @@ The following methods have been removed because they are no longer used in the f
574
574
  Action Mailer
575
575
  -------------
576
576
 
577
- Action Mailer has been given a new API with TMail being replaced out with the new [Mail](http://github.com/mikel/mail) as the Email library. Action Mailer itself has been given an almost complete re-write with pretty much every line of code touched. The result is that Action Mailer now simply inherits from Abstract Controller and wraps the Mail gem in a Rails DSL. This reduces the amount of code and duplication of other libraries in Action Mailer considerably.
577
+ Action Mailer has been given a new API with TMail being replaced out with the new [Mail](http://github.com/mikel/mail) as the email library. Action Mailer itself has been given an almost complete re-write with pretty much every line of code touched. The result is that Action Mailer now simply inherits from Abstract Controller and wraps the Mail gem in a Rails DSL. This reduces the amount of code and duplication of other libraries in Action Mailer considerably.
578
578
 
579
579
  * All mailers are now in `app/mailers` by default.
580
580
  * Can now send email using new API with three methods: `attachments`, `headers` and `mail`.
@@ -30,7 +30,7 @@ guide.
30
30
  Major Features
31
31
  --------------
32
32
 
33
- ### Spring application preloader
33
+ ### Spring Application Preloader
34
34
 
35
35
  Spring is a Rails application preloader. It speeds up development by keeping
36
36
  your application running in the background so you don't need to boot it every
@@ -40,27 +40,19 @@ New Rails 4.1 applications will ship with "springified" binstubs. This means
40
40
  that `bin/rails` and `bin/rake` will automatically take advantage of preloaded
41
41
  spring environments.
42
42
 
43
- **running rake tasks:**
43
+ **Running rake tasks:**
44
44
 
45
45
  ```
46
- bin/rake routes
46
+ bin/rake test:models
47
47
  ```
48
48
 
49
- **running tests:**
50
-
51
- ```
52
- bin/rake test
53
- bin/rake test test/models
54
- bin/rake test test/models/user_test.rb
55
- ```
56
-
57
- **running a console:**
49
+ **Running a Rails command:**
58
50
 
59
51
  ```
60
52
  bin/rails console
61
53
  ```
62
54
 
63
- **spring introspection:**
55
+ **Spring introspection:**
64
56
 
65
57
  ```
66
58
  $ bin/spring status
@@ -72,7 +64,7 @@ Spring is running:
72
64
  ```
73
65
 
74
66
  Have a look at the
75
- [Spring README](https://github.com/jonleighton/spring/blob/master/README.md) to
67
+ [Spring README](https://github.com/rails/spring/blob/master/README.md) to
76
68
  see all available features.
77
69
 
78
70
  See the [Upgrading Ruby on Rails](upgrading_ruby_on_rails.html#spring)
@@ -80,13 +72,12 @@ guide on how to migrate existing applications to use this feature.
80
72
 
81
73
  ### `config/secrets.yml`
82
74
 
83
- Rails 4.1 will generate a new `secrets.yml` file in the `config` folder for new
84
- applications. By default, this file contains the application's `secret_key_base`,
85
- but it could also be used to store other secrets such as access keys for external
86
- APIs.
75
+ Rails 4.1 generates a new `secrets.yml` file in the `config` folder. By default,
76
+ this file contains the application's `secret_key_base`, but it could also be
77
+ used to store other secrets such as access keys for external APIs.
87
78
 
88
- The secrets added to this file will be accessible via `Rails.application.secrets`.
89
- For example, with the following `secrets.yml`:
79
+ The secrets added to this file are accessible via `Rails.application.secrets`.
80
+ For example, with the following `config/secrets.yml`:
90
81
 
91
82
  ```yaml
92
83
  development:
@@ -94,16 +85,16 @@ development:
94
85
  some_api_key: SOMEKEY
95
86
  ```
96
87
 
97
- `Rails.application.secrets.some_api_key` will return `SOMEKEY` in the development
88
+ `Rails.application.secrets.some_api_key` returns `SOMEKEY` in the development
98
89
  environment.
99
90
 
100
91
  See the [Upgrading Ruby on Rails](upgrading_ruby_on_rails.html#config-secrets-yml)
101
92
  guide on how to migrate existing applications to use this feature.
102
93
 
103
- ### Action Pack variants
94
+ ### Action Pack Variants
104
95
 
105
- We often want to render different html/json/xml templates for phones,
106
- tablets, and desktop browsers. Variants makes it easy.
96
+ We often want to render different HTML/JSON/XML templates for phones,
97
+ tablets, and desktop browsers. Variants make it easy.
107
98
 
108
99
  The request variant is a specialization of the request format, like `:tablet`,
109
100
  `:phone`, or `:desktop`.
@@ -143,24 +134,30 @@ respond_to do |format|
143
134
  end
144
135
  ```
145
136
 
146
- ### Action Mailer previews
137
+ ### Action Mailer Previews
147
138
 
148
- Preview email templates in the browser without delivering them.
139
+ Action Mailer previews provide a way to visually see how emails look by visiting
140
+ a special URL that renders them.
141
+
142
+ You implement a preview class whose methods return the mail object you'd like
143
+ to check:
149
144
 
150
145
  ```ruby
151
146
  class NotifierPreview < ActionMailer::Preview
152
- # Accessible from http://localhost:3000/rails/mailers/notifier/welcome
153
147
  def welcome
154
148
  Notifier.welcome(User.first)
155
149
  end
156
150
  end
157
151
  ```
158
152
 
159
- By default, these preview files live in <tt>test/mailers/previews</tt>.
160
- This can be configured using the <tt>preview_path</tt> option.
153
+ The preview is available in http://localhost:3000/rails/mailers/notifier/welcome,
154
+ and a list of them in http://localhost:3000/rails/mailers.
155
+
156
+ By default, these preview classes live in `test/mailers/previews`.
157
+ This can be configured using the `preview_path` option.
161
158
 
162
- See
163
- [action_mailer/base.rb](api.rubyonrails.org/v4.1.0/classes/ActionMailer/Base.html)
159
+ See its
160
+ [documentation](http://api.rubyonrails.org/v4.1.0/classes/ActionMailer/Base.html)
164
161
  for a detailed write up.
165
162
 
166
163
  ### Active Record enums
@@ -178,21 +175,30 @@ conversation.active? # => false
178
175
  conversation.status # => "archived"
179
176
 
180
177
  Conversation.archived # => Relation for all archived Conversations
178
+
179
+ Conversation.statuses # => { "active" => 0, "archived" => 1 }
181
180
  ```
182
181
 
183
- See
184
- [active_record/enum.rb](api.rubyonrails.org/v4.1.0/classes/ActiveRecord/Enum.html)
182
+ See its
183
+ [documentation](http://api.rubyonrails.org/v4.1.0/classes/ActiveRecord/Enum.html)
185
184
  for a detailed write up.
186
185
 
187
- ### Application message verifier
186
+ ### Message Verifiers
188
187
 
189
- Create a message verifier that can be used to generate and verify signed
190
- messages in the application.
188
+ Message verifiers can be used to generate and verify signed messages. This can
189
+ be useful to safely transport sensitive data like remember-me tokens and
190
+ friends.
191
+
192
+ The method `Rails.application.message_verifier` returns a new message verifier
193
+ that signs messages with a key derived from secret_key_base and the given
194
+ message verifier name:
191
195
 
192
196
  ```ruby
193
- message = Rails.application.message_verifier('salt').generate('my sensible data')
194
- Rails.application.message_verifier('salt').verify(message)
195
- # => 'my sensible data'
197
+ signed_token = Rails.application.message_verifier(:remember_me).generate(token)
198
+ Rails.application.message_verifier(:remember_me).verify(signed_token) # => token
199
+
200
+ Rails.application.message_verifier(:remember_me).verify(tampered_token)
201
+ # raises ActiveSupport::MessageVerifier::InvalidSignature
196
202
  ```
197
203
 
198
204
  ### Module#concerning
@@ -222,6 +228,10 @@ This example is equivalent to defining a `EventTracking` module inline,
222
228
  extending it with `ActiveSupport::Concern`, then mixing it in to the
223
229
  `Todo` class.
224
230
 
231
+ See its
232
+ [documentation](http://api.rubyonrails.org/v4.1.0/classes/Module/Concerning.html)
233
+ for a detailed write up and the intended use cases.
234
+
225
235
  ### CSRF protection from remote `<script>` tags
226
236
 
227
237
  Cross-site request forgery (CSRF) protection now covers GET requests with
@@ -233,6 +243,7 @@ unless they use `xhr`. Upgrade your tests to be explicit about expecting
233
243
  XmlHttpRequests. Instead of `post :create, format: :js`, switch to the explicit
234
244
  `xhr :post, :create, format: :js`.
235
245
 
246
+
236
247
  Railties
237
248
  --------
238
249
 
@@ -259,7 +270,7 @@ for detailed changes.
259
270
  ### Notable changes
260
271
 
261
272
  * The [Spring application
262
- preloader](https://github.com/jonleighton/spring) is now installed
273
+ preloader](https://github.com/rails/spring) is now installed
263
274
  by default for new applications. It uses the development group of
264
275
  the Gemfile, so will not be installed in
265
276
  production. ([Pull Request](https://github.com/rails/rails/pull/12958))
@@ -270,9 +281,17 @@ for detailed changes.
270
281
  * Exposed `MiddlewareStack#unshift` to environment
271
282
  configuration. ([Pull Request](https://github.com/rails/rails/pull/12479))
272
283
 
273
- * Add `Application#message_verifier` method to return a message
284
+ * Added `Application#message_verifier` method to return a message
274
285
  verifier. ([Pull Request](https://github.com/rails/rails/pull/12995))
275
286
 
287
+ * The `test_help.rb` file which is required by the default generated test
288
+ helper will automatically keep your test database up-to-date with
289
+ `db/schema.rb` (or `db/structure.sql`). It raises an error if
290
+ reloading the schema does not resolve all pending migrations. Opt out
291
+ with `config.active_record.maintain_test_schema = false`. ([Pull
292
+ Request](https://github.com/rails/rails/pull/13528))
293
+
294
+
276
295
  Action Pack
277
296
  -----------
278
297
 
@@ -292,13 +311,15 @@ for detailed changes.
292
311
 
293
312
  * Removed deprecated constants from Action Controller:
294
313
 
295
- ActionController::AbstractRequest => ActionDispatch::Request
296
- ActionController::Request => ActionDispatch::Request
297
- ActionController::AbstractResponse => ActionDispatch::Response
298
- ActionController::Response => ActionDispatch::Response
299
- ActionController::Routing => ActionDispatch::Routing
300
- ActionController::Integration => ActionDispatch::Integration
301
- ActionController::IntegrationTest => ActionDispatch::IntegrationTest
314
+ | Removed | Successor |
315
+ |:-----------------------------------|:--------------------------------|
316
+ | ActionController::AbstractRequest | ActionDispatch::Request |
317
+ | ActionController::Request | ActionDispatch::Request |
318
+ | ActionController::AbstractResponse | ActionDispatch::Response |
319
+ | ActionController::Response | ActionDispatch::Response |
320
+ | ActionController::Routing | ActionDispatch::Routing |
321
+ | ActionController::Integration | ActionDispatch::Integration |
322
+ | ActionController::IntegrationTest | ActionDispatch::IntegrationTest |
302
323
 
303
324
  ### Notable changes
304
325
 
@@ -318,6 +339,20 @@ for detailed changes.
318
339
  * Separated Action View completely from Action
319
340
  Pack. ([Pull Request](https://github.com/rails/rails/pull/11032))
320
341
 
342
+ * Log which keys were affected by deep
343
+ munge. ([Pull Request](https://github.com/rails/rails/pull/13813))
344
+
345
+ * New config option `config.action_dispatch.perform_deep_munge` to opt out of
346
+ params "deep munging" that was used to address security vulnerability
347
+ CVE-2013-0155. ([Pull Request](https://github.com/rails/rails/pull/13188))
348
+
349
+ * New config option `config.action_dispatch.cookies_serializer` for specifying
350
+ a serializer for the signed and encrypted cookie jars. (Pull Requests [1](https://github.com/rails/rails/pull/13692), [2](https://github.com/rails/rails/pull/13945) / [More Details](upgrading_ruby_on_rails.html#cookies-serializer))
351
+
352
+ * Added `render :plain`, `render :html` and `render :body`. ([Pull Request](https://github.com/rails/rails/pull/14062) /
353
+ [More Details](upgrading_ruby_on_rails.html#rendering-content-from-string))
354
+
355
+
321
356
  Action Mailer
322
357
  -------------
323
358
 
@@ -327,9 +362,13 @@ for detailed changes.
327
362
 
328
363
  ### Notable changes
329
364
 
365
+ * Added mailer previews feature based on 37 Signals mail_view
366
+ gem. ([Commit](https://github.com/rails/rails/commit/d6dec7fcb6b8fddf8c170182d4fe64ecfc7b2261))
367
+
330
368
  * Instrument the generation of Action Mailer messages. The time it takes to
331
369
  generate a message is written to the log. ([Pull Request](https://github.com/rails/rails/pull/12556))
332
370
 
371
+
333
372
  Active Record
334
373
  -------------
335
374
 
@@ -356,7 +395,7 @@ for detailed changes.
356
395
  * Removed deprecated `increment_open_transactions`.
357
396
 
358
397
  * Removed deprecated `PostgreSQLAdapter#outside_transaction?`
359
- methodd. You can use `#transaction_open?` instead.
398
+ method. You can use `#transaction_open?` instead.
360
399
 
361
400
  * Removed deprecated `ActiveRecord::Fixtures.find_table_name` in favor of
362
401
  `ActiveRecord::Fixtures.default_fixture_model_name`.
@@ -394,6 +433,8 @@ for detailed changes.
394
433
  * Remove implicit join references that were deprecated in 4.0.
395
434
 
396
435
  * Removed `activerecord-deprecated_finders` as a dependency.
436
+ Please see [the gem README](https://github.com/rails/activerecord-deprecated_finders#active-record-deprecated-finders)
437
+ for more info.
397
438
 
398
439
  * Removed usage of `implicit_readonly`. Please use `readonly` method
399
440
  explicitly to mark records as
@@ -403,16 +444,25 @@ for detailed changes.
403
444
 
404
445
  * Deprecated `quoted_locking_column` method, which isn't used anywhere.
405
446
 
406
- * Deprecated the delegation of Array bang methods for associations.
407
- To use them, instead first call `#to_a` on the association to access the
408
- array to be acted
409
- on. ([Pull Request](https://github.com/rails/rails/pull/12129))
410
-
411
447
  * Deprecated `ConnectionAdapters::SchemaStatements#distinct`,
412
448
  as it is no longer used by internals. ([Pull Request](https://github.com/rails/rails/pull/10556))
413
449
 
450
+ * Deprecated `rake db:test:*` tasks as the test database is now
451
+ automatically maintained. See railties release notes. ([Pull
452
+ Request](https://github.com/rails/rails/pull/13528))
453
+
454
+ * Deprecate unused `ActiveRecord::Base.symbolized_base_class`
455
+ and `ActiveRecord::Base.symbolized_sti_name` without
456
+ replacement. [Commit](https://github.com/rails/rails/commit/97e7ca48c139ea5cce2fa9b4be631946252a1ebd)
457
+
414
458
  ### Notable changes
415
459
 
460
+ * Default scopes are no longer overriden by chained conditions.
461
+
462
+ Before this change when you defined a `default_scope` in a model
463
+ it was overriden by chained conditions in the same field. Now it
464
+ is merged like any other scope. [More Details](upgrading_ruby_on_rails.html#changes-on-default-scopes).
465
+
416
466
  * Added `ActiveRecord::Base.to_param` for convenient "pretty" URLs derived from
417
467
  a model's attribute or
418
468
  method. ([Pull Request](https://github.com/rails/rails/pull/12891))
@@ -473,6 +523,36 @@ for detailed changes.
473
523
  object. Helper methods used by multiple fixtures should be defined on modules
474
524
  included in `ActiveRecord::FixtureSet.context_class`. ([Pull Request](https://github.com/rails/rails/pull/13022))
475
525
 
526
+ * Don't create or drop the test database if RAILS_ENV is specified
527
+ explicitly. ([Pull Request](https://github.com/rails/rails/pull/13629))
528
+
529
+ * `Relation` no longer has mutator methods like `#map!` and `#delete_if`. Convert
530
+ to an `Array` by calling `#to_a` before using these methods. ([Pull Request](https://github.com/rails/rails/pull/13314))
531
+
532
+ * `find_in_batches`, `find_each`, `Result#each` and `Enumerable#index_by` now
533
+ return an `Enumerator` that can calculate its
534
+ size. ([Pull Request](https://github.com/rails/rails/pull/13938))
535
+
536
+ * `scope`, `enum` and Associations now raise on "dangerous" name
537
+ conflicts. ([Pull Request](https://github.com/rails/rails/pull/13450),
538
+ [Pull Request](https://github.com/rails/rails/pull/13896))
539
+
540
+ * `second` through `fifth` methods act like the `first`
541
+ finder. ([Pull Request](https://github.com/rails/rails/pull/13757))
542
+
543
+ * Make `touch` fire the `after_commit` and `after_rollback`
544
+ callbacks. ([Pull Request](https://github.com/rails/rails/pull/12031))
545
+
546
+ * Enable partial indexes for `sqlite >=
547
+ 3.8.0`. ([Pull Request](https://github.com/rails/rails/pull/13350))
548
+
549
+ * Make `change_column_null`
550
+ revertable. ([Commit](https://github.com/rails/rails/commit/724509a9d5322ff502aefa90dd282ba33a281a96))
551
+
552
+ * Added a flag to disable schema dump after migration. This is set to `false`
553
+ by defualt in the production environment for new applications. ([Pull Request](https://github.com/rails/rails/pull/13948))
554
+
555
+
476
556
  Active Model
477
557
  ------------
478
558
 
@@ -490,6 +570,13 @@ for detailed changes.
490
570
  * Added new API methods `reset_changes` and `changes_applied` to
491
571
  `ActiveModel::Dirty` that control changes state.
492
572
 
573
+ * Ability to specify multiple contexts when defining a
574
+ validation. ([Pull Request](https://github.com/rails/rails/pull/13754))
575
+
576
+ * `attribute_changed?` now accepts a hash to check if the attribute was changed
577
+ `:from` and/or `:to` a given
578
+ value. ([Pull Request](https://github.com/rails/rails/pull/13131))
579
+
493
580
 
494
581
  Active Support
495
582
  --------------
@@ -516,7 +603,7 @@ for detailed changes.
516
603
 
517
604
  * Removed deprecated `Module#local_constant_names` in favor of `Module#local_constants`.
518
605
 
519
- * Removed deprecated `DateTime.local_offset` in favor of `DateTime.civil_from_fromat`.
606
+ * Removed deprecated `DateTime.local_offset` in favor of `DateTime.civil_from_format`.
520
607
 
521
608
  * Removed deprecated `Logger` core extensions (`core_ext/logger.rb`).
522
609
 
@@ -540,6 +627,12 @@ for detailed changes.
540
627
  * Removed deprecated `assert_present` and `assert_blank` methods, use `assert
541
628
  object.blank?` and `assert object.present?` instead.
542
629
 
630
+ * Remove deprecated `#filter` method for filter objects, use the corresponding
631
+ method instead (e.g. `#before` for a before filter).
632
+
633
+ * Removed 'cow' => 'kine' irregular inflection from default
634
+ inflections. ([Commit](https://github.com/rails/rails/commit/c300dca9963bda78b8f358dbcb59cabcdc5e1dc9))
635
+
543
636
  ### Deprecations
544
637
 
545
638
  * Deprecated `Numeric#{ago,until,since,from_now}`, the user is expected to
@@ -556,11 +649,14 @@ for detailed changes.
556
649
  [More Details](upgrading_ruby_on_rails.html#changes-in-json-handling))
557
650
 
558
651
  * Deprecated `ActiveSupport.encode_big_decimal_as_string` option. This feature has
559
- been extracetd into the [activesupport-json_encoder](https://github.com/rails/activesupport-json_encoder)
652
+ been extracted into the [activesupport-json_encoder](https://github.com/rails/activesupport-json_encoder)
560
653
  gem.
561
654
  ([Pull Request](https://github.com/rails/rails/pull/13060) /
562
655
  [More Details](upgrading_ruby_on_rails.html#changes-in-json-handling))
563
656
 
657
+ * Deprecate custom `BigDecimal`
658
+ serialization. ([Pull Request](https://github.com/rails/rails/pull/13911))
659
+
564
660
  ### Notable changes
565
661
 
566
662
  * `ActiveSupport`'s JSON encoder has been rewritten to take advantage of the
@@ -573,9 +669,12 @@ for detailed changes.
573
669
  [More Details](upgrading_ruby_on_rails.html#changes-in-json-handling))
574
670
 
575
671
  * Added `ActiveSupport::Testing::TimeHelpers#travel` and `#travel_to`. These
576
- methods change current time to the given time or time difference by stubbing
577
- `Time.now` and
578
- `Date.today`. ([Pull Request](https://github.com/rails/rails/pull/12824))
672
+ methods change current time to the given time or duration by stubbing
673
+ `Time.now` and `Date.today`.
674
+
675
+ * Added `ActiveSupport::Testing::TimeHelpers#travel_back`. This method returns
676
+ the current time to the original state, by removing the stubs added by `travel`
677
+ and `travel_to`. ([Pull Request](https://github.com/rails/rails/pull/13884))
579
678
 
580
679
  * Added `Numeric#in_milliseconds`, like `1.hour.in_milliseconds`, so we can feed
581
680
  them to JavaScript functions like
@@ -586,11 +685,32 @@ for detailed changes.
586
685
  `at_middle_of_day` as
587
686
  aliases. ([Pull Request](https://github.com/rails/rails/pull/10879))
588
687
 
688
+ * Added `Date#all_week/month/quarter/year` for generating date
689
+ ranges. ([Pull Request](https://github.com/rails/rails/pull/9685))
690
+
691
+ * Added `Time.zone.yesterday` and
692
+ `Time.zone.tomorrow`. ([Pull Request](https://github.com/rails/rails/pull/12822))
693
+
589
694
  * Added `String#remove(pattern)` as a short-hand for the common pattern of
590
695
  `String#gsub(pattern,'')`. ([Commit](https://github.com/rails/rails/commit/5da23a3f921f0a4a3139495d2779ab0d3bd4cb5f))
591
696
 
592
- * Removed 'cow' => 'kine' irregular inflection from default
593
- inflections. ([Commit](https://github.com/rails/rails/commit/c300dca9963bda78b8f358dbcb59cabcdc5e1dc9))
697
+ * Added `Hash#compact` and `Hash#compact!` for removing items with nil value
698
+ from hash. ([Pull Request](https://github.com/rails/rails/pull/13632))
699
+
700
+ * `blank?` and `present?` commit to return
701
+ singletons. ([Commit](https://github.com/rails/rails/commit/126dc47665c65cd129967cbd8a5926dddd0aa514))
702
+
703
+ * Default the new `I18n.enforce_available_locales` config to `true`, meaning
704
+ `I18n` will make sure that all locales passed to it must be declared in the
705
+ `available_locales`
706
+ list. ([Pull Request](https://github.com/rails/rails/commit/8e21ae37ad9fef6b7393a84f9b5f2e18a831e49a))
707
+
708
+ * Introduce Module#concerning: a natural, low-ceremony way to separate
709
+ responsibilities within a
710
+ class. ([Commit](https://github.com/rails/rails/commit/1eee0ca6de975b42524105a59e0521d18b38ab81))
711
+
712
+ * Added `Object#present_in` to simplify value whitelisting. ([Commit](https://github.com/rails/rails/commit/4edca106daacc5a159289eae255207d160f22396))
713
+
594
714
 
595
715
  Credits
596
716
  -------