rails 4.2.0.beta3 → 4.2.0.beta4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +9 -7
- data/guides/output/2_2_release_notes.html +724 -0
- data/guides/output/2_3_release_notes.html +870 -0
- data/guides/output/3_0_release_notes.html +773 -0
- data/guides/output/3_1_release_notes.html +740 -0
- data/guides/output/3_2_release_notes.html +797 -0
- data/guides/output/4_0_release_notes.html +523 -0
- data/guides/output/4_1_release_notes.html +806 -0
- data/guides/output/4_2_release_notes.html +728 -0
- data/guides/output/Gemfile +6 -0
- data/guides/output/_license.html +226 -0
- data/guides/output/_welcome.html +233 -0
- data/guides/output/action_controller_overview.html +1335 -0
- data/guides/output/action_mailer_basics.html +928 -0
- data/guides/output/action_view_overview.html +1509 -0
- data/guides/output/active_job_basics.html +546 -0
- data/guides/output/active_model_basics.html +438 -0
- data/guides/output/active_record_basics.html +594 -0
- data/guides/output/active_record_callbacks.html +592 -0
- data/guides/output/active_record_migrations.html +1123 -0
- data/guides/output/active_record_postgresql.html +675 -0
- data/guides/output/active_record_querying.html +1796 -0
- data/guides/output/active_record_validations.html +1301 -0
- data/guides/output/active_support_core_extensions.html +3450 -0
- data/guides/output/active_support_instrumentation.html +1121 -0
- data/guides/output/api_documentation_guidelines.html +498 -0
- data/guides/output/asset_pipeline.html +1167 -0
- data/guides/output/association_basics.html +2086 -0
- data/guides/output/caching_with_rails.html +553 -0
- data/guides/output/command_line.html +791 -0
- data/guides/output/configuring.html +1055 -0
- data/guides/output/contributing_to_ruby_on_rails.html +657 -0
- data/guides/output/credits.html +284 -0
- data/guides/output/debugging_rails_applications.html +1014 -0
- data/guides/output/development_dependencies_install.html +478 -0
- data/guides/output/engines.html +1438 -0
- data/guides/output/form_helpers.html +1074 -0
- data/guides/output/generators.html +838 -0
- data/guides/output/getting_started.html +2092 -0
- data/guides/output/i18n.html +1198 -0
- data/guides/output/images/akshaysurve.jpg +0 -0
- data/guides/output/images/belongs_to.png +0 -0
- data/guides/output/images/book_icon.gif +0 -0
- data/guides/output/images/bullet.gif +0 -0
- data/guides/output/images/chapters_icon.gif +0 -0
- data/guides/output/images/check_bullet.gif +0 -0
- data/guides/output/images/credits_pic_blank.gif +0 -0
- data/guides/output/images/csrf.png +0 -0
- data/guides/output/images/edge_badge.png +0 -0
- data/guides/output/images/favicon.ico +0 -0
- data/guides/output/images/feature_tile.gif +0 -0
- data/guides/output/images/footer_tile.gif +0 -0
- data/guides/output/images/fxn.png +0 -0
- data/guides/output/images/getting_started/article_with_comments.png +0 -0
- data/guides/output/images/getting_started/challenge.png +0 -0
- data/guides/output/images/getting_started/confirm_dialog.png +0 -0
- data/guides/output/images/getting_started/forbidden_attributes_for_new_article.png +0 -0
- data/guides/output/images/getting_started/forbidden_attributes_for_new_post.png +0 -0
- data/guides/output/images/getting_started/form_with_errors.png +0 -0
- data/guides/output/images/getting_started/index_action_with_edit_link.png +0 -0
- data/guides/output/images/getting_started/new_article.png +0 -0
- data/guides/output/images/getting_started/new_post.png +0 -0
- data/guides/output/images/getting_started/post_with_comments.png +0 -0
- data/guides/output/images/getting_started/rails_welcome.png +0 -0
- data/guides/output/images/getting_started/routing_error_no_controller.png +0 -0
- data/guides/output/images/getting_started/routing_error_no_route_matches.png +0 -0
- data/guides/output/images/getting_started/show_action_for_articles.png +0 -0
- data/guides/output/images/getting_started/show_action_for_posts.png +0 -0
- data/guides/output/images/getting_started/template_is_missing_articles_new.png +0 -0
- data/guides/output/images/getting_started/template_is_missing_posts_new.png +0 -0
- data/guides/output/images/getting_started/undefined_method_post_path.png +0 -0
- data/guides/output/images/getting_started/unknown_action_create_for_articles.png +0 -0
- data/guides/output/images/getting_started/unknown_action_create_for_posts.png +0 -0
- data/guides/output/images/getting_started/unknown_action_new_for_articles.png +0 -0
- data/guides/output/images/getting_started/unknown_action_new_for_posts.png +0 -0
- data/guides/output/images/grey_bullet.gif +0 -0
- data/guides/output/images/habtm.png +0 -0
- data/guides/output/images/has_many.png +0 -0
- data/guides/output/images/has_many_through.png +0 -0
- data/guides/output/images/has_one.png +0 -0
- data/guides/output/images/has_one_through.png +0 -0
- data/guides/output/images/header_backdrop.png +0 -0
- data/guides/output/images/header_tile.gif +0 -0
- data/guides/output/images/i18n/demo_html_safe.png +0 -0
- data/guides/output/images/i18n/demo_localized_pirate.png +0 -0
- data/guides/output/images/i18n/demo_translated_en.png +0 -0
- data/guides/output/images/i18n/demo_translated_pirate.png +0 -0
- data/guides/output/images/i18n/demo_translation_missing.png +0 -0
- data/guides/output/images/i18n/demo_untranslated.png +0 -0
- data/guides/output/images/icons/README +5 -0
- data/guides/output/images/icons/callouts/1.png +0 -0
- data/guides/output/images/icons/callouts/10.png +0 -0
- data/guides/output/images/icons/callouts/11.png +0 -0
- data/guides/output/images/icons/callouts/12.png +0 -0
- data/guides/output/images/icons/callouts/13.png +0 -0
- data/guides/output/images/icons/callouts/14.png +0 -0
- data/guides/output/images/icons/callouts/15.png +0 -0
- data/guides/output/images/icons/callouts/2.png +0 -0
- data/guides/output/images/icons/callouts/3.png +0 -0
- data/guides/output/images/icons/callouts/4.png +0 -0
- data/guides/output/images/icons/callouts/5.png +0 -0
- data/guides/output/images/icons/callouts/6.png +0 -0
- data/guides/output/images/icons/callouts/7.png +0 -0
- data/guides/output/images/icons/callouts/8.png +0 -0
- data/guides/output/images/icons/callouts/9.png +0 -0
- data/guides/output/images/icons/caution.png +0 -0
- data/guides/output/images/icons/example.png +0 -0
- data/guides/output/images/icons/home.png +0 -0
- data/guides/output/images/icons/important.png +0 -0
- data/guides/output/images/icons/next.png +0 -0
- data/guides/output/images/icons/note.png +0 -0
- data/guides/output/images/icons/prev.png +0 -0
- data/guides/output/images/icons/tip.png +0 -0
- data/guides/output/images/icons/up.png +0 -0
- data/guides/output/images/icons/warning.png +0 -0
- data/guides/output/images/nav_arrow.gif +0 -0
- data/guides/output/images/oscardelben.jpg +0 -0
- data/guides/output/images/polymorphic.png +0 -0
- data/guides/output/images/radar.png +0 -0
- data/guides/output/images/rails4_features.png +0 -0
- data/guides/output/images/rails_guides_kindle_cover.jpg +0 -0
- data/guides/output/images/rails_guides_logo.gif +0 -0
- data/guides/output/images/rails_logo_remix.gif +0 -0
- data/guides/output/images/session_fixation.png +0 -0
- data/guides/output/images/tab_grey.gif +0 -0
- data/guides/output/images/tab_info.gif +0 -0
- data/guides/output/images/tab_note.gif +0 -0
- data/guides/output/images/tab_red.gif +0 -0
- data/guides/output/images/tab_yellow.gif +0 -0
- data/guides/output/images/tab_yellow.png +0 -0
- data/guides/output/images/vijaydev.jpg +0 -0
- data/guides/output/index.html +354 -0
- data/guides/output/initialization.html +876 -0
- data/guides/output/javascripts/guides.js +59 -0
- data/guides/output/javascripts/jquery.min.js +4 -0
- data/guides/output/javascripts/responsive-tables.js +43 -0
- data/guides/output/javascripts/syntaxhighlighter/shBrushAS3.js +59 -0
- data/guides/output/javascripts/syntaxhighlighter/shBrushAppleScript.js +75 -0
- data/guides/output/javascripts/syntaxhighlighter/shBrushBash.js +59 -0
- data/guides/output/javascripts/syntaxhighlighter/shBrushCSharp.js +65 -0
- data/guides/output/javascripts/syntaxhighlighter/shBrushColdFusion.js +100 -0
- data/guides/output/javascripts/syntaxhighlighter/shBrushCpp.js +97 -0
- data/guides/output/javascripts/syntaxhighlighter/shBrushCss.js +91 -0
- data/guides/output/javascripts/syntaxhighlighter/shBrushDelphi.js +55 -0
- data/guides/output/javascripts/syntaxhighlighter/shBrushDiff.js +41 -0
- data/guides/output/javascripts/syntaxhighlighter/shBrushErlang.js +52 -0
- data/guides/output/javascripts/syntaxhighlighter/shBrushGroovy.js +67 -0
- data/guides/output/javascripts/syntaxhighlighter/shBrushJScript.js +52 -0
- data/guides/output/javascripts/syntaxhighlighter/shBrushJava.js +57 -0
- data/guides/output/javascripts/syntaxhighlighter/shBrushJavaFX.js +58 -0
- data/guides/output/javascripts/syntaxhighlighter/shBrushPerl.js +72 -0
- data/guides/output/javascripts/syntaxhighlighter/shBrushPhp.js +88 -0
- data/guides/output/javascripts/syntaxhighlighter/shBrushPlain.js +33 -0
- data/guides/output/javascripts/syntaxhighlighter/shBrushPowerShell.js +74 -0
- data/guides/output/javascripts/syntaxhighlighter/shBrushPython.js +64 -0
- data/guides/output/javascripts/syntaxhighlighter/shBrushRuby.js +55 -0
- data/guides/output/javascripts/syntaxhighlighter/shBrushSass.js +94 -0
- data/guides/output/javascripts/syntaxhighlighter/shBrushScala.js +51 -0
- data/guides/output/javascripts/syntaxhighlighter/shBrushSql.js +66 -0
- data/guides/output/javascripts/syntaxhighlighter/shBrushVb.js +56 -0
- data/guides/output/javascripts/syntaxhighlighter/shBrushXml.js +69 -0
- data/guides/output/javascripts/syntaxhighlighter/shCore.js +17 -0
- data/guides/output/layout.html +448 -0
- data/guides/output/layouts_and_rendering.html +1541 -0
- data/guides/output/maintenance_policy.html +257 -0
- data/guides/output/migrations.html +1360 -0
- data/guides/output/nested_model_forms.html +412 -0
- data/guides/output/plugins.html +644 -0
- data/guides/output/rails_application_templates.html +450 -0
- data/guides/output/rails_on_rack.html +547 -0
- data/guides/output/routing.html +1631 -0
- data/guides/output/ruby_on_rails_guides_guidelines.html +329 -0
- data/guides/output/security.html +935 -0
- data/guides/output/stylesheets/fixes.css +16 -0
- data/guides/output/stylesheets/kindle.css +11 -0
- data/guides/output/stylesheets/main.css +713 -0
- data/guides/output/stylesheets/print.css +52 -0
- data/guides/output/stylesheets/reset.css +43 -0
- data/guides/output/stylesheets/responsive-tables.css +50 -0
- data/guides/output/stylesheets/style.css +13 -0
- data/guides/output/stylesheets/syntaxhighlighter/shCore.css +226 -0
- data/guides/output/stylesheets/syntaxhighlighter/shCoreDefault.css +328 -0
- data/guides/output/stylesheets/syntaxhighlighter/shCoreDjango.css +331 -0
- data/guides/output/stylesheets/syntaxhighlighter/shCoreEclipse.css +339 -0
- data/guides/output/stylesheets/syntaxhighlighter/shCoreEmacs.css +324 -0
- data/guides/output/stylesheets/syntaxhighlighter/shCoreFadeToGrey.css +328 -0
- data/guides/output/stylesheets/syntaxhighlighter/shCoreMDUltra.css +324 -0
- data/guides/output/stylesheets/syntaxhighlighter/shCoreMidnight.css +324 -0
- data/guides/output/stylesheets/syntaxhighlighter/shCoreRDark.css +324 -0
- data/guides/output/stylesheets/syntaxhighlighter/shThemeDefault.css +117 -0
- data/guides/output/stylesheets/syntaxhighlighter/shThemeDjango.css +120 -0
- data/guides/output/stylesheets/syntaxhighlighter/shThemeEclipse.css +128 -0
- data/guides/output/stylesheets/syntaxhighlighter/shThemeEmacs.css +113 -0
- data/guides/output/stylesheets/syntaxhighlighter/shThemeFadeToGrey.css +117 -0
- data/guides/output/stylesheets/syntaxhighlighter/shThemeMDUltra.css +113 -0
- data/guides/output/stylesheets/syntaxhighlighter/shThemeMidnight.css +113 -0
- data/guides/output/stylesheets/syntaxhighlighter/shThemeRDark.css +113 -0
- data/guides/output/stylesheets/syntaxhighlighter/shThemeRailsGuides.css +116 -0
- data/guides/output/testing.html +1350 -0
- data/guides/output/upgrading_ruby_on_rails.html +1135 -0
- data/guides/output/working_with_javascript_in_rails.html +587 -0
- data/guides/source/4_0_release_notes.md +2 -2
- data/guides/source/4_2_release_notes.md +9 -2
- data/guides/source/action_controller_overview.md +3 -1
- data/guides/source/action_mailer_basics.md +1 -2
- data/guides/source/active_job_basics.md +25 -2
- data/guides/source/active_model_basics.md +350 -19
- data/guides/source/active_record_basics.md +2 -2
- data/guides/source/active_record_migrations.md +1 -1
- data/guides/source/active_record_validations.md +12 -4
- data/guides/source/active_support_core_extensions.md +7 -9
- data/guides/source/active_support_instrumentation.md +2 -0
- data/guides/source/association_basics.md +7 -7
- data/guides/source/configuring.md +24 -0
- data/guides/source/contributing_to_ruby_on_rails.md +1 -1
- data/guides/source/credits.html.erb +1 -1
- data/guides/source/documents.yaml +5 -0
- data/guides/source/engines.md +2 -2
- data/guides/source/form_helpers.md +6 -0
- data/guides/source/i18n.md +6 -9
- data/guides/source/layouts_and_rendering.md +1 -1
- data/guides/source/plugins.md +2 -2
- data/guides/source/rails_on_rack.md +4 -0
- data/guides/source/testing.md +1 -0
- data/guides/source/upgrading_ruby_on_rails.md +5 -5
- metadata +227 -27
@@ -31,7 +31,7 @@ Object Relational Mapping system.
|
|
31
31
|
in his book _Patterns of Enterprise Application Architecture_. In
|
32
32
|
Active Record, objects carry both persistent data and behavior which
|
33
33
|
operates on that data. Active Record takes the opinion that ensuring
|
34
|
-
data access logic
|
34
|
+
data access logic as part of the object will educate users of that
|
35
35
|
object on how to write to and read from the database.
|
36
36
|
|
37
37
|
### Object Relational Mapping
|
@@ -116,7 +116,7 @@ to Active Record instances:
|
|
116
116
|
locking](http://api.rubyonrails.org/classes/ActiveRecord/Locking.html) to
|
117
117
|
a model.
|
118
118
|
* `type` - Specifies that the model uses [Single Table
|
119
|
-
Inheritance](http://api.rubyonrails.org/classes/ActiveRecord/Base.html#label-Single+table+inheritance).
|
119
|
+
Inheritance](http://api.rubyonrails.org/classes/ActiveRecord/Base.html#class-ActiveRecord::Base-label-Single+table+inheritance).
|
120
120
|
* `(association_name)_type` - Stores the type for
|
121
121
|
[polymorphic associations](association_basics.html#polymorphic-associations).
|
122
122
|
* `(table_name)_count` - Used to cache the number of belonging objects on
|
@@ -466,7 +466,7 @@ add_foreign_key :articles, :authors
|
|
466
466
|
```
|
467
467
|
|
468
468
|
This adds a new foreign key to the `author_id` column of the `articles`
|
469
|
-
table. The key references the `id` column of the `
|
469
|
+
table. The key references the `id` column of the `authors` table. If the
|
470
470
|
column names can not be derived from the table names, you can use the
|
471
471
|
`:column` and `:primary_key` options.
|
472
472
|
|
@@ -361,6 +361,8 @@ class Product < ActiveRecord::Base
|
|
361
361
|
end
|
362
362
|
```
|
363
363
|
|
364
|
+
Alternatively, you can require that the specified attribute does _not_ match the regular expression by using the `:without` option.
|
365
|
+
|
364
366
|
The default error message is _"is invalid"_.
|
365
367
|
|
366
368
|
### `inclusion`
|
@@ -425,7 +427,7 @@ class Essay < ActiveRecord::Base
|
|
425
427
|
validates :content, length: {
|
426
428
|
minimum: 300,
|
427
429
|
maximum: 400,
|
428
|
-
tokenizer: lambda { |str| str.
|
430
|
+
tokenizer: lambda { |str| str.split(/\s+/) },
|
429
431
|
too_short: "must have at least %{count} words",
|
430
432
|
too_long: "must have at most %{count} words"
|
431
433
|
}
|
@@ -524,9 +526,15 @@ If you validate the presence of an object associated via a `has_one` or
|
|
524
526
|
`marked_for_destruction?`.
|
525
527
|
|
526
528
|
Since `false.blank?` is true, if you want to validate the presence of a boolean
|
527
|
-
field you should use
|
529
|
+
field you should use one of the following validations:
|
528
530
|
|
529
|
-
|
531
|
+
```ruby
|
532
|
+
validates :boolean_field_name, presence: true
|
533
|
+
validates :boolean_field_name, inclusion: { in: [true, false] }
|
534
|
+
validates :boolean_field_name, exclusion: { in: [nil] }
|
535
|
+
```
|
536
|
+
By using one of these validations, you will ensure the value will NOT be `nil`
|
537
|
+
which would result in a `NULL` value in most cases.
|
530
538
|
|
531
539
|
### `absence`
|
532
540
|
|
@@ -698,7 +706,7 @@ we don't want names and surnames to begin with lower case.
|
|
698
706
|
```ruby
|
699
707
|
class Person < ActiveRecord::Base
|
700
708
|
validates_each :name, :surname do |record, attr, value|
|
701
|
-
record.errors.add(attr, 'must start with upper case') if value =~ /\A[
|
709
|
+
record.errors.add(attr, 'must start with upper case') if value =~ /\A[[:lower:]]/
|
702
710
|
end
|
703
711
|
end
|
704
712
|
```
|
@@ -1833,16 +1833,14 @@ attribute names:
|
|
1833
1833
|
|
1834
1834
|
```ruby
|
1835
1835
|
def full_messages
|
1836
|
-
|
1837
|
-
|
1838
|
-
each do |attribute, messages|
|
1839
|
-
...
|
1840
|
-
attr_name = attribute.to_s.gsub('.', '_').humanize
|
1841
|
-
attr_name = @base.class.human_attribute_name(attribute, default: attr_name)
|
1842
|
-
...
|
1843
|
-
end
|
1836
|
+
map { |attribute, message| full_message(attribute, message) }
|
1837
|
+
end
|
1844
1838
|
|
1845
|
-
|
1839
|
+
def full_message
|
1840
|
+
...
|
1841
|
+
attr_name = attribute.to_s.tr('.', '_').humanize
|
1842
|
+
attr_name = @base.class.human_attribute_name(attribute, default: attr_name)
|
1843
|
+
...
|
1846
1844
|
end
|
1847
1845
|
```
|
1848
1846
|
|
@@ -135,7 +135,9 @@ Action Controller
|
|
135
135
|
| `:format` | html/js/json/xml etc |
|
136
136
|
| `:method` | HTTP request verb |
|
137
137
|
| `:path` | Request path |
|
138
|
+
| `:status` | HTTP status code |
|
138
139
|
| `:view_runtime` | Amount spent in view in ms |
|
140
|
+
| `:db_runtime` | Amount spent executing database queries in ms |
|
139
141
|
|
140
142
|
```ruby
|
141
143
|
{
|
@@ -756,7 +756,7 @@ class Order < ActiveRecord::Base
|
|
756
756
|
end
|
757
757
|
```
|
758
758
|
|
759
|
-
Each instance of the
|
759
|
+
Each instance of the `Order` model will have these methods:
|
760
760
|
|
761
761
|
```ruby
|
762
762
|
customer
|
@@ -1342,16 +1342,16 @@ class Customer < ActiveRecord::Base
|
|
1342
1342
|
end
|
1343
1343
|
```
|
1344
1344
|
|
1345
|
-
Each instance of the
|
1345
|
+
Each instance of the `Customer` model will have these methods:
|
1346
1346
|
|
1347
1347
|
```ruby
|
1348
1348
|
orders(force_reload = false)
|
1349
1349
|
orders<<(object, ...)
|
1350
1350
|
orders.delete(object, ...)
|
1351
1351
|
orders.destroy(object, ...)
|
1352
|
-
orders=objects
|
1352
|
+
orders=(objects)
|
1353
1353
|
order_ids
|
1354
|
-
order_ids=ids
|
1354
|
+
order_ids=(ids)
|
1355
1355
|
orders.clear
|
1356
1356
|
orders.empty?
|
1357
1357
|
orders.size
|
@@ -1831,16 +1831,16 @@ class Part < ActiveRecord::Base
|
|
1831
1831
|
end
|
1832
1832
|
```
|
1833
1833
|
|
1834
|
-
Each instance of the
|
1834
|
+
Each instance of the `Part` model will have these methods:
|
1835
1835
|
|
1836
1836
|
```ruby
|
1837
1837
|
assemblies(force_reload = false)
|
1838
1838
|
assemblies<<(object, ...)
|
1839
1839
|
assemblies.delete(object, ...)
|
1840
1840
|
assemblies.destroy(object, ...)
|
1841
|
-
assemblies=objects
|
1841
|
+
assemblies=(objects)
|
1842
1842
|
assembly_ids
|
1843
|
-
assembly_ids=ids
|
1843
|
+
assembly_ids=(ids)
|
1844
1844
|
assemblies.clear
|
1845
1845
|
assemblies.empty?
|
1846
1846
|
assemblies.size
|
@@ -364,6 +364,30 @@ encrypted cookies salt value. Defaults to `'signed encrypted cookie'`.
|
|
364
364
|
method should be performed on the parameters. See [Security Guide](security.html#unsafe-query-generation)
|
365
365
|
for more information. It defaults to true.
|
366
366
|
|
367
|
+
* `config.action_dispatch.rescue_responses` configures what exceptions are assigned to an HTTP status. It accepts a hash and you can specify pairs of exception/status. By default, this is defined as:
|
368
|
+
|
369
|
+
```ruby
|
370
|
+
config.action_dispatch.rescue_responses = {
|
371
|
+
'ActionController::RoutingError' => :not_found,
|
372
|
+
'AbstractController::ActionNotFound' => :not_found,
|
373
|
+
'ActionController::MethodNotAllowed' => :method_not_allowed,
|
374
|
+
'ActionController::UnknownHttpMethod' => :method_not_allowed,
|
375
|
+
'ActionController::NotImplemented' => :not_implemented,
|
376
|
+
'ActionController::UnknownFormat' => :not_acceptable,
|
377
|
+
'ActionController::InvalidAuthenticityToken' => :unprocessable_entity,
|
378
|
+
'ActionController::InvalidCrossOriginRequest' => :unprocessable_entity,
|
379
|
+
'ActionDispatch::ParamsParser::ParseError' => :bad_request,
|
380
|
+
'ActionController::BadRequest' => :bad_request,
|
381
|
+
'ActionController::ParameterMissing' => :bad_request,
|
382
|
+
'ActiveRecord::RecordNotFound' => :not_found,
|
383
|
+
'ActiveRecord::StaleObjectError' => :conflict,
|
384
|
+
'ActiveRecord::RecordInvalid' => :unprocessable_entity,
|
385
|
+
'ActiveRecord::RecordNotSaved' => :unprocessable_entity
|
386
|
+
}
|
387
|
+
```
|
388
|
+
|
389
|
+
Any exceptions that are not configured will be mapped to 500 Internal Server Error.
|
390
|
+
|
367
391
|
* `ActionDispatch::Callbacks.before` takes a block of code to run before the request.
|
368
392
|
|
369
393
|
* `ActionDispatch::Callbacks.to_prepare` takes a block to run after `ActionDispatch::Callbacks.before`, but before the request. Runs for every request in `development` mode, but only once for `production` or environments with `cache_classes` set to `true`.
|
@@ -193,7 +193,7 @@ Now get busy and add/edit code. You're on your branch now, so you can write what
|
|
193
193
|
* Update the (surrounding) documentation, examples elsewhere, and the guides: whatever is affected by your contribution.
|
194
194
|
|
195
195
|
|
196
|
-
TIP: Changes that are cosmetic in nature and do not add anything substantial to the stability, functionality, or testability of Rails will generally not be accepted.
|
196
|
+
TIP: Changes that are cosmetic in nature and do not add anything substantial to the stability, functionality, or testability of Rails will generally not be accepted (read more about [our rationales behind this decision](https://github.com/rails/rails/pull/13771#issuecomment-32746700)).
|
197
197
|
|
198
198
|
#### Follow the Coding Conventions
|
199
199
|
|
@@ -40,7 +40,7 @@ Oscar Del Ben is a software engineer at <a href="http://www.wildfireapp.com/">Wi
|
|
40
40
|
<% end %>
|
41
41
|
|
42
42
|
<%= author('Tore Darell', 'toretore') do %>
|
43
|
-
Tore Darell is an independent developer based in Menton, France who specialises in cruft-free web applications using Ruby, Rails and unobtrusive JavaScript.
|
43
|
+
Tore Darell is an independent developer based in Menton, France who specialises in cruft-free web applications using Ruby, Rails and unobtrusive JavaScript. You can follow him on <a href="http://twitter.com/toretore">Twitter</a>.
|
44
44
|
<% end %>
|
45
45
|
|
46
46
|
<%= author('Jeff Dean', 'zilkey') do %>
|
@@ -32,6 +32,11 @@
|
|
32
32
|
name: Active Record Query Interface
|
33
33
|
url: active_record_querying.html
|
34
34
|
description: This guide covers the database query interface provided by Active Record.
|
35
|
+
-
|
36
|
+
name: Active Model basics
|
37
|
+
url: active_model_basics.html
|
38
|
+
description: This guide covers the use of model classes without Active Record.
|
39
|
+
work_in_progress: true
|
35
40
|
-
|
36
41
|
name: Views
|
37
42
|
documents:
|
data/guides/source/engines.md
CHANGED
@@ -74,13 +74,13 @@ options as appropriate to the need. For the "blorgh" example, you will need to
|
|
74
74
|
create a "mountable" engine, running this command in a terminal:
|
75
75
|
|
76
76
|
```bash
|
77
|
-
$
|
77
|
+
$ rails plugin new blorgh --mountable
|
78
78
|
```
|
79
79
|
|
80
80
|
The full list of options for the plugin generator may be seen by typing:
|
81
81
|
|
82
82
|
```bash
|
83
|
-
$
|
83
|
+
$ rails plugin --help
|
84
84
|
```
|
85
85
|
|
86
86
|
The `--mountable` option tells the generator that you want to create a
|
@@ -506,6 +506,12 @@ As the name implies, this only generates option tags. To generate a working sele
|
|
506
506
|
<%= collection_select(:person, :city_id, City.all, :id, :name) %>
|
507
507
|
```
|
508
508
|
|
509
|
+
As with other helpers, if you were to use the collection_select helper on a form builder scoped to the @person object, the syntax would be:
|
510
|
+
|
511
|
+
```erb
|
512
|
+
<%= f.collection_select(:city_id, City.all, :id, :name) %>
|
513
|
+
```
|
514
|
+
|
509
515
|
To recap, `options_from_collection_for_select` is to `collection_select` what `options_for_select` is to `select`.
|
510
516
|
|
511
517
|
NOTE: Pairs passed to `options_for_select` should have the name first and the id second, however with `options_from_collection_for_select` the first argument is the value method and the second the text method.
|
data/guides/source/i18n.md
CHANGED
@@ -28,7 +28,7 @@ After reading this guide, you will know:
|
|
28
28
|
|
29
29
|
--------------------------------------------------------------------------------
|
30
30
|
|
31
|
-
NOTE: The Ruby I18n framework provides you with all necessary means for internationalization/localization of your Rails application. You may,
|
31
|
+
NOTE: The Ruby I18n framework provides you with all necessary means for internationalization/localization of your Rails application. You may, also use various gems available to add additional functionality or features. See the [rails-i18n gem](https://github.com/svenfuchs/rails-i18n) for more information.
|
32
32
|
|
33
33
|
How I18n in Ruby on Rails Works
|
34
34
|
-------------------------------
|
@@ -101,7 +101,7 @@ This means, that in the `:en` locale, the key _hello_ will map to the _Hello wor
|
|
101
101
|
|
102
102
|
The I18n library will use **English** as a **default locale**, i.e. if you don't set a different locale, `:en` will be used for looking up translations.
|
103
103
|
|
104
|
-
NOTE: The i18n library takes a **pragmatic approach** to locale keys (after [some discussion](http://groups.google.com/group/rails-i18n/browse_thread/thread/14dede2c7dbe9470/80eec34395f64f3c?hl=en)), including only the _locale_ ("language") part, like `:en`, `:pl`, not the _region_ part, like `:en-US` or `:en-GB`, which are traditionally used for separating "languages" and "regional setting" or "dialects". Many international applications use only the "language" element of a locale such as `:cs`, `:th` or `:es` (for Czech, Thai and Spanish). However, there are also regional differences within different language groups that may be important. For instance, in the `:en-US` locale you would have $ as a currency symbol, while in `:en-GB`, you would have £. Nothing stops you from separating regional and other settings in this way: you just have to provide full "English - United Kingdom" locale in a `:en-GB` dictionary.
|
104
|
+
NOTE: The i18n library takes a **pragmatic approach** to locale keys (after [some discussion](http://groups.google.com/group/rails-i18n/browse_thread/thread/14dede2c7dbe9470/80eec34395f64f3c?hl=en)), including only the _locale_ ("language") part, like `:en`, `:pl`, not the _region_ part, like `:en-US` or `:en-GB`, which are traditionally used for separating "languages" and "regional setting" or "dialects". Many international applications use only the "language" element of a locale such as `:cs`, `:th` or `:es` (for Czech, Thai and Spanish). However, there are also regional differences within different language groups that may be important. For instance, in the `:en-US` locale you would have $ as a currency symbol, while in `:en-GB`, you would have £. Nothing stops you from separating regional and other settings in this way: you just have to provide full "English - United Kingdom" locale in a `:en-GB` dictionary. Few gems such as [Globalize3](https://github.com/globalize/globalize) may help you implement it.
|
105
105
|
|
106
106
|
The **translations load path** (`I18n.load_path`) is just a Ruby Array of paths to your translation files that will be loaded automatically and available in your application. You can pick whatever directory and translation file naming scheme makes sense for you.
|
107
107
|
|
@@ -262,7 +262,7 @@ get '/:locale' => 'dashboard#index'
|
|
262
262
|
|
263
263
|
Do take special care about the **order of your routes**, so this route declaration does not "eat" other ones. (You may want to add it directly before the `root :to` declaration.)
|
264
264
|
|
265
|
-
NOTE: Have a look at
|
265
|
+
NOTE: Have a look at various gems which simplify working with routes: [routing_filter](https://github.com/svenfuchs/routing-filter/tree/master), [rails-translate-routes](https://github.com/francesc/rails-translate-routes), [route_translator](https://github.com/enriclluelles/route_translator).
|
266
266
|
|
267
267
|
### Setting the Locale from the Client Supplied Information
|
268
268
|
|
@@ -288,7 +288,7 @@ private
|
|
288
288
|
end
|
289
289
|
```
|
290
290
|
|
291
|
-
Of course, in a production environment you would need much more robust code, and could use a
|
291
|
+
Of course, in a production environment you would need much more robust code, and could use a gem such as Iain Hecker's [http_accept_language](https://github.com/iain/http_accept_language/tree/master) or even Rack middleware such as Ryan Tomayko's [locale](https://github.com/rack/rack-contrib/blob/master/lib/rack/contrib/locale.rb).
|
292
292
|
|
293
293
|
#### Using GeoIP (or Similar) Database
|
294
294
|
|
@@ -484,8 +484,6 @@ NOTE: The default locale loading mechanism in Rails does not load locale files i
|
|
484
484
|
|
485
485
|
```
|
486
486
|
|
487
|
-
Do check the [Rails i18n Wiki](http://rails-i18n.org/wiki) for list of tools available for managing translations.
|
488
|
-
|
489
487
|
Overview of the I18n API Features
|
490
488
|
---------------------------------
|
491
489
|
|
@@ -1052,9 +1050,9 @@ If you find anything missing or wrong in this guide, please file a ticket on our
|
|
1052
1050
|
Contributing to Rails I18n
|
1053
1051
|
--------------------------
|
1054
1052
|
|
1055
|
-
I18n support in Ruby on Rails was introduced in the release 2.2 and is still evolving. The project follows the good Ruby on Rails development tradition of evolving solutions in
|
1053
|
+
I18n support in Ruby on Rails was introduced in the release 2.2 and is still evolving. The project follows the good Ruby on Rails development tradition of evolving solutions in gems and real applications first, and only then cherry-picking the best-of-breed of most widely useful features for inclusion in the core.
|
1056
1054
|
|
1057
|
-
Thus we encourage everybody to experiment with new ideas and features in
|
1055
|
+
Thus we encourage everybody to experiment with new ideas and features in gems or other libraries and make them available to the community. (Don't forget to announce your work on our [mailing list](http://groups.google.com/group/rails-i18n!))
|
1058
1056
|
|
1059
1057
|
If you find your own locale (language) missing from our [example translations data](https://github.com/svenfuchs/rails-i18n/tree/master/rails/locale) repository for Ruby on Rails, please [_fork_](https://github.com/guides/fork-a-project-and-submit-your-modifications) the repository, add your data and send a [pull request](https://github.com/guides/pull-requests).
|
1060
1058
|
|
@@ -1062,7 +1060,6 @@ If you find your own locale (language) missing from our [example translations da
|
|
1062
1060
|
Resources
|
1063
1061
|
---------
|
1064
1062
|
|
1065
|
-
* [rails-i18n.org](http://rails-i18n.org) - Homepage of the rails-i18n project. You can find lots of useful resources on the [wiki](http://rails-i18n.org/wiki).
|
1066
1063
|
* [Google group: rails-i18n](http://groups.google.com/group/rails-i18n) - The project's mailing list.
|
1067
1064
|
* [GitHub: rails-i18n](https://github.com/svenfuchs/rails-i18n/tree/master) - Code repository for the rails-i18n project. Most importantly you can find lots of [example translations](https://github.com/svenfuchs/rails-i18n/tree/master/rails/locale) for Rails that should work for your application in most cases.
|
1068
1065
|
* [GitHub: i18n](https://github.com/svenfuchs/i18n/tree/master) - Code repository for the i18n gem.
|
@@ -189,7 +189,7 @@ render file: "/u/apps/warehouse_app/current/app/views/products/show"
|
|
189
189
|
|
190
190
|
The `:file` option takes an absolute file-system path. Of course, you need to have rights to the view that you're using to render the content.
|
191
191
|
|
192
|
-
NOTE: By default, the file is rendered
|
192
|
+
NOTE: By default, the file is rendered using the current layout.
|
193
193
|
|
194
194
|
TIP: If you're running Rails on Microsoft Windows, you should use the `:file` option to render a file, because Windows filenames do not have the same format as Unix filenames.
|
195
195
|
|
data/guides/source/plugins.md
CHANGED
@@ -39,13 +39,13 @@ to run integration tests using a dummy Rails application. Create your
|
|
39
39
|
plugin with the command:
|
40
40
|
|
41
41
|
```bash
|
42
|
-
$
|
42
|
+
$ rails plugin new yaffle
|
43
43
|
```
|
44
44
|
|
45
45
|
See usage and options by asking for help:
|
46
46
|
|
47
47
|
```bash
|
48
|
-
$
|
48
|
+
$ rails plugin new --help
|
49
49
|
```
|
50
50
|
|
51
51
|
Testing Your Newly Generated Plugin
|
@@ -99,6 +99,10 @@ To find out more about different `rackup` options:
|
|
99
99
|
$ rackup --help
|
100
100
|
```
|
101
101
|
|
102
|
+
### Development and auto-reloading
|
103
|
+
|
104
|
+
Middlewares are loaded once and are not monitored for changes. You will have to restart the server for changes to be reflected in the running application.
|
105
|
+
|
102
106
|
Action Dispatcher Middleware Stack
|
103
107
|
----------------------------------
|
104
108
|
|
data/guides/source/testing.md
CHANGED
@@ -797,6 +797,7 @@ when you initiate a Rails project.
|
|
797
797
|
| `rake test:functionals` | Runs all the functional tests from `test/controllers`, `test/mailers`, and `test/functional` |
|
798
798
|
| `rake test:helpers` | Runs all the helper tests from `test/helpers` |
|
799
799
|
| `rake test:integration` | Runs all the integration tests from `test/integration` |
|
800
|
+
| `rake test:jobs` | Runs all the job tests from `test/jobs` |
|
800
801
|
| `rake test:mailers` | Runs all the mailer tests from `test/mailers` |
|
801
802
|
| `rake test:models` | Runs all the model tests from `test/models` |
|
802
803
|
| `rake test:units` | Runs all the unit tests from `test/models`, `test/helpers`, and `test/unit` |
|
@@ -28,7 +28,7 @@ TIP: Ruby 1.8.7 p248 and p249 have marshaling bugs that crash Rails. Ruby Enterp
|
|
28
28
|
|
29
29
|
Rails provides the `rails:update` rake task. After updating the Rails version
|
30
30
|
in the Gemfile, run this rake task.
|
31
|
-
This will help you with the creation of new files and changes of old files in
|
31
|
+
This will help you with the creation of new files and changes of old files in an
|
32
32
|
interactive session.
|
33
33
|
|
34
34
|
```bash
|
@@ -111,7 +111,7 @@ Record callbacks.
|
|
111
111
|
|
112
112
|
When you define a `after_rollback` or `after_commit` callback, you
|
113
113
|
will receive a deprecation warning about this upcoming change. When
|
114
|
-
you are ready, you can opt into the new
|
114
|
+
you are ready, you can opt into the new behavior and remove the
|
115
115
|
deprecation warning by adding following configuration to your
|
116
116
|
`config/application.rb`:
|
117
117
|
|
@@ -177,7 +177,7 @@ after_bundle do
|
|
177
177
|
end
|
178
178
|
```
|
179
179
|
|
180
|
-
### Rails
|
180
|
+
### Rails HTML Sanitizer
|
181
181
|
|
182
182
|
There's a new choice for sanitizing HTML fragments in your applications. The
|
183
183
|
venerable html-scanner approach is now officially being deprecated in favor of
|
@@ -200,15 +200,15 @@ Read the [gem's readme](https://github.com/rails/rails-html-sanitizer) for more
|
|
200
200
|
The documentation for `PermitScrubber` and `TargetScrubber` explains how you
|
201
201
|
can gain complete control over when and how elements should be stripped.
|
202
202
|
|
203
|
-
If your application needs to old
|
203
|
+
If your application needs to use the old sanitizer implementation, include `rails-deprecated_sanitizer` in your Gemfile:
|
204
204
|
|
205
205
|
```ruby
|
206
206
|
gem 'rails-deprecated_sanitizer'
|
207
207
|
```
|
208
208
|
|
209
209
|
### Rails DOM Testing
|
210
|
+
The [`TagAssertions` module](http://api.rubyonrails.org/classes/ActionDispatch/Assertions/TagAssertions.html) (containing methods such as `assert_tag`), [has been deprecated](https://github.com/rails/rails/blob/6061472b8c310158a2a2e8e9a6b81a1aef6b60fe/actionpack/lib/action_dispatch/testing/assertions/dom.rb) in favor of the `assert_select` methods from the `SelectorAssertions` module, which has been extracted into the [rails-dom-testing gem](https://github.com/rails/rails-dom-testing).
|
210
211
|
|
211
|
-
TODO: Mention https://github.com/rails/rails/commit/4e97d7585a2f4788b9eed98c6cdaf4bb6f2cf5ce
|
212
212
|
|
213
213
|
Upgrading from Rails 4.0 to Rails 4.1
|
214
214
|
-------------------------------------
|
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.2.0.
|
4
|
+
version: 4.2.0.beta4
|
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: 2014-10-
|
11
|
+
date: 2014-10-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -16,144 +16,144 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 4.2.0.
|
19
|
+
version: 4.2.0.beta4
|
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.2.0.
|
26
|
+
version: 4.2.0.beta4
|
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.2.0.
|
33
|
+
version: 4.2.0.beta4
|
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.2.0.
|
40
|
+
version: 4.2.0.beta4
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: actionview
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - '='
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 4.2.0.
|
47
|
+
version: 4.2.0.beta4
|
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.2.0.
|
54
|
+
version: 4.2.0.beta4
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: activemodel
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - '='
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 4.2.0.
|
61
|
+
version: 4.2.0.beta4
|
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.2.0.
|
68
|
+
version: 4.2.0.beta4
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: activerecord
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - '='
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 4.2.0.
|
75
|
+
version: 4.2.0.beta4
|
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.2.0.
|
82
|
+
version: 4.2.0.beta4
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: actionmailer
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - '='
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: 4.2.0.
|
89
|
+
version: 4.2.0.beta4
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - '='
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: 4.2.0.
|
96
|
+
version: 4.2.0.beta4
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: activejob
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - '='
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: 4.2.0.
|
103
|
+
version: 4.2.0.beta4
|
104
104
|
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - '='
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: 4.2.0.
|
110
|
+
version: 4.2.0.beta4
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: railties
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - '='
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: 4.2.0.
|
117
|
+
version: 4.2.0.beta4
|
118
118
|
type: :runtime
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - '='
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: 4.2.0.
|
124
|
+
version: 4.2.0.beta4
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: bundler
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
|
-
- -
|
129
|
+
- - '>='
|
130
130
|
- !ruby/object:Gem::Version
|
131
131
|
version: 1.3.0
|
132
|
-
- -
|
132
|
+
- - <
|
133
133
|
- !ruby/object:Gem::Version
|
134
134
|
version: '2.0'
|
135
135
|
type: :runtime
|
136
136
|
prerelease: false
|
137
137
|
version_requirements: !ruby/object:Gem::Requirement
|
138
138
|
requirements:
|
139
|
-
- -
|
139
|
+
- - '>='
|
140
140
|
- !ruby/object:Gem::Version
|
141
141
|
version: 1.3.0
|
142
|
-
- -
|
142
|
+
- - <
|
143
143
|
- !ruby/object:Gem::Version
|
144
144
|
version: '2.0'
|
145
145
|
- !ruby/object:Gem::Dependency
|
146
146
|
name: sprockets-rails
|
147
147
|
requirement: !ruby/object:Gem::Requirement
|
148
148
|
requirements:
|
149
|
-
- -
|
149
|
+
- - ~>
|
150
150
|
- !ruby/object:Gem::Version
|
151
151
|
version: 3.0.0.beta1
|
152
152
|
type: :runtime
|
153
153
|
prerelease: false
|
154
154
|
version_requirements: !ruby/object:Gem::Requirement
|
155
155
|
requirements:
|
156
|
-
- -
|
156
|
+
- - ~>
|
157
157
|
- !ruby/object:Gem::Version
|
158
158
|
version: 3.0.0.beta1
|
159
159
|
description: Ruby on Rails is a full-stack web framework optimized for programmer
|
@@ -308,6 +308,206 @@ files:
|
|
308
308
|
- guides/bug_report_templates/action_controller_master.rb
|
309
309
|
- guides/bug_report_templates/active_record_gem.rb
|
310
310
|
- guides/bug_report_templates/active_record_master.rb
|
311
|
+
- guides/output/2_2_release_notes.html
|
312
|
+
- guides/output/2_3_release_notes.html
|
313
|
+
- guides/output/3_0_release_notes.html
|
314
|
+
- guides/output/3_1_release_notes.html
|
315
|
+
- guides/output/3_2_release_notes.html
|
316
|
+
- guides/output/4_0_release_notes.html
|
317
|
+
- guides/output/4_1_release_notes.html
|
318
|
+
- guides/output/4_2_release_notes.html
|
319
|
+
- guides/output/Gemfile
|
320
|
+
- guides/output/_license.html
|
321
|
+
- guides/output/_welcome.html
|
322
|
+
- guides/output/action_controller_overview.html
|
323
|
+
- guides/output/action_mailer_basics.html
|
324
|
+
- guides/output/action_view_overview.html
|
325
|
+
- guides/output/active_job_basics.html
|
326
|
+
- guides/output/active_model_basics.html
|
327
|
+
- guides/output/active_record_basics.html
|
328
|
+
- guides/output/active_record_callbacks.html
|
329
|
+
- guides/output/active_record_migrations.html
|
330
|
+
- guides/output/active_record_postgresql.html
|
331
|
+
- guides/output/active_record_querying.html
|
332
|
+
- guides/output/active_record_validations.html
|
333
|
+
- guides/output/active_support_core_extensions.html
|
334
|
+
- guides/output/active_support_instrumentation.html
|
335
|
+
- guides/output/api_documentation_guidelines.html
|
336
|
+
- guides/output/asset_pipeline.html
|
337
|
+
- guides/output/association_basics.html
|
338
|
+
- guides/output/caching_with_rails.html
|
339
|
+
- guides/output/command_line.html
|
340
|
+
- guides/output/configuring.html
|
341
|
+
- guides/output/contributing_to_ruby_on_rails.html
|
342
|
+
- guides/output/credits.html
|
343
|
+
- guides/output/debugging_rails_applications.html
|
344
|
+
- guides/output/development_dependencies_install.html
|
345
|
+
- guides/output/engines.html
|
346
|
+
- guides/output/form_helpers.html
|
347
|
+
- guides/output/generators.html
|
348
|
+
- guides/output/getting_started.html
|
349
|
+
- guides/output/i18n.html
|
350
|
+
- guides/output/images/akshaysurve.jpg
|
351
|
+
- guides/output/images/belongs_to.png
|
352
|
+
- guides/output/images/book_icon.gif
|
353
|
+
- guides/output/images/bullet.gif
|
354
|
+
- guides/output/images/chapters_icon.gif
|
355
|
+
- guides/output/images/check_bullet.gif
|
356
|
+
- guides/output/images/credits_pic_blank.gif
|
357
|
+
- guides/output/images/csrf.png
|
358
|
+
- guides/output/images/edge_badge.png
|
359
|
+
- guides/output/images/favicon.ico
|
360
|
+
- guides/output/images/feature_tile.gif
|
361
|
+
- guides/output/images/footer_tile.gif
|
362
|
+
- guides/output/images/fxn.png
|
363
|
+
- guides/output/images/getting_started/article_with_comments.png
|
364
|
+
- guides/output/images/getting_started/challenge.png
|
365
|
+
- guides/output/images/getting_started/confirm_dialog.png
|
366
|
+
- guides/output/images/getting_started/forbidden_attributes_for_new_article.png
|
367
|
+
- guides/output/images/getting_started/forbidden_attributes_for_new_post.png
|
368
|
+
- guides/output/images/getting_started/form_with_errors.png
|
369
|
+
- guides/output/images/getting_started/index_action_with_edit_link.png
|
370
|
+
- guides/output/images/getting_started/new_article.png
|
371
|
+
- guides/output/images/getting_started/new_post.png
|
372
|
+
- guides/output/images/getting_started/post_with_comments.png
|
373
|
+
- guides/output/images/getting_started/rails_welcome.png
|
374
|
+
- guides/output/images/getting_started/routing_error_no_controller.png
|
375
|
+
- guides/output/images/getting_started/routing_error_no_route_matches.png
|
376
|
+
- guides/output/images/getting_started/show_action_for_articles.png
|
377
|
+
- guides/output/images/getting_started/show_action_for_posts.png
|
378
|
+
- guides/output/images/getting_started/template_is_missing_articles_new.png
|
379
|
+
- guides/output/images/getting_started/template_is_missing_posts_new.png
|
380
|
+
- guides/output/images/getting_started/undefined_method_post_path.png
|
381
|
+
- guides/output/images/getting_started/unknown_action_create_for_articles.png
|
382
|
+
- guides/output/images/getting_started/unknown_action_create_for_posts.png
|
383
|
+
- guides/output/images/getting_started/unknown_action_new_for_articles.png
|
384
|
+
- guides/output/images/getting_started/unknown_action_new_for_posts.png
|
385
|
+
- guides/output/images/grey_bullet.gif
|
386
|
+
- guides/output/images/habtm.png
|
387
|
+
- guides/output/images/has_many.png
|
388
|
+
- guides/output/images/has_many_through.png
|
389
|
+
- guides/output/images/has_one.png
|
390
|
+
- guides/output/images/has_one_through.png
|
391
|
+
- guides/output/images/header_backdrop.png
|
392
|
+
- guides/output/images/header_tile.gif
|
393
|
+
- guides/output/images/i18n/demo_html_safe.png
|
394
|
+
- guides/output/images/i18n/demo_localized_pirate.png
|
395
|
+
- guides/output/images/i18n/demo_translated_en.png
|
396
|
+
- guides/output/images/i18n/demo_translated_pirate.png
|
397
|
+
- guides/output/images/i18n/demo_translation_missing.png
|
398
|
+
- guides/output/images/i18n/demo_untranslated.png
|
399
|
+
- guides/output/images/icons/README
|
400
|
+
- guides/output/images/icons/callouts/1.png
|
401
|
+
- guides/output/images/icons/callouts/10.png
|
402
|
+
- guides/output/images/icons/callouts/11.png
|
403
|
+
- guides/output/images/icons/callouts/12.png
|
404
|
+
- guides/output/images/icons/callouts/13.png
|
405
|
+
- guides/output/images/icons/callouts/14.png
|
406
|
+
- guides/output/images/icons/callouts/15.png
|
407
|
+
- guides/output/images/icons/callouts/2.png
|
408
|
+
- guides/output/images/icons/callouts/3.png
|
409
|
+
- guides/output/images/icons/callouts/4.png
|
410
|
+
- guides/output/images/icons/callouts/5.png
|
411
|
+
- guides/output/images/icons/callouts/6.png
|
412
|
+
- guides/output/images/icons/callouts/7.png
|
413
|
+
- guides/output/images/icons/callouts/8.png
|
414
|
+
- guides/output/images/icons/callouts/9.png
|
415
|
+
- guides/output/images/icons/caution.png
|
416
|
+
- guides/output/images/icons/example.png
|
417
|
+
- guides/output/images/icons/home.png
|
418
|
+
- guides/output/images/icons/important.png
|
419
|
+
- guides/output/images/icons/next.png
|
420
|
+
- guides/output/images/icons/note.png
|
421
|
+
- guides/output/images/icons/prev.png
|
422
|
+
- guides/output/images/icons/tip.png
|
423
|
+
- guides/output/images/icons/up.png
|
424
|
+
- guides/output/images/icons/warning.png
|
425
|
+
- guides/output/images/nav_arrow.gif
|
426
|
+
- guides/output/images/oscardelben.jpg
|
427
|
+
- guides/output/images/polymorphic.png
|
428
|
+
- guides/output/images/radar.png
|
429
|
+
- guides/output/images/rails4_features.png
|
430
|
+
- guides/output/images/rails_guides_kindle_cover.jpg
|
431
|
+
- guides/output/images/rails_guides_logo.gif
|
432
|
+
- guides/output/images/rails_logo_remix.gif
|
433
|
+
- guides/output/images/session_fixation.png
|
434
|
+
- guides/output/images/tab_grey.gif
|
435
|
+
- guides/output/images/tab_info.gif
|
436
|
+
- guides/output/images/tab_note.gif
|
437
|
+
- guides/output/images/tab_red.gif
|
438
|
+
- guides/output/images/tab_yellow.gif
|
439
|
+
- guides/output/images/tab_yellow.png
|
440
|
+
- guides/output/images/vijaydev.jpg
|
441
|
+
- guides/output/index.html
|
442
|
+
- guides/output/initialization.html
|
443
|
+
- guides/output/javascripts/guides.js
|
444
|
+
- guides/output/javascripts/jquery.min.js
|
445
|
+
- guides/output/javascripts/responsive-tables.js
|
446
|
+
- guides/output/javascripts/syntaxhighlighter/shBrushAS3.js
|
447
|
+
- guides/output/javascripts/syntaxhighlighter/shBrushAppleScript.js
|
448
|
+
- guides/output/javascripts/syntaxhighlighter/shBrushBash.js
|
449
|
+
- guides/output/javascripts/syntaxhighlighter/shBrushCSharp.js
|
450
|
+
- guides/output/javascripts/syntaxhighlighter/shBrushColdFusion.js
|
451
|
+
- guides/output/javascripts/syntaxhighlighter/shBrushCpp.js
|
452
|
+
- guides/output/javascripts/syntaxhighlighter/shBrushCss.js
|
453
|
+
- guides/output/javascripts/syntaxhighlighter/shBrushDelphi.js
|
454
|
+
- guides/output/javascripts/syntaxhighlighter/shBrushDiff.js
|
455
|
+
- guides/output/javascripts/syntaxhighlighter/shBrushErlang.js
|
456
|
+
- guides/output/javascripts/syntaxhighlighter/shBrushGroovy.js
|
457
|
+
- guides/output/javascripts/syntaxhighlighter/shBrushJScript.js
|
458
|
+
- guides/output/javascripts/syntaxhighlighter/shBrushJava.js
|
459
|
+
- guides/output/javascripts/syntaxhighlighter/shBrushJavaFX.js
|
460
|
+
- guides/output/javascripts/syntaxhighlighter/shBrushPerl.js
|
461
|
+
- guides/output/javascripts/syntaxhighlighter/shBrushPhp.js
|
462
|
+
- guides/output/javascripts/syntaxhighlighter/shBrushPlain.js
|
463
|
+
- guides/output/javascripts/syntaxhighlighter/shBrushPowerShell.js
|
464
|
+
- guides/output/javascripts/syntaxhighlighter/shBrushPython.js
|
465
|
+
- guides/output/javascripts/syntaxhighlighter/shBrushRuby.js
|
466
|
+
- guides/output/javascripts/syntaxhighlighter/shBrushSass.js
|
467
|
+
- guides/output/javascripts/syntaxhighlighter/shBrushScala.js
|
468
|
+
- guides/output/javascripts/syntaxhighlighter/shBrushSql.js
|
469
|
+
- guides/output/javascripts/syntaxhighlighter/shBrushVb.js
|
470
|
+
- guides/output/javascripts/syntaxhighlighter/shBrushXml.js
|
471
|
+
- guides/output/javascripts/syntaxhighlighter/shCore.js
|
472
|
+
- guides/output/layout.html
|
473
|
+
- guides/output/layouts_and_rendering.html
|
474
|
+
- guides/output/maintenance_policy.html
|
475
|
+
- guides/output/migrations.html
|
476
|
+
- guides/output/nested_model_forms.html
|
477
|
+
- guides/output/plugins.html
|
478
|
+
- guides/output/rails_application_templates.html
|
479
|
+
- guides/output/rails_on_rack.html
|
480
|
+
- guides/output/routing.html
|
481
|
+
- guides/output/ruby_on_rails_guides_guidelines.html
|
482
|
+
- guides/output/security.html
|
483
|
+
- guides/output/stylesheets/fixes.css
|
484
|
+
- guides/output/stylesheets/kindle.css
|
485
|
+
- guides/output/stylesheets/main.css
|
486
|
+
- guides/output/stylesheets/print.css
|
487
|
+
- guides/output/stylesheets/reset.css
|
488
|
+
- guides/output/stylesheets/responsive-tables.css
|
489
|
+
- guides/output/stylesheets/style.css
|
490
|
+
- guides/output/stylesheets/syntaxhighlighter/shCore.css
|
491
|
+
- guides/output/stylesheets/syntaxhighlighter/shCoreDefault.css
|
492
|
+
- guides/output/stylesheets/syntaxhighlighter/shCoreDjango.css
|
493
|
+
- guides/output/stylesheets/syntaxhighlighter/shCoreEclipse.css
|
494
|
+
- guides/output/stylesheets/syntaxhighlighter/shCoreEmacs.css
|
495
|
+
- guides/output/stylesheets/syntaxhighlighter/shCoreFadeToGrey.css
|
496
|
+
- guides/output/stylesheets/syntaxhighlighter/shCoreMDUltra.css
|
497
|
+
- guides/output/stylesheets/syntaxhighlighter/shCoreMidnight.css
|
498
|
+
- guides/output/stylesheets/syntaxhighlighter/shCoreRDark.css
|
499
|
+
- guides/output/stylesheets/syntaxhighlighter/shThemeDefault.css
|
500
|
+
- guides/output/stylesheets/syntaxhighlighter/shThemeDjango.css
|
501
|
+
- guides/output/stylesheets/syntaxhighlighter/shThemeEclipse.css
|
502
|
+
- guides/output/stylesheets/syntaxhighlighter/shThemeEmacs.css
|
503
|
+
- guides/output/stylesheets/syntaxhighlighter/shThemeFadeToGrey.css
|
504
|
+
- guides/output/stylesheets/syntaxhighlighter/shThemeMDUltra.css
|
505
|
+
- guides/output/stylesheets/syntaxhighlighter/shThemeMidnight.css
|
506
|
+
- guides/output/stylesheets/syntaxhighlighter/shThemeRDark.css
|
507
|
+
- guides/output/stylesheets/syntaxhighlighter/shThemeRailsGuides.css
|
508
|
+
- guides/output/testing.html
|
509
|
+
- guides/output/upgrading_ruby_on_rails.html
|
510
|
+
- guides/output/working_with_javascript_in_rails.html
|
311
511
|
- guides/rails_guides.rb
|
312
512
|
- guides/rails_guides/generator.rb
|
313
513
|
- guides/rails_guides/helpers.rb
|
@@ -387,17 +587,17 @@ require_paths:
|
|
387
587
|
- lib
|
388
588
|
required_ruby_version: !ruby/object:Gem::Requirement
|
389
589
|
requirements:
|
390
|
-
- -
|
590
|
+
- - '>='
|
391
591
|
- !ruby/object:Gem::Version
|
392
592
|
version: 1.9.3
|
393
593
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
394
594
|
requirements:
|
395
|
-
- -
|
595
|
+
- - '>='
|
396
596
|
- !ruby/object:Gem::Version
|
397
597
|
version: 1.8.11
|
398
598
|
requirements: []
|
399
599
|
rubyforge_project:
|
400
|
-
rubygems_version: 2.2.
|
600
|
+
rubygems_version: 2.2.1
|
401
601
|
signing_key:
|
402
602
|
specification_version: 4
|
403
603
|
summary: Full-stack web application framework.
|