rails 4.0.0 → 4.0.1.rc1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of rails might be problematic. Click here for more details.

Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/guides/CHANGELOG.md +6 -0
  3. data/guides/assets/images/akshaysurve.jpg +0 -0
  4. data/guides/bug_report_templates/action_controller_gem.rb +42 -0
  5. data/guides/bug_report_templates/action_controller_master.rb +51 -0
  6. data/guides/code/getting_started/Gemfile +1 -1
  7. data/guides/code/getting_started/Gemfile.lock +76 -106
  8. data/guides/code/getting_started/app/controllers/comments_controller.rb +7 -1
  9. data/guides/code/getting_started/app/controllers/posts_controller.rb +8 -2
  10. data/guides/code/getting_started/app/views/posts/_form.html.erb +3 -3
  11. data/guides/code/getting_started/app/views/welcome/index.html.erb +1 -0
  12. data/guides/code/getting_started/test/fixtures/comments.yml +1 -1
  13. data/guides/code/getting_started/test/fixtures/posts.yml +1 -1
  14. data/guides/rails_guides.rb +20 -1
  15. data/guides/source/3_0_release_notes.md +0 -2
  16. data/guides/source/4_0_release_notes.md +30 -13
  17. data/guides/source/_welcome.html.erb +4 -1
  18. data/guides/source/action_controller_overview.md +2 -2
  19. data/guides/source/action_mailer_basics.md +6 -21
  20. data/guides/source/action_view_overview.md +2 -71
  21. data/guides/source/active_record_basics.md +9 -9
  22. data/guides/source/active_record_callbacks.md +1 -0
  23. data/guides/source/active_record_querying.md +45 -5
  24. data/guides/source/active_record_validations.md +6 -9
  25. data/guides/source/active_support_core_extensions.md +50 -1
  26. data/guides/source/asset_pipeline.md +10 -4
  27. data/guides/source/association_basics.md +8 -4
  28. data/guides/source/command_line.md +8 -8
  29. data/guides/source/configuring.md +4 -2
  30. data/guides/source/contributing_to_ruby_on_rails.md +60 -10
  31. data/guides/source/credits.html.erb +5 -1
  32. data/guides/source/debugging_rails_applications.md +4 -2
  33. data/guides/source/documents.yaml +7 -0
  34. data/guides/source/form_helpers.md +1 -1
  35. data/guides/source/generators.md +21 -6
  36. data/guides/source/getting_started.md +61 -54
  37. data/guides/source/i18n.md +7 -6
  38. data/guides/source/layout.html.erb +6 -8
  39. data/guides/source/layouts_and_rendering.md +4 -4
  40. data/guides/source/maintenance_policy.md +56 -0
  41. data/guides/source/migrations.md +13 -11
  42. data/guides/source/plugins.md +9 -3
  43. data/guides/source/rails_on_rack.md +5 -1
  44. data/guides/source/security.md +1 -1
  45. data/guides/source/testing.md +83 -23
  46. data/guides/source/upgrading_ruby_on_rails.md +36 -12
  47. metadata +17 -13
@@ -34,9 +34,15 @@ different rails applications using RubyGems and Bundler if desired.
34
34
 
35
35
 
36
36
  Rails ships with a `rails plugin new` command which creates a
37
- skeleton for developing any kind of Rails extension with the ability
38
- to run integration tests using a dummy Rails application. See usage
39
- and options by asking for help:
37
+ skeleton for developing any kind of Rails extension with the ability
38
+ to run integration tests using a dummy Rails application. Create your
39
+ plugin with the command:
40
+
41
+ ```bash
42
+ $ rails plugin new yaffle
43
+ ```
44
+
45
+ See usage and options by asking for help:
40
46
 
