| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| | |
Follow up to #16613
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Since we want this flag to be enabled anytime we are running the tests
under JRuby, let's enable this at the Rakefile level so people get the
performance boost on their local checkout.
Moreover, we avoid having to update this particular line anytime the
option changes on the JRuby side.
The only drawback is that we have to define it in every Rakefile but
there's no big deal, this is already the case for other options.
|
| |
| |
| |
| | |
It is temporary until we do the final release
|
| | |
|
|\ \
| |/
|/| |
Decrease backtrace cleaner object allocations
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Right now BenchmarkCleaner allocates hundreds of strings on every request with an exception. This patch moves those strings to be generated at boot once and re-used.
## Bench Methods
I took a modified form of CodeTriage https://github.com/schneems/codetriage-ko1-test-app/blob/master/perf.rake and ran given rake tasks with and without the patch to BacktraceCleaner.
I made an endpoint results in exception
```
def index
raise “foo"
end
```
The gem `memory_profiler` was used to capture objects allocated for a single request. Then `benchmark/ips` was used to test the speed of the patch.
You will see that we use less objects and the code becomes measurably faster with this patch.
## With patch:
Memory for one request:
```
Total allocated 7441
Total retained 37
```
Requests per second:
```
Calculating -------------------------------------
ips 4 i/100ms
-------------------------------------------------
ips 43.0 (±4.7%) i/s - 216 in 5.037733s
```
## Without patch:
Memory used for one request:
```
Total allocated 11599
Total retained 35
```
Requests per second:
```
Calculating -------------------------------------
ips 3 i/100ms
-------------------------------------------------
ips 39.4 (±7.6%) i/s - 198 in 5.052783s
```
## Analysis
The patch is faster:
```
(43.0 - 39.4 ) / 39.4 * 100
# => 9 # % ~ speed bump
```
It also allocates less objects:
```
11599 - 7441
# => 4158
```
These strings are allocated on __EVERY SINGLE REQUEST__. This patch saves us 4158 objects __PER REQUEST__ with exception.
Faster errors == Faster applications
|
| | |
|
| | |
|
| |
| |
| |
| | |
Also add to upgrading guide a notice about the deprecated sanitizers
|
| | |
|
| | |
|
|\ \
| | |
| | | |
Amend welcome page
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
|/ /
| |
| |
| |
| |
| |
| | |
fixture_path is a class attribute of ActiveSupport::TestCase, so
ActiveSupport::TestCase.method_defined?(:fixture_path=) would always
return false.
This should fix #4971
|
|/
|
|
|
|
|
|
|
|
|
|
| |
* The assertions in AS::Duration don't actually assert.
* The assertion in Railtie will pass even when `eager_load_namespaces`
doesn't include `AppTemplate::Application` if `Rails.application` is
truthy.
For more details, see here:
* https://github.com/rails/rails/pull/16998
* https://github.com/rails/rails/pull/17000
|
|\
| |
| | |
Document that the default for `rails server -b` has changed
|
| |
| |
| |
| | |
Fixes #16578
|
|/
|
|
| |
This seems to be the style settled on in most of the templates.
|
|\
| |
| |
| |
| |
| |
| | |
Specify dummy app's db migrate path in plugin's test_helper.rb
Conflicts:
railties/CHANGELOG.md
|
| | |
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If code is not eager loaded constants are loaded on demand. Constant
autoloading is not thread-safe, so if eager loading is not enabled
multi-threading should not be allowed.
This showed up in certain Capybara scenarios: Most Capybara drivers
other than Rack::Test need a web server. In particular, drivers for
JavaScript support. Capybara launches WEBrick in its own thread for
those but that per se is fine, because the spec thread and the server
thread are coordinated.
Problem comes if the page being served in the spec makes Ajax calls.
Those may hit WEBrick in parallel, and since WEBrick is multi-threaded
and allow_concurrency? returns true in the test environment before
this patch, threads are spawned to serve those parallel requests. On
the other hand, since eager_load is false by default in the test
environment, constants are not preloaded.
So the suite is autoloading constants in a multi-threaded set. That's
a receipt for paracetamol. The symptom is random obscure errors whose
messages point somehow to constant autoloading.
As a consequence of this fix for allow_concurrency? WEBrick in
Capybara scenarios no longer runs in multi-threaded mode.
Fixes #15089.
|
|
|
|
|
| |
* Fix long lines;
* Use simple quotes for string literals when interpolation is not used.
|
|\
| |
| | |
Use dynamic path for dummy app location in plugin's test_helper.rb
|
| | |
|
|/ |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
This will avoid the warning in our tests. We delete all the
config/environments/ files in the test app so our default code will not
work.
|
|\
| |
| |
| | |
Default to sorting user's test cases for now
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Goals:
1. Default to :random for newly generated applications
2. Default to :sorted for existing applications with a warning
3. Only show the warning once
4. Only show the warning if the app actually uses AS::TestCase
Fixes #16769
|
| |
| |
| |
| |
| |
| | |
Since cc03675d30b58e28f585720dad14e947a57ff5b the error message became like
"Could not load database configuration. No such file -"
which doesn't really tell what's actually missing.
|
| | |
|
|/ |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
This is a follow-up to ded17a4 to get the build passing on Travis.
As Travis has `ENV["RACK_ENV"]` set to `test` we need to reset that as well.
|
|\
| |
| | |
Ship with rails-html-sanitizer instead.
|
| | |
|
|\ \
| | |
| | | |
Dont mess with default order engines load (4.1.6.rc1 regression)
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
When copying migrations some engines might depend on schema from other
engine so we can't blindly reverse all railties collection as that would
affect the order they were originally loaded. This patch helps to only
apply the order from engines specified in `railties_order`
|
| |/
|/|
| |
| |
| |
| |
| |
| |
| |
| | |
[Joshua Cody & Yves Senn]
Closes #16757.
Prior to this patch schema loading rake tasks had the potential to leak a
connection to a different database. This had side-effects when rake tasks
operating on the current connection (like `db:seed`) were chained.
|
|\ \
| | |
| | | |
[ActiveJob] TestCase
|
| | | |
|