railties 3.2.0.rc2 → 3.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (31) hide show
  1. data/CHANGELOG.md +1 -1
  2. data/guides/code/getting_started/Gemfile +17 -6
  3. data/guides/code/getting_started/app/assets/javascripts/application.js +9 -3
  4. data/guides/code/getting_started/app/assets/stylesheets/application.css +11 -5
  5. data/guides/code/getting_started/app/views/layouts/application.html.erb +1 -1
  6. data/guides/code/getting_started/config/application.rb +7 -1
  7. data/guides/code/getting_started/config/environments/test.rb +3 -3
  8. data/guides/code/getting_started/config/initializers/inflections.rb +5 -0
  9. data/guides/code/getting_started/config/routes.rb +4 -4
  10. data/guides/code/getting_started/public/500.html +0 -1
  11. data/guides/source/3_1_release_notes.textile +1 -1
  12. data/guides/source/3_2_release_notes.textile +106 -18
  13. data/guides/source/_welcome.html.erb +1 -1
  14. data/guides/source/active_record_querying.textile +11 -0
  15. data/guides/source/asset_pipeline.textile +56 -4
  16. data/guides/source/configuring.textile +1 -0
  17. data/guides/source/contributing_to_ruby_on_rails.textile +2 -0
  18. data/guides/source/documents.yaml +4 -0
  19. data/guides/source/form_helpers.textile +2 -2
  20. data/guides/source/getting_started.textile +18 -12
  21. data/guides/source/layout.html.erb +0 -1
  22. data/lib/rails/application.rb +20 -0
  23. data/lib/rails/application/configuration.rb +1 -0
  24. data/lib/rails/application/route_inspector.rb +1 -1
  25. data/lib/rails/commands/benchmarker.rb +1 -1
  26. data/lib/rails/commands/profiler.rb +1 -1
  27. data/lib/rails/generators/app_base.rb +15 -3
  28. data/lib/rails/generators/rails/app/templates/config/environments/development.rb.tt +1 -1
  29. data/lib/rails/generators/rails/app/templates/config/environments/test.rb.tt +1 -1
  30. data/lib/rails/version.rb +1 -1
  31. metadata +65 -119
@@ -1,4 +1,4 @@
1
- ## Rails 3.2.0 (unreleased) ##
1
+ ## Rails 3.2.0 (January 20, 2012) ##
2
2
 
3
3
  * Rails 2.3-style plugins in vendor/plugins are deprecated and will be removed in Rails 4.0. Move them out of vendor/plugins and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. *Santiago Pastorino*
4
4
 
@@ -1,8 +1,9 @@
1
- source 'http://rubygems.org'
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'rails', '3.2.0'
2
4
 
3
- gem 'rails', '3.1.0'
4
5
  # Bundle edge Rails instead:
5
- # gem 'rails', :git => 'git://github.com/rails/rails.git'
6
+ # gem 'rails', :git => 'git://github.com/rails/rails.git'
6
7
 
7
8
  gem 'sqlite3'
8
9
 
@@ -10,13 +11,23 @@ gem 'sqlite3'
10
11
  # Gems used only for assets and not required
11
12
  # in production environments by default.
12
13
  group :assets do
13
- gem 'sass-rails', " ~> 3.1.0"
14
- gem 'coffee-rails', "~> 3.1.0"
15
- gem 'uglifier'
14
+ gem 'sass-rails', '~> 3.2.3'
15
+ gem 'coffee-rails', '~> 3.2.1'
16
+
17
+ # See https://github.com/sstephenson/execjs#readme for more supported runtimes
18
+ # gem 'therubyracer'
19
+
20
+ gem 'uglifier', '>= 1.0.3'
16
21
  end
17
22
 
18
23
  gem 'jquery-rails'
19
24
 
25
+ # To use ActiveModel has_secure_password
26
+ # gem 'bcrypt-ruby', '~> 3.0.0'
27
+
28
+ # To use Jbuilder templates for JSON
29
+ # gem 'jbuilder'
30
+
20
31
  # Use unicorn as the web server
21
32
  # gem 'unicorn'
22
33
 
@@ -1,9 +1,15 @@
1
- // This is a manifest file that'll be compiled into including all the files listed below.
2
- // Add new JavaScript/Coffee code in separate files in this directory and they'll automatically
3
- // be included in the compiled file accessible from http://example.com/assets/application.js
1
+ // This is a manifest file that'll be compiled into application.js, which will include all the files
2
+ // listed below.
3
+ //
4
+ // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
5
+ // or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
6
+ //
4
7
  // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
5
8
  // the compiled file.
6
9
  //
10
+ // WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
11
+ // GO AFTER THE REQUIRES BELOW.
12
+ //
7
13
  //= require jquery
8
14
  //= require jquery_ujs
9
15
  //= require_tree .
@@ -1,7 +1,13 @@
1
1
  /*
2
- * This is a manifest file that'll automatically include all the stylesheets available in this directory
3
- * and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
4
- * the top of the compiled file, but it's generally better to create a new file per style scope.
2
+ * This is a manifest file that'll be compiled into application.css, which will include all the files
3
+ * listed below.
4
+ *
5
+ * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6
+ * or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
7
+ *
8
+ * You're free to add application-wide styles to this file and they'll appear at the top of the
9
+ * compiled file, but it's generally better to create a new file per style scope.
10
+ *
5
11
  *= require_self
6
- *= require_tree .
7
- */
12
+ *= require_tree .
13
+ */
@@ -6,7 +6,7 @@
6
6
  <%= javascript_include_tag "application" %>
7
7
  <%= csrf_meta_tags %>
8
8
  </head>
9
- <body style="background: #EEEEEE;">
9
+ <body>
10
10
 
11
11
  <%= yield %>
12
12
 
@@ -4,7 +4,7 @@ require 'rails/all'
4
4
 
5
5
  if defined?(Bundler)
6
6
  # If you precompile assets before deploying to production, use this line
7
- Bundler.require *Rails.groups(:assets => %w(development test))
7
+ Bundler.require(*Rails.groups(:assets => %w(development test)))
8
8
  # If you want your assets lazily compiled in production, use this line
9
9
  # Bundler.require(:default, :assets, Rails.env)
10
10
  end
@@ -44,6 +44,12 @@ module Blog
44
44
  # like if you have constraints or database-specific column types
45
45
  # config.active_record.schema_format = :sql
46
46
 
47
+ # Enforce whitelist mode for mass assignment.
48
+ # This will create an empty whitelist of attributes available for mass-assignment for all models
49
+ # in your app. As such, your models will need to explicitly whitelist or blacklist accessible
50
+ # parameters by using an attr_accessible or attr_protected declaration.
51
+ # config.active_record.whitelist_attributes = true
52
+
47
53
  # Enable the asset pipeline