41
47
  ```bash
42
48
  $ rails plugin --help
@@ -224,9 +224,13 @@ config.middleware.delete "Rack::MethodOverride"
224
224
 
225
225
  Much of Action Controller's functionality is implemented as Middlewares. The following list explains the purpose of each of them:
226
226
 
227
+ **`Rack::Sendfile`**
228
+
229
+ * Sets server specific X-Sendfile header. Configure this via `config.action_dispatch.x_sendfile_header` option.
230
+
227
231
  **`ActionDispatch::Static`**
228
232
 
229
- * Used to serve static assets. Disabled if `config.serve_static_assets` is true.
233
+ * Used to serve static assets. Disabled if `config.serve_static_assets` is `false`.
230
234
 
231
235
  **`Rack::Lock`**
232
236
 
@@ -93,7 +93,7 @@ Rails 2 introduced a new default session storage, CookieStore. CookieStore saves
93
93
 
94
94
  * The client can see everything you store in a session, because it is stored in clear-text (actually Base64-encoded, so not encrypted). So, of course, _you don't want to store any secrets here_. To prevent session hash tampering, a digest is calculated from the session with a server-side secret and inserted into the end of the cookie.
95
95
 
96
- That means the security of this storage depends on this secret (and on the digest algorithm, which defaults to SHA512, which has not been compromised, yet). So _don't use a trivial secret, i.e. a word from a dictionary, or one which is shorter than 30 characters_.
96
+ That means the security of this storage depends on this secret (and on the digest algorithm, which defaults to SHA1, for compatibility). So _don't use a trivial secret, i.e. a word from a dictionary, or one which is shorter than 30 characters_.
97
97
 
98
98
  `config.secret_key_base` is used for specifying a key which allows sessions for the application to be verified against a known secure key to prevent tampering. Applications get `config.secret_key_base` initialized to a random key in `config/initializers/secret_token.rb`, e.g.:
99
99
 
@@ -66,18 +66,34 @@ Here's a sample YAML fixture file:
66
66
  ```yaml
67
67
  # lo & behold! I am a YAML comment!
68
68
  david:
69
- name: David Heinemeier Hansson
70
- birthday: 1979-10-15
71
- profession: Systems development
69
+ name: David Heinemeier Hansson
70
+ birthday: 1979-10-15
71
+ profession: Systems development
72
72
 
73
73
  steve:
