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.
- checksums.yaml +4 -4
- data/guides/CHANGELOG.md +6 -0
- data/guides/assets/images/akshaysurve.jpg +0 -0
- data/guides/bug_report_templates/action_controller_gem.rb +42 -0
- data/guides/bug_report_templates/action_controller_master.rb +51 -0
- data/guides/code/getting_started/Gemfile +1 -1
- data/guides/code/getting_started/Gemfile.lock +76 -106
- data/guides/code/getting_started/app/controllers/comments_controller.rb +7 -1
- data/guides/code/getting_started/app/controllers/posts_controller.rb +8 -2
- data/guides/code/getting_started/app/views/posts/_form.html.erb +3 -3
- data/guides/code/getting_started/app/views/welcome/index.html.erb +1 -0
- data/guides/code/getting_started/test/fixtures/comments.yml +1 -1
- data/guides/code/getting_started/test/fixtures/posts.yml +1 -1
- data/guides/rails_guides.rb +20 -1
- data/guides/source/3_0_release_notes.md +0 -2
- data/guides/source/4_0_release_notes.md +30 -13
- data/guides/source/_welcome.html.erb +4 -1
- data/guides/source/action_controller_overview.md +2 -2
- data/guides/source/action_mailer_basics.md +6 -21
- data/guides/source/action_view_overview.md +2 -71
- data/guides/source/active_record_basics.md +9 -9
- data/guides/source/active_record_callbacks.md +1 -0
- data/guides/source/active_record_querying.md +45 -5
- data/guides/source/active_record_validations.md +6 -9
- data/guides/source/active_support_core_extensions.md +50 -1
- data/guides/source/asset_pipeline.md +10 -4
- data/guides/source/association_basics.md +8 -4
- data/guides/source/command_line.md +8 -8
- data/guides/source/configuring.md +4 -2
- data/guides/source/contributing_to_ruby_on_rails.md +60 -10
- data/guides/source/credits.html.erb +5 -1
- data/guides/source/debugging_rails_applications.md +4 -2
- data/guides/source/documents.yaml +7 -0
- data/guides/source/form_helpers.md +1 -1
- data/guides/source/generators.md +21 -6
- data/guides/source/getting_started.md +61 -54
- data/guides/source/i18n.md +7 -6
- data/guides/source/layout.html.erb +6 -8
- data/guides/source/layouts_and_rendering.md +4 -4
- data/guides/source/maintenance_policy.md +56 -0
- data/guides/source/migrations.md +13 -11
- data/guides/source/plugins.md +9 -3
- data/guides/source/rails_on_rack.md +5 -1
- data/guides/source/security.md +1 -1
- data/guides/source/testing.md +83 -23
- data/guides/source/upgrading_ruby_on_rails.md +36 -12
- metadata +17 -13
data/guides/source/plugins.md
CHANGED
@@ -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
|
-
|
38
|
-
|
39
|
-
|
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
|
233
|
+
* Used to serve static assets. Disabled if `config.serve_static_assets` is `false`.
|
230
234
|
|
231
235
|
**`Rack::Lock`**
|
232
236
|
|
data/guides/source/security.md
CHANGED
@@ -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
|
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
|
|
data/guides/source/testing.md
CHANGED
@@ -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
|
-
|
70
|
-
|
71
|
-
|
69
|
+
name: David Heinemeier Hansson
|
70
|
+
birthday: 1979-10-15
|
71
|
+
profession: Systems development
|
72
72
|
|
73
73
|
steve:
|
74
|
-
|
75
|
-
|
76
|
-
|
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
|
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,
|
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
|
-
| `
|
376
|
+
| `assert_not( test, [msg] )` | Ensures that `test` is false.|
|
361
377
|
| `assert_equal( expected, actual, [msg] )` | Ensures that `expected == actual` is true.|
|
362
|
-
| `
|
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
|
-
| `
|
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
|
-
| `
|
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
|
-
| `
|
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
|
-
| `
|
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
|
-
| `
|
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
|
-
| `
|
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
|
-
| `
|
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
|
-
| `
|
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
|
-
|
426
|
-
get
|
427
|
-
|
428
|
-
|
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["
|
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
|
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
|
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.
|
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-
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
429
|
+
rubygems_version: 2.0.6
|
426
430
|
signing_key:
|
427
431
|
specification_version: 4
|
428
432
|
summary: Full-stack web application framework.
|