rails/railties
Jean Boussier 5fbaa524b9 Active Record commit transaction on return, break and throw
Fix: https://github.com/rails/rails/issues/45017
Ref: https://github.com/rails/rails/pull/29333
Ref: https://github.com/ruby/timeout/pull/30

Historically only raised errors would trigger a rollback, but in Ruby `2.3`, the `timeout` library
started using `throw` to interupt execution which had the adverse effect of committing open transactions.

To solve this, in Active Record 6.1 the behavior was changed to instead rollback the transaction as it was safer
than to potentially commit an incomplete transaction.

Using `return`, `break` or `throw` inside a `transaction` block was essentially deprecated from Rails 6.1 onwards.

However with the release of `timeout 0.4.0`, `Timeout.timeout` now raises an error again, and Active Record is able
to return to its original, less surprising, behavior.
2023-07-10 10:37:42 +02:00
..
bin Adding frozen_string_literal pragma to Railties. 2017-08-14 19:08:09 +02:00
exe Adding frozen_string_literal pragma to Railties. 2017-08-14 19:08:09 +02:00
lib Active Record commit transaction on return, break and throw 2023-07-10 10:37:42 +02:00
test Merge pull request #48560 from eileencodes/fix-parallel-testing-48547 2023-07-05 11:06:52 -04:00
.gitignore Install JavaScript packages before run test 2019-02-11 09:58:08 +09:00
CHANGELOG.md Update default scaffold templates to set 303 (See Other) as status code on redirect for the update action 2023-06-30 21:52:49 -07:00
MIT-LICENSE Remove Copyright years (#47467) 2023-02-23 11:38:16 +01:00
railties.gemspec Fix chmod race condition when generating key 2023-05-11 16:29:26 -04:00
Rakefile Require shellwords where it is used 2022-01-06 00:19:11 +00:00
RDOC_MAIN.md 🔗 Remove RDoc auto-link from Rails module everywhere 2023-06-23 10:49:30 +09:00
README.rdoc 🔗 Remove RDoc auto-link from Rails module everywhere 2023-06-23 10:49:30 +09:00

= Railties -- Gluing the Engine to the \Rails

Railties is responsible for gluing all frameworks together. Overall, it:

* handles the bootstrapping process for a \Rails application;

* manages the +rails+ command line interface;

* and provides the \Rails generators core.

== Download

The latest version of Railties can be installed with RubyGems:

* gem install railties

Source code can be downloaded as part of the \Rails project on GitHub

* https://github.com/rails/rails/tree/main/railties

== License

Railties is released under the MIT license:

* https://opensource.org/licenses/MIT

== Support

API documentation is at

* https://api.rubyonrails.org

Bug reports can be filed for the Ruby on \Rails project here:

* https://github.com/rails/rails/issues

Feature requests should be discussed on the rails-core mailing list here:

* https://discuss.rubyonrails.org/c/rubyonrails-core