74
- name: Steve Ross Kellock
75
- birthday: 1974-09-27
76
- profession: guy with keyboard
74
+ name: Steve Ross Kellock
75
+ birthday: 1974-09-27
76
+ profession: guy with keyboard
77
77
  ```
78
78
 
79
79
  Each fixture is given a name followed by an indented list of colon-separated key/value pairs. Records are typically separated by a blank space. You can place comments in a fixture file by using the # character in the first column. Keys which resemble YAML keywords such as 'yes' and 'no' are quoted so that the YAML Parser correctly interprets them.
80
80
 
81
+ If you are working with [associations](/association_basics.html), you can simply
82
+ define a reference node between two different fixtures. Here's an example with
83
+ a belongs_to/has_many association:
84
+
85
+ ```yaml
86
+ # In fixtures/categories.yml
87
+ about:
88
+ name: About
89
+
90
+ # In fixtures/articles.yml
91
+ one:
92
+ title: Welcome to Rails!
93
+ body: Hello world!
94
+ category: about
95
+ ```
96
+
81
97
  #### ERB'in It Up
82
98
 
83
99
  ERB allows you to embed Ruby code within templates. The YAML fixture format is pre-processed with ERB when Rails loads fixtures. This allows you to use Ruby to help you generate some sample data. For example, the following code generates a thousand users:
@@ -92,7 +108,7 @@ user_<%= n %>:
92
108
 
93
109
  #### Fixtures in Action
94
110
 
95
- Rails by default automatically loads all fixtures from the `test/fixtures` folder for your unit and functional test. Loading involves three steps:
111
+ Rails by default automatically loads all fixtures from the `test/fixtures` folder for your models and controllers test. Loading involves three steps:
96
112
 
97
113
  * Remove any existing data from the table corresponding to the fixture
98
114
  * Load the fixture data into the table
@@ -116,7 +132,7 @@ email(david.girlfriend.email, david.location_tonight)
116
132
  Unit Testing your Models
117
133
  ------------------------
118
134
 
119
- In Rails, unit tests are what you write to test your models.
135
+ In Rails, models tests are what you write to test your models.
120
136
 
121
137
  For this guide we will be using Rails _scaffolding_. It will create the model, a migration, controller and views for the new resource in a single operation. It will also create a full test suite following Rails best practices. I will be using examples from this generated code and will be supplementing it with additional examples where necessary.
122
138
 
@@ -357,28 +373,28 @@ Here's an extract of the assertions you can use with `minitest`, the default tes
357
373
  | Assertion | Purpose |
358
374
  | ---------------------------------------------------------------- | ------- |
359
375
  | `assert( test, [msg] )` | Ensures that `test` is true.|
360
- | `refute( test, [msg] )` | Ensures that `test` is false.|
376
+ | `assert_not( test, [msg] )` | Ensures that `test` is false.|
361
377
  | `assert_equal( expected, actual, [msg] )` | Ensures that `expected == actual` is true.|
362
- | `refute_equal( expected, actual, [msg] )` | Ensures that `expected != actual` is true.|
378
+ | `assert_not_equal( expected, actual, [msg] )` | Ensures that `expected != actual` is true.|
363
379
  | `assert_same( expected, actual, [msg] )` | Ensures that `expected.equal?(actual)` is true.|
364
- | `refute_same( expected, actual, [msg] )` | Ensures that `expected.equal?(actual)` is false.|
380
+ | `assert_not_same( expected, actual, [msg] )` | Ensures that `expected.equal?(actual)` is false.|
365
381
  | `assert_nil( obj, [msg] )` | Ensures that `obj.nil?` is true.|
366
- | `refute_nil( obj, [msg] )` | Ensures that `obj.nil?` is false.|
382
+ | `assert_not_nil( obj, [msg] )` | Ensures that `obj.nil?` is false.|
367
383
  | `assert_match( regexp, string, [msg] )` | Ensures that a string matches the regular expression.|
368
- | `refute_match( regexp, string, [msg] )` | Ensures that a string doesn't match the regular expression.|
384
+ | `assert_no_match( regexp, string, [msg] )` | Ensures that a string doesn't match the regular expression.|
369
385
  | `assert_in_delta( expecting, actual, [delta], [msg] )` | Ensures that the numbers `expected` and `actual` are within `delta` of each other.|
370
- | `refute_in_delta( expecting, actual, [delta], [msg] )` | Ensures that the numbers `expected` and `actual` are not within `delta` of each other.|
386
+ | `assert_not_in_delta( expecting, actual, [delta], [msg] )` | Ensures that the numbers `expected` and `actual` are not within `delta` of each other.|
371
387
  | `assert_throws( symbol, [msg] ) { block }` | Ensures that the given block throws the symbol.|
372
388
  | `assert_raises( exception1, exception2, ... ) { block }` | Ensures that the given block raises one of the given exceptions.|
373
389
  | `assert_nothing_raised( exception1, exception2, ... ) { block }` | Ensures that the given block doesn't raise one of the given exceptions.|
374
390
  | `assert_instance_of( class, obj, [msg] )` | Ensures that `obj` is an instance of `class`.|
375
- | `refute_instance_of( class, obj, [msg] )` | Ensures that `obj` is not an instance of `class`.|
391
+ | `assert_not_instance_of( class, obj, [msg] )` | Ensures that `obj` is not an instance of `class`.|
376
392
  | `assert_kind_of( class, obj, [msg] )` | Ensures that `obj` is or descends from `class`.|
377
- | `refute_kind_of( class, obj, [msg] )` | Ensures that `obj` is not an instance of `class` and is not descending from it.|
393
+ | `assert_not_kind_of( class, obj, [msg] )` | Ensures that `obj` is not an instance of `class` and is not descending from it.|
378
394
  | `assert_respond_to( obj, symbol, [msg] )` | Ensures that `obj` responds to `symbol`.|
379
- | `refute_respond_to( obj, symbol, [msg] )` | Ensures that `obj` does not respond to `symbol`.|
395
+ | `assert_not_respond_to( obj, symbol, [msg] )` | Ensures that `obj` does not respond to `symbol`.|
380
396
  | `assert_operator( obj1, operator, [obj2], [msg] )` | Ensures that `obj1.operator(obj2)` is true.|
381
- | `refute_operator( obj1, operator, [obj2], [msg] )` | Ensures that `obj1.operator(obj2)` is false.|
397
+ | `assert_not_operator( obj1, operator, [obj2], [msg] )` | Ensures that `obj1.operator(obj2)` is false.|
382
398
  | `assert_send( array, [msg] )` | Ensures that executing the method listed in `array[1]` on the object in `array[0]` with the parameters of `array[2 and up]` is true. This one is weird eh?|
383
399
  | `flunk( [msg] )` | Ensures failure. This is useful to explicitly mark a test that isn't finished yet.|
384
400
 
@@ -422,10 +438,12 @@ Now that we have used Rails scaffold generator for our `Post` resource, it has a
422
438
  Let me take you through one such test, `test_should_get_index` from the file `posts_controller_test.rb`.
423
439
 
424
440
  ```ruby