48
54
  config.assets.enabled = true
49
55
 
@@ -29,9 +29,9 @@ Blog::Application.configure do
29
29
  # ActionMailer::Base.deliveries array.
30
30
  config.action_mailer.delivery_method = :test
31
31
 
32
+ # Raise exception on mass assignment protection for Active Record models
33
+ config.active_record.mass_assignment_sanitizer = :strict
34
+
32
35
  # Print deprecation notices to the stderr
33
36
  config.active_support.deprecation = :stderr
34
-
35
- # Allow pass debug_assets=true as a query parameter to load pages with unpackaged assets
36
- config.assets.allow_debugging = true
37
37
  end
@@ -8,3 +8,8 @@
8
8
  # inflect.irregular 'person', 'people'
9
9
  # inflect.uncountable %w( fish sheep )
10
10
  # end
11
+ #
12
+ # These inflection rules are supported but not enabled by default:
13
+ # ActiveSupport::Inflector.inflections do |inflect|
14
+ # inflect.acronym 'RESTful'
15
+ # end
@@ -1,7 +1,7 @@
1
1
  Blog::Application.routes.draw do
2
- resources :posts do
3
- resources :comments
4
- end
2
+ resources :posts do
3
+ resources :comments
4
+ end
5
5
 
6
6
  get "home/index"
7
7
 
@@ -60,5 +60,5 @@ Blog::Application.routes.draw do
60
60
 
61
61
  # This is a legacy wild controller route that's not recommended for RESTful applications.
62
62
  # Note: This route will make all actions in every controller accessible via GET requests.
63
- # match ':controller(/:action(/:id(.:format)))'
63
+ # match ':controller(/:action(/:id))(.:format)'
64
64
  end
@@ -20,7 +20,6 @@
20
20
  <!-- This file lives in public/500.html -->
21
21
  <div class="dialog">
22
22
  <h1>We're sorry, but something went wrong.</h1>
23
- <p>We've been notified about this issue and we'll take a look at it shortly.</p>
24
23
  </div>
25
24
  </body>
26
25
  </html>
@@ -46,7 +46,7 @@ $ rails new myapp --edge
46
46
  If you have a local checkout of the Rails repository and want to generate an application using that, you can pass the +--dev+ flag:
47
47
 
48
48
  <shell>
49
- $ ruby /path/to/rails/bin/rails new myapp --dev
49
+ $ ruby /path/to/rails/railties/bin/rails new myapp --dev
50
50
  </shell>
51
51
 
52
52
  h3. Rails Architectural Changes
@@ -7,19 +7,47 @@ Highlights in Rails 3.2:
7
7
  * Automatic Query Explains
8
8
  * Tagged Logging
9
9
 
10
- This release notes cover the major changes, but don't include every little bug fix and change. If you want to see everything, check out the "list of commits":https://github.com/rails/rails/commits/3-2-stable in the main Rails repository on GitHub.
10
+ These release notes cover the major changes, but do not include each bug-fix and changes. If you want to see everything, check out the "list of commits":https://github.com/rails/rails/commits/3-2-stable in the main Rails repository on GitHub.
11
11
 
12
12
  endprologue.
13
13
 
14
14
  h3. Upgrading to Rails 3.2
15
15
 
16
- If you're upgrading an existing application, it's a great idea to have good test coverage before going in. You should also first upgrade to Rails 3.1 in case you haven't and make sure your application still runs as expected before attempting to update to Rails 3.2. Then take heed of the following changes:
16
+ If you're upgrading an existing application, it's a great idea to have good test coverage before going in. You should also first upgrade to Rails 3.1 in case you haven't and make sure your application still runs as expected before attempting an update to Rails 3.2. Then take heed of the following changes:
17
17
 
18
18
  h4. Rails 3.2 requires at least Ruby 1.8.7
19
19
 
20
20
  Rails 3.2 requires Ruby 1.8.7 or higher. Support for all of the previous Ruby versions has been dropped officially and you should upgrade as early as possible. Rails 3.2 is also compatible with Ruby 1.9.2.
21
21
 
