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.
- data/CHANGELOG.md +1 -1
- data/guides/code/getting_started/Gemfile +17 -6
- data/guides/code/getting_started/app/assets/javascripts/application.js +9 -3
- data/guides/code/getting_started/app/assets/stylesheets/application.css +11 -5
- data/guides/code/getting_started/app/views/layouts/application.html.erb +1 -1
- data/guides/code/getting_started/config/application.rb +7 -1
- data/guides/code/getting_started/config/environments/test.rb +3 -3
- data/guides/code/getting_started/config/initializers/inflections.rb +5 -0
- data/guides/code/getting_started/config/routes.rb +4 -4
- data/guides/code/getting_started/public/500.html +0 -1
- data/guides/source/3_1_release_notes.textile +1 -1
- data/guides/source/3_2_release_notes.textile +106 -18
- data/guides/source/_welcome.html.erb +1 -1
- data/guides/source/active_record_querying.textile +11 -0
- data/guides/source/asset_pipeline.textile +56 -4
- data/guides/source/configuring.textile +1 -0
- data/guides/source/contributing_to_ruby_on_rails.textile +2 -0
- data/guides/source/documents.yaml +4 -0
- data/guides/source/form_helpers.textile +2 -2
- data/guides/source/getting_started.textile +18 -12
- data/guides/source/layout.html.erb +0 -1
- data/lib/rails/application.rb +20 -0
- data/lib/rails/application/configuration.rb +1 -0
- data/lib/rails/application/route_inspector.rb +1 -1
- data/lib/rails/commands/benchmarker.rb +1 -1
- data/lib/rails/commands/profiler.rb +1 -1
- data/lib/rails/generators/app_base.rb +15 -3
- data/lib/rails/generators/rails/app/templates/config/environments/development.rb.tt +1 -1
- data/lib/rails/generators/rails/app/templates/config/environments/test.rb.tt +1 -1
- data/lib/rails/version.rb +1 -1
- metadata +65 -119
data/CHANGELOG.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
## Rails 3.2.0 (
|
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 '
|
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',
|
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',
|
14
|
-
gem 'coffee-rails',
|
15
|
-
|
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
|
2
|
-
//
|
3
|
-
//
|
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
|
3
|
-
*
|
4
|
-
*
|
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
|
+
*/
|
@@ -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
|
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
|
@@ -1,7 +1,7 @@
|
|
1
1
|
Blog::Application.routes.draw do
|
2
|
-
|
3
|
-
|
4
|
-
|
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
|
@@ -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
|
-
|
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
|
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
|
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:
|
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
|
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.
|
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
|
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
|
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.
|
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
|
-
|
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
|
-
*
|
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.
|
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
|
-
|
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
|
-
|
120
|
+
h5. Search paths
|
121
121
|
|
122
|
-
|
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
|
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
|
-
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
1696
|
-
|
1697
|
-
+:reject_if+ option prevents saving new
|
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
|
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
|
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>
|
data/lib/rails/application.rb
CHANGED
@@ -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
|
@@ -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
|
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)
|
@@ -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
|
-
|
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.
|
216
|
-
|
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
|
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
|
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
|
|
data/lib/rails/version.rb
CHANGED
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
|
-
|
5
|
-
prerelease:
|
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
|
-
|
20
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
119
|
-
|
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
|
-
|
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.
|
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
|
-
|