425
- test "should get index" do
426
- get :index
427
- assert_response :success
428
- assert_not_nil assigns(:posts)
441
+ class PostsControllerTest < ActionController::TestCase
442
+ test "should get index" do
443
+ get :index
444
+ assert_response :success
445
+ assert_not_nil assigns(:posts)
446
+ end
429
447
  end
430
448
  ```
431
449
 
@@ -516,7 +534,7 @@ instance variable:
516
534
 
517
535
  ```ruby
518
536
  # setting a HTTP Header
519
- @request.headers["Accepts"] = "text/plain, text/html"
537
+ @request.headers["Accept"] = "text/plain, text/html"
520
538
  get :index # simulate the request with custom header
521
539
 
522
540
  # setting a CGI variable
@@ -997,6 +1015,47 @@ class UserControllerTest < ActionController::TestCase
997
1015
  end
998
1016
  ```
999
1017
 
1018
+ Testing helpers
1019
+ ---------------
1020
+
1021
+ In order to test helpers, all you need to do is check that the output of the
1022
+ helper method matches what you'd expect. Tests related to the helpers are
1023
+ located under the `test/helpers` directory. Rails provides a generator which
1024
+ generates both the helper and the test file:
1025
+
1026
+ ```bash
1027
+ $ rails generate helper User
1028
+ create app/helpers/user_helper.rb
1029
+ invoke test_unit
1030
+ create test/helpers/user_helper_test.rb
1031
+ ```
1032
+
1033
+ The generated test file contains the following code:
1034
+
1035
+ ```ruby
1036
+ require 'test_helper'
1037
+
1038
+ class UserHelperTest < ActionView::TestCase
1039
+ end
1040
+ ```
1041
+
1042
+ A helper is just a simple module where you can define methods which are
1043
+ available into your views. To test the output of the helper's methods, you just
1044
+ have to use a mixin like this:
1045
+
1046
+ ```ruby
1047
+ class UserHelperTest < ActionView::TestCase
1048
+ include UserHelper
1049
+
1050
+ test "should return the user name" do
1051
+ # ...
1052
+ end
1053
+ end
1054
+ ```
1055
+
1056
+ Moreover, since the test class extends from `ActionView::TestCase`, you have
1057
+ access to Rails' helper methods such as `link_to` or `pluralize`.
1058
+
1000
1059
  Other Testing Approaches
1001
1060
  ------------------------
1002
1061
 
@@ -1005,6 +1064,7 @@ The built-in `test/unit` based testing is not the only way to test Rails applica
1005
1064
  * [NullDB](http://avdi.org/projects/nulldb/), a way to speed up testing by avoiding database use.
1006
1065
  * [Factory Girl](https://github.com/thoughtbot/factory_girl/tree/master), a replacement for fixtures.
1007
1066
  * [Machinist](https://github.com/notahat/machinist/tree/master), another replacement for fixtures.
1067
+ * [Fixture Builder](https://github.com/rdy/fixture_builder), a tool that compiles Ruby factories into fixtures before a test run.
1008
1068
  * [MiniTest::Spec Rails](https://github.com/metaskills/minitest-spec-rails), use the MiniTest::Spec DSL within your rails tests.
1009
1069
  * [Shoulda](http://www.thoughtbot.com/projects/shoulda), an extension to `test/unit` with additional helpers, macros, and assertions.
1010
1070
  * [RSpec](http://relishapp.com/rspec), a behavior-driven development framework
@@ -33,7 +33,15 @@ The following changes are meant for upgrading your application to Rails 4.0.
33
33
 
34
34
  ### Gemfile
35
35
 
36
- Rails 4.0 removed the `assets` group from Gemfile. You'd need to remove that line from your Gemfile when upgrading.
36
+ Rails 4.0 removed the `assets` group from Gemfile. You'd need to remove that
37
+ line from your Gemfile when upgrading. You should also update your application
38
+ file (in `config/application.rb`):
39
+
40
+ ```ruby
41
+ # Require the gems listed in Gemfile, including any gems
42
+ # you've limited to :test, :development, or :production.
43
+ Bundler.require(:default, Rails.env)
44
+ ```
37
45
 
38
46
  ### vendor/plugins
39
47
 
@@ -45,12 +53,15 @@ Rails 4.0 no longer supports loading plugins from `vendor/plugins`. You must rep
45
53
 
46
54
  * The `delete` method in collection associations can now receive `Fixnum` or `String` arguments as record ids, besides records, pretty much like the `destroy` method does. Previously it raised `ActiveRecord::AssociationTypeMismatch` for such arguments. From Rails 4.0 on `delete` automatically tries to find the records matching the given ids before deleting them.
47
55
 
48
- * Rails 4.0 has changed how orders get stacked in `ActiveRecord::Relation`. In previous versions of Rails, the new order was applied after the previously defined order. But this is no longer true. Check [Active Record Query guide](active_record_querying.html#ordering) for more information.
56
+ * In Rails 4.0 when a column or a table is renamed the related indexes are also renamed. If you have migrations which rename the indexes, they are no longer needed.
49
57
 
50
58
  * Rails 4.0 has changed `serialized_attributes` and `attr_readonly` to class methods only. You shouldn't use instance methods since it's now deprecated. You should change them to use class methods, e.g. `self.serialized_attributes` to `self.class.serialized_attributes`.
51
59
 
52
60
  * Rails 4.0 has removed `attr_accessible` and `attr_protected` feature in favor of Strong Parameters. You can use the [Protected Attributes gem](https://github.com/rails/protected_attributes) to a smoothly upgrade path.
53
61
 
62
+ * If you are not using Protected Attributes, you can remove any options related to
63
+ this gem such as `whitelist_attributes` or `mass_assignment_sanitizer` options.
64
+
54
65
  * Rails 4.0 requires that scopes use a callable object such as a Proc or lambda:
55
66
 
56
67
  ```ruby
