aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Clarify the documentation on the Rails::Application#call methodDavid Czarnecki2012-09-151-2/+2
|
* Check if etag exists before to do the gsubRafael Mendonça França2012-09-151-2/+4
| | | | This fix the build http://travis-ci.org/#!/rails/rails/builds/2459981
* Merge pull request #7655 from steveklabnik/masterRafael Mendonça França2012-09-151-0/+1
|\ | | | | fix the build
| * fix the buildSteve Klabnik2012-09-151-0/+1
|/
* Merge pull request #7643 from steveklabnik/deprecate_silenceRafael Mendonça França2012-09-153-12/+23
|\ | | | | Deprecate ActiveSupport::Benchmarkable#silence.
| * Deprecate ActiveSupport::Benchmarkable#silence.Steve Klabnik2012-09-153-12/+23
| | | | | | | | | | | | | | Due to its lack of thread safety, we're deprecating this, and it will be removed in Rails 4.1. Fixes #4060.
* | Merge pull request #7654 from steveklabnik/issue_4857Xavier Noria2012-09-151-0/+8
|\ \ | | | | | | Improve Process::Status#to_json
| * | Improve Process::Status#to_jsonSteve Klabnik2012-09-151-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Because Process::Status has no instance_variables, the ActiveSupport version of #to_json produces {}, which isn't good. Therefore, we implement our own #as_json, which makes it useful again. Fixes #4857
* | | Merge pull request #7649 from steveklabnik/issue_2520Rafael Mendonça França2012-09-153-1/+48
|\ \ \ | | | | | | | | Support for multiple etags in an If-None-Match header
| * | | Support for multiple etags in an If-None-Match headerTravis Warlick2012-09-153-1/+48
| |/ / | | | | | | | | | | | | | | | | | | | | | This is a rebased version of #2520. Conflicts: actionpack/test/dispatch/request_test.rb
* | | Fix syntax error in assert_matchRafael Mendonça França2012-09-151-6/+6
| | |
* | | Merge pull request #7653 from arunagw/warnings-removedRafael Mendonça França2012-09-151-3/+3
|\ \ \ | | | | | | | | Few more warnings removed.
| * | | Few more warnings removed.Arun Agrawal2012-09-152-4/+4
| |/ / | | | | | | | | | | | | | | | | | | I found them when I was running warning mode on with railties See https://github.com/rails/rails/pull/3782
* / / simplify rescueJon Leighton2012-09-151-3/+3
|/ /
* | Fix testJon Leighton2012-09-152-15/+21
| | | | | | | | Accidentally checked in commented test code. Fail. >_<
* | Ensure disconnecting or reconnecting resets the transaction stateJon Leighton2012-09-157-9/+55
| |
* | Remove our use of #outside_transaction?Jon Leighton2012-09-153-61/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This method was first seen in 045713ee240fff815edb5962b25d668512649478, and subsequently reimplemented in fb2325e35855d62abd2c76ce03feaa3ca7992e4f. According to @jeremy, this is okay to remove. He thinks it was added because at the time we didn't have much transaction state to keep track of, and he viewed it as a hack for us to track it internally, thinking it was better to ask the connection for the transaction state. Over the years we have added more and more state to track, a lot of which is impossible to ask the connection for. So it seems that this is just a relic of the passed and we will just track the state internally only.
* | Remove the transaction_open variableJon Leighton2012-09-152-21/+33
| |
* | Move transaction joinability into the transaction objectJon Leighton2012-09-155-20/+36
| |
* | Alter the naming structure a bitJon Leighton2012-09-153-108/+111
| |
* | Split Open into Real and SavepointJon Leighton2012-09-151-25/+38
| |
* | DRYJon Leighton2012-09-151-4/+8
| |
* | Don't do the rollback in #commitJon Leighton2012-09-152-18/+7
| | | | | | | | | | The caller needs to have knowledge of the rollback either way, so do it all in the caller (#transaction)
* | Store the transaction number in the transaction objectJon Leighton2012-09-155-13/+30
| | | | | | | | This avoids us having to manually increment and decrement it.
* | Start to tease out transaction handling into a state machineJon Leighton2012-09-156-87/+158
| |
* | Revert "create a transaction object and point AR objects at that object ↵Jon Leighton2012-09-154-55/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | during a" This reverts commit c24c885209ac2334dc6f798c394a821ee270bec6. Here's the explanation I just sent to @tenderlove: Hey, I've been thinking about about the transaction memory leak thing that we were discussing. Example code: post = nil Post.transaction do N.times { post = Post.create } end Post.transaction is going to create a real transaction and there will also be a (savepoint) transaction inside each Post.create. In an idea world, we'd like all but the last Post instance to be GC'd, and for the last Post instance to receive its after_commit callback when Post.transaction returns. I can't see how this can work using your solution where the Post itself holds a reference to the transaction it is in; when Post.transaction returns, control does not switch to any of Post's instance methods, so it can't trigger the callbacks itself. What we really want is for the transaction itself to hold weak references to the objects within the transaction. So those objects can be GC'd, but if they are not GC'd then the transaction can iterate them and execute their callbacks. I've looked into WeakRef implementations that are available. On 1.9.3, the stdlib weakref library is broken and we shouldn't use it. There is a better implementation here: https://github.com/bdurand/ref/blob/master/lib/ref/weak_reference/pure_ruby.rb We could use that, either by pulling in the gem or just copying the code in, but it still suffers from the limitation that it uses ObjectSpace finalizers. In my testing, this finalizers make GC quite expensive: https://gist.github.com/3722432 Ruby 2.0 will have a native WeakRef implementation (via ObjectSpace::WeakMap), hence won't be reliant on finalizers: http://bugs.ruby-lang.org/issues/4168 So the ultimate solution will be for everyone to use Ruby 2.0, and for us to just use ObjectSpace::WeakMap. In the meantime, we have basically 3 options: The first is to leave it as it is. The second is to use a finalizer-based weakref implementation and take the GC perf hit. The final option is to store object ids rather than the actual objects. Then use ObjectSpace._id2ref to deference the objects at the end of the transaction, if they exist. This won't stop memory use growing within the transaction, but it'll grow more slowly. I benchmarked the performance of _id2ref this if the object does or does not exist: https://gist.github.com/3722550 If it does exist it seems decent, but it's hugely more expensive if it doesn't, probably because we have to do the rescue nil. Probably most of the time the objects will exist. However the point of doing this optimisation is to allow people to create a large number of objects inside a transaction and have them be GC'd. So for that use case, we'd be replacing one problem with another. I'm not sure which of the two problems is worse. My feeling is that we should just leave this for now and come back to it when Ruby 2.0 is out. I'm going to revert your commit because I can't see how it solves this. Hope you don't mind... if I've misunderstood then let me know! Jon
* | Move queue classes to ActiveSupportSantiago Pastorino2012-09-1417-182/+180
| |
* | Merge pull request #7642 from lest/patch-1José Valim2012-09-141-0/+16
|\ \ | | | | | | update CHANGELOG
| * | update CHANGELOGSergey Nartimov2012-09-141-0/+16
|/ / | | | | | | | | Add entry about 245941101b1ea00a9b1af613c20b0ee994a43946 and 95be790ece75710f2588558a6d5f40fd09543b97.
* | Merge pull request #7635 from arunagw/warning_removed_shadowing_variableJosé Valim2012-09-141-2/+2
|\ \ | | | | | | warning removed: shadowing outer local variable - message
| * | warning removed: shadowing outer local variable - messageArun Agrawal2012-09-141-2/+2
| |/
* | Merge pull request #7634 from arunagw/build_fix_actionmailerJosé Valim2012-09-141-0/+1
|\ \ | | | | | | Build fix for ActionMailer
| * | Build fix for ActionMailerArun Agrawal2012-09-141-0/+1
| |/ | | | | | | | | | | See http://travis-ci.org/#!/rails/rails/jobs/2444632
* | Merge pull request #7637 from NARKOZ/patch-3Jeremy Kemper2012-09-131-1/+1
|\ \ | |/ |/| use presence method instead of checking for blank
| * use presence method instead of checking for blankNihad Abbasov2012-09-141-1/+1
|/
* Merge pull request #7616 from lest/null-session-forgery-protectionMichael Koziarski2012-09-134-33/+159
|\ | | | | Implement :null_session CSRF protection method
| * Implement :null_session CSRF protection methodSergey Nartimov2012-09-134-33/+159
| | | | | | | | | | | | | | | | It's further work on CSRF after 245941101b1ea00a9b1af613c20b0ee994a43946. The :null_session CSRF protection method provide an empty session during request processing but doesn't reset it completely (as :reset_session does).
* | Merge pull request #7628 from Pranas/deep_merge_with_blockRafael Mendonça França2012-09-133-4/+23
|\ \ | | | | | | Allow passing block to deep_merge and deep_merge!
| * | Allow passing block to deep_merge and deep_merge!Pranas Kiziela2012-09-133-4/+23
|/ / | | | | | | | | Hash#merge accepts block that you can use to customize how hash values are merged. This change makes merge and deep_merge compatible.
* | Copy-edit deprecation relared documentation [ci skip]Rafael Mendonça França2012-09-135-74/+51
| |
* | Merge pull request #7524 from al2o3cr/store_booleanRafael Mendonça França2012-09-134-9/+67
|\ \ | | | | | | Add boolean type conversion for AR::Store
| * | refactor store_accessorMatt Jones2012-09-134-9/+67
|/ /
* | Merge pull request #6348 from LTe/no_global_depreactationsCarlos Antonio da Silva2012-09-139-98/+412
|\ \ | | | | | | Allow ActiveSupport::Deprecation features to be used by rails applications and library authors
| * | Change ActiveSupport::Deprecation to class.Piotr Niełacny2012-09-139-221/+405
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ActiveSupport::Deprecation is now a class rather than a module. You can get instance of ActiveSupport::Deprecation calling #instance method. ActiveSupport::Deprecation.instance But when you need to get new object od ActiveSupport::Deprecation you need to just call #new. @instance = ActiveSupport::Deprecation.new Since you can create a new object, you can change the version and the name of the library where the deprecator concerned. ActiveSupport::Deprecation.new('2.0', 'MyGem') If you need use another deprecator instance you can select it in the options of deprecate method. deprecate :method, :deprecator => deprecator_instance Documentation has been updated.
| * | extend ActiveSupport::Deprecation with self, allow other objects to ↵Robert Pankowecki2012-09-136-102/+232
|/ / | | | | | | | | | | | | | | | | | | extend/include it also. test local deprecation deprecator object Test ActiveSupport::Deprecation when included
* | Merge pull request #7623 from tchandy/masterRafael Mendonça França2012-09-121-1/+1
|\ \ | | | | | | update ConnectionAdapter::Column#type_cast_code to be compatible with rails 3.2 branch
| * | update ConnectionAdaptar::Column#type_cast_code to be compatible with 3.2 branchThiago Pradi2012-09-131-1/+1
|/ /
* | Merge pull request #7614 from frodsan/scm_agnosticRafael Mendonça França2012-09-126-65/+90
|\ \ | | | | | | add --skip-ignore and --skip-keeps options to generators.
| * | change app/plugin generators to be more SCM agnosticDerek Prior2012-09-126-65/+90
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Users of other SCM's can now generate rails apps that will add the "empty" directories to source control, but will not have a useless .gitignore or mis-named .gitkeep files. * Change `rails new` and `rails plugin new` generators to name the `.gitkeep` as `.keep` in a more SCM-agnostic way. * Change `--skip-git` option to only skip the `.gitignore` file and still generate the `.keep` files. * Add `--skip-keeps` option to skip the `.keep` files. It closes #2800.
* | Pass in the model class rather than engineJon Leighton2012-09-133-8/+8
| | | | | | | | | | | | | | | | | | In some circumstances engine was Arel::Table.engine which for separate reasons was an ActiveRecord::Model::DeprecationProxy, which caused a deprecation warning. In any case, we want the actual model class here, since we want to use it to infer information about associations.