rails 4.1.0.beta2 → 4.1.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
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
  -------