@@ -63,6 +74,18 @@ Rails 4.0 no longer supports loading plugins from `vendor/plugins`. You must rep
63
74
  * Rails 4.0 has deprecated `ActiveRecord::Fixtures` in favor of `ActiveRecord::FixtureSet`.
64
75
  * Rails 4.0 has deprecated `ActiveRecord::TestCase` in favor of `ActiveSupport::TestCase`.
65
76
 
77
+ * Rails 4.0 has deprecated the old-style hash based finder API. This means that
78
+ methods which previously accepted "finder options" no longer do.
79
+
80
+ * All dynamic methods except for `find_by_...` and `find_by_...!` are deprecated.
81
+ Here's how you can handle the changes:
82
+
83
+ * `find_all_by_...` becomes `where(...)`.
84
+ * `find_last_by_...` becomes `where(...).last`.
85
+ * `scoped_by_...` becomes `where(...)`.
86
+ * `find_or_initialize_by_...` becomes `find_or_initialize_by(...)`.
87
+ * `find_or_create_by_...` becomes `find_or_create_by(...)`.
88
+
66
89
  ### Active Resource
67
90
 
68
91
  Rails 4.0 extracted Active Resource to its own gem. If you still need the feature you can add the [Active Resource gem](https://github.com/rails/activeresource) in your Gemfile.
@@ -96,16 +119,6 @@ If you are relying on the ability for external applications or Javascript to be
96
119
 
97
120
  * Rails 4.0 encrypts the contents of cookie-based sessions if `secret_key_base` has been set. Rails 3.x signed, but did not encrypt, the contents of cookie-based session. Signed cookies are "secure" in that they are verified to have been generated by your app and are tamper-proof. However, the contents can be viewed by end users, and encrypting the contents eliminates this caveat/concern without a significant performance penalty.
98
121
 
99
- As described above, existing signed cookies generated with Rails 3.x will be transparently upgraded if you leave your existing `secret_token` in place and add the new `secret_key_base`.
100
-
101
- ```ruby
102
- # config/initializers/secret_token.rb
103
- Myapp::Application.config.secret_token = 'existing secret token'
104
- Myapp::Application.config.secret_key_base = 'new secret key base'
105
- ```
106
-
107
- The same caveats apply here, too. You should wait to set `secret_key_base` until you have 100% of your userbase on Rails 4.x and are reasonably sure you will not need to rollback to Rails 3.x. You should also take care to make sure you are not relying on the ability to decode signed cookies generated by your app in external applications or Javascript before upgrading.
108
-
109
122
  Please read [Pull Request #9978](https://github.com/rails/rails/pull/9978) for details on the move to encrypted session cookies.
110
123
 
111
124
  * Rails 4.0 removed the `ActionController::Base.asset_path` option. Use the assets pipeline feature.
@@ -120,6 +133,11 @@ Please read [Pull Request #9978](https://github.com/rails/rails/pull/9978) for d
120
133
 
121
134
  * Rails 4.0 deprecates the `dom_id` and `dom_class` methods in controllers (they are fine in views). You will need to include the `ActionView::RecordIdentifier` module in controllers requiring this feature.
122
135
 
136
+ * Rails 4.0 deprecates the `:confirm` option for the `link_to` helper. You should
137
+ instead rely on a data attribute (e.g. `data: { confirm: 'Are you sure?' }`).
138
+ This deprecation also concerns the helpers based on this one (such as `link_to_if`
139
+ or `link_to_unless`).
140
+
123
141
  * Rails 4.0 changed how `assert_generates`, `assert_recognizes`, and `assert_routing` work. Now all these assertions raise `Assertion` instead of `ActionController::RoutingError`.
124
142
 
125
143
  * Rails 4.0 raises an `ArgumentError` if clashing named routes are defined. This can be triggered by explicitly defined named routes or by the `resources` method. Here are two examples that clash with routes named `example_path`:
@@ -207,6 +225,12 @@ Active Record Observer and Action Controller Sweeper have been extracted to the
207
225
  ### sprockets-rails
208
226
 
209
227
  * `assets:precompile:primary` has been removed. Use `assets:precompile` instead.
228
+ * The `config.assets.compress` option should be changed to
229
+ `config.assets.js_compressor` like so for instance:
230
+
231
+ ```ruby
232
+ config.assets.js_compressor = :uglifier
233
+ ```
210
234
 
211
235
  ### sass-rails
212
236
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0
4
+ version: 4.0.1.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Heinemeier Hansson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-06-25 00:00:00.000000000 Z
11
+ date: 2013-10-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,70 +16,70 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 4.0.0
19
+ version: 4.0.1.rc1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 4.0.0
26
+ version: 4.0.1.rc1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: actionpack
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 4.0.0
33
+ version: 4.0.1.rc1
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 4.0.0
40
+ version: 4.0.1.rc1
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: activerecord
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - '='
46
46
  - !ruby/object:Gem::Version
47
- version: 4.0.0
47
+ version: 4.0.1.rc1
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - '='
53
53
  - !ruby/object:Gem::Version
54
- version: 4.0.0
54
+ version: 4.0.1.rc1
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: actionmailer
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - '='
60
60
  - !ruby/object:Gem::Version
61
- version: 4.0.0
61
+ version: 4.0.1.rc1
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - '='
67
67
  - !ruby/object:Gem::Version
68
- version: 4.0.0
68
+ version: 4.0.1.rc1
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: railties
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - '='
74
74
  - !ruby/object:Gem::Version
75
- version: 4.0.0
75
+ version: 4.0.1.rc1
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - '='
81
81
  - !ruby/object:Gem::Version
82
- version: 4.0.0
82
+ version: 4.0.1.rc1
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: bundler
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -123,6 +123,7 @@ extensions: []
123
123
  extra_rdoc_files: []
124
124
  files:
125
125
  - README.md
126
+ - guides/assets/images/akshaysurve.jpg
126
127
  - guides/assets/images/belongs_to.png
127
128
  - guides/assets/images/book_icon.gif
128
129
  - guides/assets/images/bullet.gif
@@ -261,6 +262,8 @@ files:
261
262
  - guides/assets/stylesheets/syntaxhighlighter/shThemeMidnight.css
262
263
  - guides/assets/stylesheets/syntaxhighlighter/shThemeRailsGuides.css
263
264
  - guides/assets/stylesheets/syntaxhighlighter/shThemeRDark.css
265
+ - guides/bug_report_templates/action_controller_gem.rb
266
+ - guides/bug_report_templates/action_controller_master.rb
264
267
  - guides/bug_report_templates/active_record_gem.rb
265
268
  - guides/bug_report_templates/active_record_master.rb
266
269
  - guides/CHANGELOG.md
@@ -390,6 +393,7 @@ files:
390
393
  - guides/source/kindle/welcome.html.erb
391
394
  - guides/source/layout.html.erb
392
395
  - guides/source/layouts_and_rendering.md
396
+ - guides/source/maintenance_policy.md
393
397
  - guides/source/migrations.md
394
398
  - guides/source/nested_model_forms.md
395
399
  - guides/source/plugins.md
@@ -422,7 +426,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
422
426
  version: 1.8.11
423
427
  requirements: []
424
428
  rubyforge_project:
425
- rubygems_version: 2.0.2
429
+ rubygems_version: 2.0.6
426
430
  signing_key:
427
431
  specification_version: 4
428
432
  summary: Full-stack web application framework.