22
- TIP: Note that Ruby 1.8.7 p248 and p249 have marshaling bugs that crash Rails. Ruby Enterprise Edition have these fixed since release 1.8.7-2010.02. On the 1.9 front, Ruby 1.9.1 is not usable because it outright segfaults, so if you want to use 1.9.x, jump on 1.9.2 or 1.9.3 for smooth sailing.
22
+ TIP: Note that Ruby 1.8.7 p248 and p249 have marshaling bugs that crash Rails. Ruby Enterprise Edition has these fixed since the release of 1.8.7-2010.02. On the 1.9 front, Ruby 1.9.1 is not usable because it outright segfaults, so if you want to use 1.9.x, jump on to 1.9.2 or 1.9.3 for smooth sailing.
23
+
24
+ h4. What to update in your apps
25
+
26
+ * Update your Gemfile to depend on
27
+ ** <tt>rails = 3.2.0</tt>
28
+ ** <tt>sass-rails ~> 3.2.3</tt>
29
+ ** <tt>coffee-rails ~> 3.2.1</tt>
30
+ ** <tt>uglifier >= 1.0.3</tt>
31
+
32
+ * Rails 3.2 deprecates <tt>vendor/plugins</tt> and Rails 4.0 will remove them completely. You can start replacing these plugins by extracting them as gems and adding them in your Gemfile. If you choose not to make them gems, you can move them into, say, <tt>lib/my_plugin/*</tt> and add an appropriate initializer in <tt>config/initializers/my_plugin.rb</tt>.
33
+
34
+ * There are a couple of new configuration changes you'd want to add in <tt>config/environments/development.rb</tt>:
35
+
36
+ <ruby>
37
+ # Raise exception on mass assignment protection for Active Record models
38
+ config.active_record.mass_assignment_sanitizer = :strict
39
+
40
+ # Log the query plan for queries taking more than this (works
41
+ # with SQLite, MySQL, and PostgreSQL)
42
+ config.active_record.auto_explain_threshold_in_seconds = 0.5
43
+ </ruby>
44
+
45
+ The <tt>mass_assignment_sanitizer</tt> config also needs to be added in <tt>config/environments/test.rb</tt>:
46
+
47
+ <ruby>
48
+ # Raise exception on mass assignment protection for Active Record models
49
+ config.active_record.mass_assignment_sanitizer = :strict
50
+ </ruby>
23
51
 
24
52
  h3. Creating a Rails 3.2 application
25
53
 
@@ -33,7 +61,7 @@ h4. Vendoring Gems
33
61
 
34
62
  Rails now uses a +Gemfile+ in the application root to determine the gems you require for your application to start. This +Gemfile+ is processed by the "Bundler":https://github.com/carlhuda/bundler gem, which then installs all your dependencies. It can even install all the dependencies locally to your application so that it doesn't depend on the system gems.
35
63
 
36
- More information: - "bundler homepage":http://gembundler.com
64
+ More information: "Bundler homepage":http://gembundler.com
37
65
 
38
66
  h4. Living on the Edge
39
67
 
@@ -46,7 +74,7 @@ $ rails new myapp --edge
46
74
  If you have a local checkout of the Rails repository and want to generate an application using that, you can pass the +--dev+ flag:
47
75
 
48
76
  <shell>
49
- $ ruby /path/to/rails/bin/rails new myapp --dev
77
+ $ ruby /path/to/rails/railties/bin/rails new myapp --dev
50
78
  </shell>
51
79
 
52
80
  h3. Major Features
@@ -63,10 +91,13 @@ Queries that take more than half a second to run are *automatically* explained i
63
91
 
64
92
  h4. Tagged Logging
65
93
 
66
- When running a multi-user, multi-account application, it's a great help to be able to filter the log by who did what. TaggedLogging in Active Support helps in doing exactly that by stamping log lines with subdomains, request ids, and anything else to aid debugging of such applications.
94
+ When running a multi-user, multi-account application, it's a great help to be able to filter the log by who did what. TaggedLogging in Active Support helps in doing exactly that by stamping log lines with subdomains, request ids, and anything else to aid debugging such applications.
67
95
 
68
- h3. Railties
96
+ h3. Documentation
97
+
98
+ From Rails 3.2, the Rails guides are available for the Kindle and free Kindle Reading Apps for the iPad, iPhone, Mac, Android, etc.
69
99
 
100
+ h3. Railties
70
101
 
71
102
  * Speed up development by only reloading classes if dependencies files changed. This can be turned off by setting <tt>config.reload_classes_only_on_change</tt> to false.
72
103
 
@@ -86,9 +117,9 @@ config.railties_order = [Blog::Engine, :main_app, :all]
86
117
 
87
118
  * Scaffold returns 204 No Content for API requests without content. This makes scaffold work with jQuery out of the box.
88
119
 
89
- * Update Rails::Rack::Logger middleware to apply any tags set in config.log_tags to the newly ActiveSupport::TaggedLogging Rails.logger. This makes it easy to tag log lines with debug information like subdomain and request id -- both very helpful in debugging multi-user production applications
120
+ * Update <tt>Rails::Rack::Logger</tt> middleware to apply any tags set in <tt>config.log_tags</tt> to <tt>ActiveSupport::TaggedLogging</tt>. This makes it easy to tag log lines with debug information like subdomain and request id -- both very helpful in debugging multi-user production applications.
90
121
 
91
- * Default options to +rails new+ can be set in <tt>~/.railsrc</tt>.
122
+ * Default options to +rails new+ can be set in <tt>~/.railsrc</tt>. You can specify extra command-line arguments to be used every time 'rails new' runs in the <tt>.railsrc</tt> configuration file in your home directory.
92
123
 
93
124
  * Add an alias +d+ for +destroy+. This works for engines too.
94
125
 
@@ -102,14 +133,22 @@ rails g scaffold Post title:string:index author:uniq price:decimal{7,2}
102
133
 
103
134
  will create indexes for +title+ and +author+ with the latter being an unique index. Some types such as decimal accept custom options. In the example, +price+ will be a decimal column with precision and scale set to 7 and 2 respectively.
104
135
 
136
+ * Turn gem has been removed from default Gemfile.
137
+
105
138
  * Remove old plugin generator +rails generate plugin+ in favor of +rails plugin new+ command.
106
139
 
107
140
  * Remove old <tt>config.paths.app.controller</tt> API in favor of <tt>config.paths["app/controller"]</tt>.
108
141
 
109
- h4. Deprecations
142
+ h4(#railties_deprecations). Deprecations
110
143
 
111
144
  * +Rails::Plugin+ is deprecated and will be removed in Rails 4.0. Instead of adding plugins to +vendor/plugins+ use gems or bundler with path or git dependencies.
112
145
 
146
+ h3. Action Mailer
147
+
148
+ * Upgraded <tt>mail</tt> version to 2.4.0.
149
+
150
+ * Removed the old Action Mailer API which was deprecated since Rails 3.0.
151
+
113
152
  h3. Action Pack
114
153
 
115
154
  h4. Action Controller
@@ -166,7 +205,7 @@ We now no longer write out HTTP_COOKIE and the cookie jar is persistent between
166
205
 
167
206
  * Assets should use the request protocol by default or default to relative if no request is available.
168
207
 
169
- h5. Deprecations
208
+ h5(#actioncontroller_deprecations). Deprecations
170
209
 
171
210
  * Deprecated implied layout lookup in controllers whose parent had a explicit layout set:
172
211
 
@@ -181,14 +220,28 @@ end
181
220
 
182
221
  In the example above, Posts controller will no longer automatically look up for a posts layout. If you need this functionality you could either remove <tt>layout "application"</tt> from +ApplicationController+ or explicitly set it to +nil+ in +PostsController+.
183
222
 
223
+ * Deprecated <tt>ActionController::UnknownAction</tt> in favour of <tt>AbstractController::ActionNotFound</tt>.
224
+
225
+ * Deprecated <tt>ActionController::DoubleRenderError</tt> in favour of <tt>AbstractController::DoubleRenderError</tt>.
226
+
227
+ * Deprecated <tt>method_missing</tt> in favour of +action_missing+ for missing actions.
228
+
229
+ * Deprecated <tt>ActionController#rescue_action</tt>, <tt>ActionController#initialize_template_class</tt> and <tt>ActionController#assign_shortcuts</tt>.
230
+
184
231
  h4. Action Dispatch
185
232
 
233
+ * Add <tt>config.action_dispatch.default_charset</tt> to configure default charset for <tt>ActionDispatch::Response</tt>.
234
+
186
235
  * Added <tt>ActionDispatch::RequestId</tt> middleware that'll make a unique X-Request-Id header available to the response and enables the <tt>ActionDispatch::Request#uuid</tt> method. This makes it easy to trace requests from end-to-end in the stack and to identify individual requests in mixed logs like Syslog.
187
236
 
188
237
  * The <tt>ShowExceptions</tt> middleware now accepts a exceptions application that is responsible to render an exception when the application fails. The application is invoked with a copy of the exception in +env["action_dispatch.exception"]+ and with the <tt>PATH_INFO</tt> rewritten to the status code.
189
238
 
190
239
  * Allow rescue responses to be configured through a railtie as in <tt>config.action_dispatch.rescue_responses</tt>.
191
240
 
241
+ h5(#actiondispatch_deprecations). Deprecations
242
+
243
+ * Deprecated the ability to set a default charset at the controller level, use the new <tt>config.action_dispatch.default_charset</tt> instead.
244
+
192
245
  h4. Action View
193
246
 
194
247
  * Add +button_tag+ support to <tt>ActionView::Helpers::FormBuilder</tt>. This support mimics the default behavior of +submit_tag+.
@@ -199,7 +252,7 @@ h4. Action View
199
252
  <% end %>
200
253
  </ruby>
201
254
 
202
- * Date helpers accept a new option <tt>:use_two_digit_numbers => true</tt>, that renders select boxes for months and days with a leading zero without changing the respective values. For example, this is useful for displaying ISO8601-style dates such as '2011-08-01'.
255
+ * Date helpers accept a new option <tt>:use_two_digit_numbers => true</tt>, that renders select boxes for months and days with a leading zero without changing the respective values. For example, this is useful for displaying ISO 8601-style dates such as '2011-08-01'.
203
256
 
204
257
  * You can provide a namespace for your form to ensure uniqueness of id attributes on form elements. The namespace attribute will be prefixed with underscore on the generated HTML id.
205
258
 
@@ -232,17 +285,25 @@ end
232
285
 
233
286
  * Added +font_path+ helper method that computes the path to a font asset in <tt>public/fonts</tt>.
234
287
 
235
- h5. Deprecations
288
+ h5(#actionview_deprecations). Deprecations
236
289
 
237
290
  * Passing formats or handlers to render :template and friends like <tt>render :template => "foo.html.erb"</tt> is deprecated. Instead, you can provide :handlers and :formats directly as an options: <tt> render :template => "foo", :formats => [:html, :js], :handlers => :erb</tt>.
238
291
 
292
+ h4. Sprockets
293
+
294
+ * Adds a configuration option <tt>config.assets.logger</tt> to control Sprockets logging. Set it to +false+ to turn off logging and to +nil+ to default to +Rails.logger+.
295
+
239
296
  h3. Active Record
240
297
 
298
+ * Boolean columns with 'on' and 'ON' values are type casted to true.
299
+
300
+ * When the +timestamps+ method creates the +created_at+ and +updated_at+ columns, it makes them non-nullable by default.
301
+
241
302
  * Implemented <tt>ActiveRecord::Relation#explain</tt>.
242
303
 
243
304
  * Implements <tt>AR::Base.silence_auto_explain</tt> which allows the user to selectively disable automatic EXPLAINs within a block.
244
305
 
245
- * Implements automatic EXPLAIN logging for slow queries. A new configuration parameter +config.active_record.auto_explain_threshold_in_seconds+ determines what's to be considered a slow query. Setting that to nil disables this feature. Defaults are 0.5 in development mode, and nil in test and production modes. As of this writing there's support for SQLite, MySQL (mysql2 adapter), and PostgreSQL.
306
+ * Implements automatic EXPLAIN logging for slow queries. A new configuration parameter +config.active_record.auto_explain_threshold_in_seconds+ determines what's to be considered a slow query. Setting that to nil disables this feature. Defaults are 0.5 in development mode, and nil in test and production modes. Rails 3.2 supports this feature in SQLite, MySQL (mysql2 adapter), and PostgreSQL.
246
307
 
247
308
  * Added <tt>ActiveRecord::Base.store</tt> for declaring simple single-column key/value stores.
248
309
 
@@ -311,7 +372,34 @@ has_many :clients, :class_name => :Client # Note that the symbol need to be capi
311
372
  User.where(:first_name => "Scarlett").first_or_create!(:last_name => "Johansson")
312
373
  </ruby>
313
374
 
314
- h4. Deprecations
375
+ * Added a <tt>with_lock</tt> method to Active Record objects, which starts a transaction, locks the object (pessimistically) and yields to the block. The method takes one (optional) parameter and passes it to +lock!+.
376
+
377
+ This makes it possible to write the following:
378
+
379
+ <ruby>
380
+ class Order < ActiveRecord::Base
381
+ def cancel!
382
+ transaction do
383
+ lock!
384
+ # ... cancelling logic
385
+ end
386
+ end
387
+ end
388
+ </ruby>
389
+
390
+ as:
391
+
392
+ <ruby>
393
+ class Order < ActiveRecord::Base
394
+ def cancel!
395
+ with_lock do
396
+ # ... cancelling logic
397
+ end
398
+ end
399
+ end
400
+ </ruby>
401
+
402
+ h4(#activerecord_deprecations). Deprecations
315
403
 
316
404
  * Automatic closure of connections in threads is deprecated. For example the following code is deprecated:
317
405
 
@@ -359,7 +447,7 @@ h3. Active Model
359
447
 
360
448
  * Provide mass_assignment_sanitizer as an easy API to replace the sanitizer behavior. Also support both :logger (default) and :strict sanitizer behavior.
361
449
 
362
- h4. Deprecations
450
+ h4(#activemodel_deprecations). Deprecations
363
451
 
364
452
  * Deprecated <tt>define_attr_method</tt> in <tt>ActiveModel::AttributeMethods</tt> because this only existed to support methods like +set_table_name+ in Active Record, which are themselves being deprecated.
365
453
 
@@ -419,7 +507,7 @@ Event.where(:created_at => Time.now.all_day)
419
507
 
420
508
  * Removed <tt>ActiveSupport::SecureRandom</tt> in favor of <tt>SecureRandom</tt> from the standard library.
421
509
 
422
- h4. Deprecations
510
+ h4(#activesupport_deprecations). Deprecations
423
511
 
424
512
  * +ActiveSupport::Base64+ is deprecated in favor of <tt>::Base64</tt>.
425
513
 
@@ -429,7 +517,7 @@ h4. Deprecations
429
517
 
430
518
  * Deprecated <tt>ActiveSupport::MessageEncryptor#encrypt</tt> and <tt>ActiveSupport::MessageEncryptor#decrypt</tt>.
431
519
 
432
- * <tt>ActiveSupport::BufferedLogger#silence</tt> is deprecated. If you want to squelch logs for a certain block, change the log level for that block.
520
+ * <tt>ActiveSupport::BufferedLogger#silence</tt> is deprecated. If you want to squelch logs for a certain block, change the log level for that block.
433
521
 
434
522
  * <tt>ActiveSupport::BufferedLogger#open_log</tt> is deprecated. This method should not have been public in the first place.
435
523
 
@@ -10,7 +10,7 @@
10
10
  </p>
11
11
  <% else %>
12
12
  <p>
13
- These are the new guides for Rails 3.1 based on <a href="https://github.com/rails/rails/tree/<%= @version %>"><%= @version %></a>.
13
+ These are the new guides for Rails 3.2 based on <a href="https://github.com/rails/rails/tree/<%= @version %>"><%= @version %></a>.
14
14
  These guides are designed to make you immediately productive with Rails, and to help you understand how all of the pieces fit together.
15
15
  </p>
16
16
  <% end %>
@@ -692,6 +692,17 @@ Item.transaction do
692
692
  end
693
693
  </ruby>
694
694
 
695
+ If you already have an instance of your model, you can start a transaction and acquire the lock in one go using the following code:
696
+
697
+ <ruby>
698
+ item = Item.first
699
+ item.with_lock do
700
+ # This block is called within a transaction,
701
+ # item is already locked.
702
+ item.increment!(:views)
703
+ end
704
+ </ruby>
705
+
695
706
  h3. Joining Tables
696
707
 
697
708
  Active Record provides a finder method called +joins+ for specifying +JOIN+ clauses on the resulting SQL. There are multiple ways to use the +joins+ method.
@@ -109,22 +109,74 @@ NOTE: You must have an "ExecJS":https://github.com/sstephenson/execjs#readme sup
109
109
 
110
110
  h4. Asset Organization
111
111
 
112
- Assets that must be precompiled can be placed inside an application in one of three locations: +app/assets+, +lib/assets+ or +vendor/assets+.
112
+ Pipeline assets can be placed inside an application in one of three locations: +app/assets+, +lib/assets+ or +vendor/assets+.
113
113
 
114
114
  +app/assets+ is for assets that are owned by the application, such as custom images, JavaScript files or stylesheets.
115
115
 
116
116
  +lib/assets+ is for your own libraries' code that doesn't really fit into the scope of the application or those libraries which are shared across applications.
117
117
 
118
- +vendor/assets+ is for assets that are owned by outside entities, such as code for JavaScript plugins.
118
+ +vendor/assets+ is for assets that are owned by outside entities, such as code for JavaScript plugins and CSS frameworks.
119
119
 
120
- All subdirectories that exist within these three locations are added to the search path for Sprockets. You can see this search path by inspecting +Rails.application.config.assets.paths+ in the Rails console. When a client requests an asset, these paths are traversed (in the order that they occur in the search path) to see if they contain an asset matching the name specified. If an asset is found, it's processed by Sprockets and served.
120
+ h5. Search paths
121
121
 
122
- You can add additional (fully qualified) paths to the pipeline in +config/application.rb+. For example:
122
+ When a file is referenced from a manifest or a helper, Sprockets searches the three default asset locations for it.
123
+
124
+ The default locations are: +app/assets/images+ and the subdirectories +javascripts+ and +stylesheets+ in all three asset locations.
125
+
126
+ For example, these files:
127
+
128
+ <plain>
129
+ app/assets/javascripts/home.js
130
+ lib/assets/javascripts/moovinator.js
131
+ vendor/assets/javascript/slider.js
132
+ </plain>
133
+
134
+ would be referenced in a manifest like this:
135
+
136
+ <plain>
137
+ //= require home
138
+ //= require moovinator
139
+ //= require slider
140
+ </plain>
141
+
142
+ Assets inside subdirectories can also be accessed.
143
+
144
+ <plain>
145
+ app/assets/javascripts/sub/something.js
146
+ </plain>
147
+
148
+ is referenced as:
149
+
150
+ <plain>
151
+ //= require sub/something
152
+ </plain>
153
+
154
+ You can view the search path by inspecting +Rails.application.config.assets.paths+ in the Rails console.
155
+
156
+ Additional (fully qualified) paths can be added to the pipeline in +config/application.rb+. For example:
123
157
 
124
158
  <ruby>
125
159
  config.assets.paths << Rails.root.join("app", "assets", "flash")
126
160
  </ruby>
127
161
 
162
+ Paths are traversed in the order that they occur in the search path.
163
+
164
+ It is important to note that files you want to reference outside a manifest must be added to the precompile array or they will not be available in the production environment.
165
+
166
+ h5. Using index files
167
+
168
+ Sprockets uses files named +index+ (with the relevant extensions) for a special purpose.
169
+
170
+ For example, if you have a jQuery library with many modules, which is stored in +lib/assets/library_name+, the file +lib/assets/library_name/index.js+ serves as the manifest for all files in this library. This file could include a list of all the required files in order, or a simple <tt>require_tree</tt> directive.
171
+
172
+ The library as a whole can be accessed in the site's application manifest like so:
173
+
174
+ <plain>
175
+ //= require library_name
176
+ </plain>
177
+
178
+ This simplifies maintenance and keeps things clean by allowing related code to be grouped before inclusion elsewhere.
179
+
128
180
  h4. Coding Links to Assets
129
181
 
130
182
  Sprockets does not add any new methods to access your assets - you still use the familiar +javascript_include_tag+ and +stylesheet_link_tag+.
@@ -156,6 +156,7 @@ Rails 3.1, by default, is set up to use the +sprockets+ gem to manage assets wit
156
156
 
157
157
  * +config.assets.compile+ is a boolean that can be used to turn on live Sprockets compilation in production.
158
158
 
159
+ * +config.assets.logger+ accepts a logger conforming to the interface of Log4r or the default Ruby +Logger+ class. Defaults to the same configured at +config.logger+. Setting +config.assets.logger+ to false will turn off served assets logging.
159
160
 
160
161
  h4. Configuring Generators
161
162
 
@@ -271,6 +271,8 @@ When working with documentation, please take into account the "API Documentation
271
271
 
272
272
  NOTE: As explained earlier, ordinary code patches should have proper documentation coverage. docrails is only used for isolated documentation improvements.
273
273
 
274
+ NOTE: To help our CI servers you can add [ci skip] tag to your documentation commit message to skip build on that commit. Please remember to use it for commits containing only documentation changes.
275
+
274
276
  WARNING: docrails has a very strict policy: no code can be touched whatsoever, no matter how trivial or small the change. Only RDoc and guides can be edited via docrails. Also, CHANGELOGs should never be edited in docrails.
275
277
 
276
278
  h3. Contributing to the Rails Code
@@ -136,6 +136,10 @@
136
136
  name: Release Notes
137
137
  documents:
138
138
  -
139
+ name: Ruby on Rails 3.2 Release Notes
140
+ url: 3_2_release_notes.html
141
+ description: Release notes for Rails 3.2.
142
+ -
139
143
  name: Ruby on Rails 3.1 Release Notes
140
144
  url: 3_1_release_notes.html
141
145
  description: Release notes for Rails 3.1.
@@ -630,10 +630,10 @@ action for a Person model, +params[:model]+ would usually be a hash of all the a
630
630
 
631
631
  Fundamentally HTML forms don't know about any sort of structured data, all they generate is name–value pairs, where pairs are just plain strings. The arrays and hashes you see in your application are the result of some parameter naming conventions that Rails uses.
632
632
 
633
- TIP: You may find you can try out examples in this section faster by using the console to directly invoke Rails' parameter parser. For example,
633
+ TIP: You may find you can try out examples in this section faster by using the console to directly invoke Racks' parameter parser. For example,
634
634
 
635
635
  <ruby>
636
- ActionController::UrlEncodedPairParser.parse_query_parameters "name=fred&phone=0123456789"
636
+ Rack::Utils.parse_query "name=fred&phone=0123456789"
637
637
  # => {"name"=>"fred", "phone"=>"0123456789"}
638
638
  </ruby>
639
639
 
@@ -450,7 +450,13 @@ start a web server on your development machine. You can do this by running:
450
450
  $ rails server
451
451
  </shell>
452
452
 
453
- TIP: Compiling CoffeeScript to JavaScript requires a JavaScript runtime and the absence of a runtime will give you an +execjs+ error. Usually Mac OS X and Windows come with a JavaScript runtime installed. +therubyracer+ and +therubyrhino+ are the commonly used runtimes for Ruby and JRuby respectively. You can also investigate a list of runtimes at "ExecJS":https://github.com/sstephenson/execjs.
453
+ TIP: Compiling CoffeeScript to JavaScript requires a JavaScript runtime and
454
+ the absence of a runtime will give you an +execjs+ error. Usually Mac OS X
455
+ and Windows come with a JavaScript runtime installed. Rails adds the +therubyracer+ gem
456
+ to Gemfile in a commented line for new apps and you can uncomment if you need it.
457
+ +therubyrhino+ is the recommended runtime for JRuby users and is added by default
458
+ to Gemfile in apps generated under JRuby. You can investigate about all the
459
+ supported runtimes at "ExecJS":https://github.com/sstephenson/execjs#readme.
454
460
 
455
461
  This will fire up an instance of the WEBrick web server by default (Rails can
456
462
  also use several other web servers). To see your application in action, open a
@@ -1011,7 +1017,7 @@ by its id value. After finding the record, Rails displays it by using
1011
1017
  +app/views/posts/show.html.erb+:
1012
1018
 
1013
1019
  <erb>
1014
- <p class="notice"><%= notice %></p>
1020
+ <p id="notice"><%= notice %></p>
1015
1021
 
1016
1022
  <p>
1017
1023
  <b>Name:</b>
@@ -1278,7 +1284,7 @@ So first, we'll wire up the Post show template
1278
1284
  (+/app/views/posts/show.html.erb+) to let us make a new comment:
1279
1285
 
1280
1286
  <erb>
1281
- <p class="notice"><%= notice %></p>
1287
+ <p id="notice"><%= notice %></p>
1282
1288
 
1283
1289
  <p>
1284
1290
  <b>Name:</b>
@@ -1344,7 +1350,7 @@ template. This is where we want the comment to show, so let's add that to the
1344
1350
  +app/views/posts/show.html.erb+.
1345
1351
 
1346
1352
  <erb>
1347
- <p class="notice"><%= notice %></p>
1353
+ <p id="notice"><%= notice %></p>
1348
1354
 
1349
1355
  <p>
1350
1356
  <b>Name:</b>
@@ -1426,7 +1432,7 @@ Then you can change +app/views/posts/show.html.erb+ to look like the
1426
1432
  following:
1427
1433
 
1428
1434
  <erb>
1429
- <p class="notice"><%= notice %></p>
1435
+ <p id="notice"><%= notice %></p>
1430
1436
 
1431
1437
  <p>
1432
1438
  <b>Name:</b>
@@ -1497,7 +1503,7 @@ create a file +app/views/comments/_form.html.erb+ containing:
1497
1503
  Then you make the +app/views/posts/show.html.erb+ look like the following:
1498
1504
 
1499
1505
  <erb>
1500
- <p class="notice"><%= notice %></p>
1506
+ <p id="notice"><%= notice %></p>
1501
1507
 
1502
1508
  <p>
1503
1509
  <b>Name:</b>
@@ -1692,10 +1698,10 @@ class Post < ActiveRecord::Base
1692
1698
  end
1693
1699
  </ruby>
1694
1700
 
1695
- The +:allow_destroy+ option on the nested attribute declaration tells Rails to
1696
- display a "remove" checkbox on the view that you'll build shortly. The
1697
- +:reject_if+ option prevents saving new tags that do not have any attributes
1698
- filled in.
1701
+ The +:allow_destroy+ option tells Rails to enable destroying tags through the
1702
+ nested attributes (you'll handle that by displaying a "remove" checkbox on the
1703
+ view that you'll build shortly). The +:reject_if+ option prevents saving new
1704
+ tags that do not have any attributes filled in.
1699
1705
 
1700
1706
  We will modify +views/posts/_form.html.erb+ to render a partial to make a tag:
1701
1707
 
@@ -1768,7 +1774,7 @@ Finally, we will edit the <tt>app/views/posts/show.html.erb</tt> template to
1768
1774
  show our tags.
1769
1775
 
1770
1776
  <erb>
1771
- <p class="notice"><%= notice %></p>
1777
+ <p id="notice"><%= notice %></p>
1772
1778
 
1773
1779
  <p>
1774
1780
  <b>Name:</b>
@@ -1828,7 +1834,7 @@ Now you can edit the view in <tt>app/views/posts/show.html.erb</tt> to look like
1828
1834
  this:
1829
1835
 
1830
1836
  <erb>
1831
- <p class="notice"><%= notice %></p>
1837
+ <p id="notice"><%= notice %></p>
1832
1838
 
1833
1839
  <p>
1834
1840
  <b>Name:</b>
@@ -38,7 +38,6 @@
38
38
  <div id="header">
39
39
  <div class="wrapper clearfix">
40
40
  <h1><a href="index.html" title="Return to home page">Guides.rubyonrails.org</a></h1>
41
- <p class="hide"><a href="#mainCol">Skip navigation</a>.</p>
42
41
  <ul class="nav">
43
42
  <li><a href="index.html">Home</a></li>
44
43
  <li class="index"><a href="index.html" onclick="guideMenu(); return false;" id="guidesMenu">Guides Index</a>
@@ -215,6 +215,11 @@ module Rails
215
215
  config.helpers_paths
216
216
  end
217
217
 
218
+ def call(env)
219
+ env["ORIGINAL_FULLPATH"] = build_original_fullpath(env)
220
+ super(env)
221
+ end
222
+
218
223
  protected
219
224
 
220
225
  alias :build_middleware_stack :app
@@ -261,6 +266,9 @@ module Rails
261
266
  middleware.use ::ActionDispatch::Cookies
262
267
 
263
268
  if config.session_store
269
+ if config.force_ssl && !config.session_options.key?(:secure)
270
+ config.session_options[:secure] = true
271
+ end
264
272
  middleware.use config.session_store, config.session_options
265
273
  middleware.use ::ActionDispatch::Flash
266
274
  end
@@ -291,5 +299,17 @@ module Rails
291
299
  require "rails/console/app"
292
300
  require "rails/console/helpers"
293
301
  end
302
+
303
+ def build_original_fullpath(env)
304
+ path_info = env["PATH_INFO"]
305
+ query_string = env["QUERY_STRING"]
306
+ script_name = env["SCRIPT_NAME"]
307
+
308
+ if query_string.present?
309
+ "#{script_name}#{path_info}?#{query_string}"
310
+ else
311
+ "#{script_name}#{path_info}"
312
+ end
313
+ end
294
314
  end
295
315
  end
@@ -57,6 +57,7 @@ module Rails
57
57
  @assets.js_compressor = nil
58
58
  @assets.css_compressor = nil
59
59
  @assets.initialize_on_precompile = true
60
+ @assets.logger = nil
60
61
  end
61
62
 
62
63
  def compiled_asset_path
@@ -42,7 +42,7 @@ module Rails
42
42
  end
43
43
 
44
44
  # Skip the route if it's internal info route
45
- routes.reject { |r| r[:path] =~ %r{/rails/info/properties|^/assets} }
45
+ routes.reject { |r| r[:path] =~ %r{/rails/info/properties|^#{Rails.application.config.assets.prefix}} }
46
46
  end
47
47
 
48
48
  def collect_engine_routes(name, rack_app)
@@ -21,7 +21,7 @@ def options
21
21
  options
22
22
  end
23
23
 
24
- class BenchmarkerTest < ActionDispatch::PerformanceTest
24
+ class BenchmarkerTest < ActionDispatch::PerformanceTest #:nodoc:
25
25
  self.profile_options = options
26
26
 
27
27
  ARGV.each do |expression|
@@ -19,7 +19,7 @@ def options
19
19
  options
20
20
  end
21
21
 
22
- class ProfilerTest < ActionDispatch::PerformanceTest
22
+ class ProfilerTest < ActionDispatch::PerformanceTest #:nodoc:
23
23
  self.profile_options = options
24
24
 
25
25
  ARGV.each do |expression|
@@ -202,7 +202,9 @@ module Rails
202
202
  group :assets do
203
203
  gem 'sass-rails', :git => 'git://github.com/rails/sass-rails.git', :branch => '3-2-stable'
204
204
  gem 'coffee-rails', :git => 'git://github.com/rails/coffee-rails.git', :branch => '3-2-stable'
205
- #{"gem 'therubyrhino'\n" if defined?(JRUBY_VERSION)}
205
+
206
+ # See https://github.com/sstephenson/execjs#readme for more supported runtimes
207
+ #{javascript_runtime_gemfile_entry}
206
208
  gem 'uglifier', '>= 1.0.3'
207
209
  end
208
210
  GEMFILE
@@ -212,8 +214,10 @@ module Rails
212
214
  # in production environments by default.
213
215
  group :assets do
214
216
  gem 'sass-rails', '~> 3.2.3'
215
- gem 'coffee-rails', '~> 3.2.0'
216
- #{"gem 'therubyrhino'\n" if defined?(JRUBY_VERSION)}
217
+ gem 'coffee-rails', '~> 3.2.1'
218
+
219
+ # See https://github.com/sstephenson/execjs#readme for more supported runtimes
220
+ #{javascript_runtime_gemfile_entry}
217
221
  gem 'uglifier', '>= 1.0.3'
218
222
  end
219
223
  GEMFILE
@@ -226,6 +230,14 @@ module Rails
226
230
  "gem '#{options[:javascript]}-rails'" unless options[:skip_javascript]
227
231
  end
228
232
 
233
+ def javascript_runtime_gemfile_entry
234
+ if defined?(JRUBY_VERSION)
235
+ "gem 'therubyrhino'\n"
236
+ else
237
+ "# gem 'therubyracer'\n"
238
+ end
239
+ end
240
+
229
241
  def bundle_command(command)
230
242
  say_status :run, "bundle #{command}"
231
243
 
@@ -23,7 +23,7 @@
23
23
  config.action_dispatch.best_standards_support = :builtin
24
24
 
25
25
  <%- unless options.skip_active_record? -%>
26
- # Raise exception on mass assignment protection for ActiveRecord models
26
+ # Raise exception on mass assignment protection for Active Record models
27
27
  config.active_record.mass_assignment_sanitizer = :strict
28
28
 
29
29
  # Log the query plan for queries taking more than this (works
@@ -30,7 +30,7 @@
30
30
  config.action_mailer.delivery_method = :test
31
31
 
32
32
  <%- unless options.skip_active_record? -%>
33
- # Raise exception on mass assignment protection for ActiveRecord models
33
+ # Raise exception on mass assignment protection for Active Record models
34
34
  config.active_record.mass_assignment_sanitizer = :strict
35
35
  <%- end -%>
36
36
 
@@ -3,7 +3,7 @@ module Rails
3
3
  MAJOR = 3
4
4
  MINOR = 2
5
5
  TINY = 0
6
- PRE = "rc2"
6
+ PRE = nil
7
7
 
8
8
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join('.')
9
9
  end
metadata CHANGED
@@ -1,130 +1,90 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: railties
3
- version: !ruby/object:Gem::Version
4
- hash: 977940591
5
- prerelease: true
6
- segments:
7
- - 3
8
- - 2
9
- - 0
10
- - rc2
11
- version: 3.2.0.rc2
3
+ version: !ruby/object:Gem::Version
4
+ version: 3.2.0
5
+ prerelease:
12
6
  platform: ruby
13
- authors:
7
+ authors:
14
8
  - David Heinemeier Hansson
15
9
  autorequire:
16
10
  bindir: bin
17
11
  cert_chain: []
18
-
19
- date: 2012-01-04 00:00:00 -02:00
20
- default_executable:
21
- dependencies:
22
- - !ruby/object:Gem::Dependency
12
+ date: 2012-01-20 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
23
15
  name: rake
24
- prerelease: false
25
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &70264961786840 !ruby/object:Gem::Requirement
26
17
  none: false
27
- requirements:
28
- - - ">="
29
- - !ruby/object:Gem::Version
30
- hash: 49
31
- segments:
32
- - 0
33
- - 8
34
- - 7
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
35
21
  version: 0.8.7
36
22
  type: :runtime
37
- version_requirements: *id001
38
- - !ruby/object:Gem::Dependency
39
- name: thor
40
23
  prerelease: false
41
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *70264961786840
25
+ - !ruby/object:Gem::Dependency
26
+ name: thor
27
+ requirement: &70264961786300 !ruby/object:Gem::Requirement
42
28
  none: false
43
- requirements:
29
+ requirements:
44
30
  - - ~>
45
- - !ruby/object:Gem::Version
46
- hash: 43
47
- segments:
48
- - 0
49
- - 14
50
- - 6
31
+ - !ruby/object:Gem::Version
51
32
  version: 0.14.6
52
33
  type: :runtime
53
- version_requirements: *id002
54
- - !ruby/object:Gem::Dependency
55
- name: rack-ssl
56
34
  prerelease: false
57
- requirement: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *70264961786300
36
+ - !ruby/object:Gem::Dependency
37
+ name: rack-ssl
38
+ requirement: &70264961806680 !ruby/object:Gem::Requirement
58
39
  none: false
59
- requirements:
40
+ requirements:
60
41
  - - ~>
61
- - !ruby/object:Gem::Version
62
- hash: 31
63
- segments:
64
- - 1
65
- - 3
66
- - 2
42
+ - !ruby/object:Gem::Version
67
43
  version: 1.3.2
68
44
  type: :runtime
69
- version_requirements: *id003
70
- - !ruby/object:Gem::Dependency
71
- name: rdoc
72
45
  prerelease: false
73
- requirement: &id004 !ruby/object:Gem::Requirement
46
+ version_requirements: *70264961806680
47
+ - !ruby/object:Gem::Dependency
48
+ name: rdoc
49
+ requirement: &70264961805900 !ruby/object:Gem::Requirement
74
50
  none: false
75
- requirements:
51
+ requirements:
76
52
  - - ~>
77
- - !ruby/object:Gem::Version
78
- hash: 15
79
- segments:
80
- - 3
81
- - 4
82
- version: "3.4"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.4'
83
55
  type: :runtime
84
- version_requirements: *id004
85
- - !ruby/object:Gem::Dependency
86
- name: activesupport
87
56
  prerelease: false
88
- requirement: &id005 !ruby/object:Gem::Requirement
57
+ version_requirements: *70264961805900
58
+ - !ruby/object:Gem::Dependency
59
+ name: activesupport
60
+ requirement: &70264961805460 !ruby/object:Gem::Requirement
89
61
  none: false
90
- requirements:
91
- - - "="
92
- - !ruby/object:Gem::Version
93
- hash: 977940591
94
- segments:
95
- - 3
96
- - 2
97
- - 0
98
- - rc2
99
- version: 3.2.0.rc2
62
+ requirements:
63
+ - - =
64
+ - !ruby/object:Gem::Version
65
+ version: 3.2.0
100
66
  type: :runtime
101
- version_requirements: *id005
102
- - !ruby/object:Gem::Dependency
103
- name: actionpack
104
67
  prerelease: false
105
- requirement: &id006 !ruby/object:Gem::Requirement
68
+ version_requirements: *70264961805460
69
+ - !ruby/object:Gem::Dependency
70
+ name: actionpack
71
+ requirement: &70264961804940 !ruby/object:Gem::Requirement
106
72
  none: false
107
- requirements:
108
- - - "="
109
- - !ruby/object:Gem::Version
110
- hash: 977940591
111
- segments:
112
- - 3
113
- - 2
114
- - 0
115
- - rc2
116
- version: 3.2.0.rc2
73
+ requirements:
74
+ - - =
75
+ - !ruby/object:Gem::Version
76
+ version: 3.2.0
117
77
  type: :runtime
118
- version_requirements: *id006
119
- description: "Rails internals: application bootup, plugins, generators, and rake tasks."
78
+ prerelease: false
79
+ version_requirements: *70264961804940
80
+ description: ! 'Rails internals: application bootup, plugins, generators, and rake
81
+ tasks.'
120
82
  email: david@loudthinking.com
121
- executables:
83
+ executables:
122
84
  - rails
123
85
  extensions: []
124
-
125
86
  extra_rdoc_files: []
126
-
127
- files:
87
+ files:
128
88
  - CHANGELOG.md
129
89
  - README.rdoc
130
90
  - bin/rails
@@ -617,44 +577,30 @@ files:
617
577
  - lib/rails/generators/rails/generator/templates/templates/.empty_directory
618
578
  - lib/rails/generators/rails/plugin_new/templates/app/mailers/.empty_directory
619
579
  - lib/rails/generators/rails/plugin_new/templates/app/models/.empty_directory
620
- has_rdoc: true
621
580
  homepage: http://www.rubyonrails.org
622
581
  licenses: []
623
-
624
582
  post_install_message:
625
- rdoc_options:
583
+ rdoc_options:
626
584
  - --exclude
627
585
  - .
628
- require_paths:
586
+ require_paths:
629
587
  - lib
630
- required_ruby_version: !ruby/object:Gem::Requirement
588
+ required_ruby_version: !ruby/object:Gem::Requirement
631
589
  none: false
632
- requirements:
633
- - - ">="
634
- - !ruby/object:Gem::Version
635
- hash: 57
636
- segments:
637
- - 1
638
- - 8
639
- - 7
590
+ requirements:
591
+ - - ! '>='
592
+ - !ruby/object:Gem::Version
640
593
  version: 1.8.7
641
- required_rubygems_version: !ruby/object:Gem::Requirement
594
+ required_rubygems_version: !ruby/object:Gem::Requirement
642
595
  none: false
643
- requirements:
644
- - - ">"
645
- - !ruby/object:Gem::Version
646
- hash: 25
647
- segments:
648
- - 1
649
- - 3
650
- - 1
651
- version: 1.3.1
596
+ requirements:
597
+ - - ! '>='
598
+ - !ruby/object:Gem::Version
599
+ version: '0'
652
600
  requirements: []
653
-
654
601
  rubyforge_project:
655
- rubygems_version: 1.3.7
602
+ rubygems_version: 1.8.10
656
603
  signing_key:
657
604
  specification_version: 3
658
605
  summary: Tools for creating, working with, and running Rails applications.
659
606
  test_files: []
660
-