Rack updated the RFC they're adhering to when parsing cookies, now no
longer including commas.
There's still an open question as mentioned in:
https://github.com/rails/rails/issues/38420
However, the resilience test is no longer as well needed as it once was
and we can move forward separately. If not, this is easily revertible.
This pull request addresses 3 failures which expect no warnings. If
these tests executed with Ruby 2.7, all of them failed due to warnings
for tainted objects.
* How to create this commit:
```
% bundle update pg --conservative
```
* Background for this change
pg gem 1.2.0 https://rubygems.org/gems/pg/versions/1.2.0 has been released including https://github.com/ged/ruby-pg/pull/307
to support Ruby 2.7, showing warnings for tainted objects. Refer https://bugs.ruby-lang.org/issues/16131
* Steps to reproduce:
```
% cd activerecord
% ruby -v
ruby 2.7.0dev (2019-12-25T06:38:55Z master 75dca097b8) [x86_64-darwin19]
% bundle update --bundler
% ARCONN=postgresql bundle exec ruby -w -Itest test/cases/adapters/postgresql/referential_integrity_test.rb -n test_does_not_print_warning_if_no_invalid_foreign_key_exception_was_raised
% ARCONN=postgresql bundle exec ruby -w -Itest test/cases/adapters/postgresql/enum_test.rb -n test_no_oid_warning
% ARCONN=postgresql bundle exec ruby -w -Itest test/cases/adapters/postgresql/postgresql_adapter_test.rb -n test_only_warn_on_first_encounter_of_unrecognized_oid
```
* Actual results:
```
% ARCONN=postgresql bundle exec ruby -w -Itest test/cases/adapters/postgresql/referential_integrity_test.rb -n test_does_not_print_warning_if_no_invalid_foreign_key_exception_was_raised
Using postgresql
/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb:919: warning: rb_tainted_str_new_cstr is deprecated and will be removed in Ruby 3.2.
... snip ...
/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb:259: warning: rb_tainted_str_new is deprecated and will be removed in Ruby 3.2.
F
Failure:
PostgreSQLReferentialIntegrityTest#test_does_not_print_warning_if_no_invalid_foreign_key_exception_was_raised [test/cases/adapters/postgresql/referential_integrity_test.rb:73]:
expected no warnings but got:
/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql/database_statements.rb:24: warning: rb_tainted_str_new is deprecated and will be removed in Ruby 3.2.
... snip ...
/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql/database_statements.rb:24: warning: rb_tainted_str_new is deprecated and will be removed in Ruby 3.2.
/Users/yahonda/src/github.com/yahonda/rails/activesupport/lib/active_support/core_ext/object/try.rb:15: warning: rb_tainted_str_new_cstr is deprecated and will be removed in Ruby 3.2.
rails test test/cases/adapters/postgresql/referential_integrity_test.rb:62
Finished in 0.052862s, 18.9172 runs/s, 56.7515 assertions/s.
1 runs, 3 assertions, 1 failures, 0 errors, 0 skips
%
```
```
% ARCONN=postgresql bundle exec ruby -w -Itest test/cases/adapters/postgresql/enum_test.rb -n test_no_oid_warning
Using postgresql
/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb:919: warning: rb_tainted_str_new_cstr is deprecated and will be removed in Ruby 3.2.
... snip ...
/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb:259: warning: rb_tainted_str_new is deprecated and will be removed in Ruby 3.2.
F
Failure:
PostgresqlEnumTest#test_no_oid_warning [test/cases/adapters/postgresql/enum_test.rb:76]:
Expected "/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql/database_statements.rb:24: warning: rb_tainted_str_new is deprecated and will be removed in Ruby 3.2.\n/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql/database_statements.rb:24: warning: rb_tainted_str_new is deprecated and will be removed in Ruby 3.2.\n/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql/database_statements.rb💯 warning: rb_tainted_str_new_cstr is deprecated and will be removed in Ruby 3.2.\n/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql/database_statements.rb💯 warning: rb_tainted_str_new_cstr is deprecated and will be removed in Ruby 3.2.\n/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/type_map_initializer.rb:20: warning: rb_tainted_str_new_cstr is deprecated and will be removed in Ruby 3.2.\n/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/type_map_initializer.rb:20: warning: rb_tainted_str_new_cstr is deprecated and will be removed in Ruby 3.2.\n/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/type_map_initializer.rb:20: warning: rb_tainted_str_new_cstr is deprecated and will be removed in Ruby 3.2.\n/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/type_map_initializer.rb:20: warning: rb_tainted_str_new_cstr is deprecated and will be removed in Ruby 3.2.\n/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/type_map_initializer.rb:20: warning: rb_tainted_str_new_cstr is deprecated and will be removed in Ruby 3.2.\n/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/type_map_initializer.rb:20: warning: rb_tainted_str_new_cstr is deprecated and will be removed in Ruby 3.2.\n/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/type_map_initializer.rb:20: warning: rb_tainted_str_new_cstr is deprecated and will be removed in Ruby 3.2.\n/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/type_map_initializer.rb:20: warning: rb_tainted_str_new_cstr is deprecated and will be removed in Ruby 3.2.\n/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/type_map_initializer.rb:20: warning: rb_tainted_str_new is deprecated and will be removed in Ruby 3.2.\n/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/type_map_initializer.rb:20: warning: rb_tainted_str_new is deprecated and will be removed in Ruby 3.2.\n/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/type_map_initializer.rb:20: warning: rb_tainted_str_new is deprecated and will be removed in Ruby 3.2.\n/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/type_map_initializer.rb:20: warning: rb_tainted_str_new is deprecated and will be removed in Ruby 3.2.\n/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql/database_statements.rb:106: warning: rb_tainted_str_new is deprecated and will be removed in Ruby 3.2.\n/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql/database_statements.rb:24: warning: rb_tainted_str_new is deprecated and will be removed in Ruby 3.2.\n/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql/database_statements.rb:24: warning: rb_tainted_str_new is deprecated and will be removed in Ruby 3.2.\n/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql/database_statements.rb:24: warning: rb_tainted_str_new is deprecated and will be removed in Ruby 3.2.\n/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql/database_statements.rb:24: warning: rb_tainted_str_new is deprecated and will be removed in Ruby 3.2.\n/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql/database_statements.rb:24: warning: rb_tainted_str_new is deprecated and will be removed in Ruby 3.2.\n" to be blank?.
rails test test/cases/adapters/postgresql/enum_test.rb:72
Finished in 0.059806s, 16.7207 runs/s, 16.7207 assertions/s.
1 runs, 1 assertions, 1 failures, 0 errors, 0 skips
%
```
```
% ARCONN=postgresql bundle exec ruby -w -Itest test/cases/adapters/postgresql/postgresql_adapter_test.rb -n test_only_warn_on_first_encounter_of_unrecognized_oid
Using postgresql
/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb:919: warning: rb_tainted_str_new_cstr is deprecated and will be removed in Ruby 3.2.
... snip ...
/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb:259: warning: rb_tainted_str_new is deprecated and will be removed in Ruby 3.2.
F
Failure:
ActiveRecord::ConnectionAdapters::PostgreSQLAdapterTest#test_only_warn_on_first_encounter_of_unrecognized_oid [test/cases/adapters/postgresql/postgresql_adapter_test.rb:372]:
Expected /\Aunknown OID \d+: failed to recognize type of 'regclass'\. It will be treated as String\.\n\z/ to match "/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql/database_statements.rb💯 warning: rb_tainted_str_new_cstr is deprecated and will be removed in Ruby 3.2.\n/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/type_map_initializer.rb:20: warning: rb_tainted_str_new_cstr is deprecated and will be removed in Ruby 3.2.\n/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/type_map_initializer.rb:20: warning: rb_tainted_str_new_cstr is deprecated and will be removed in Ruby 3.2.\n/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/type_map_initializer.rb:20: warning: rb_tainted_str_new_cstr is deprecated and will be removed in Ruby 3.2.\n/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/type_map_initializer.rb:20: warning: rb_tainted_str_new_cstr is deprecated and will be removed in Ruby 3.2.\n/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/type_map_initializer.rb:20: warning: rb_tainted_str_new_cstr is deprecated and will be removed in Ruby 3.2.\n/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/type_map_initializer.rb:20: warning: rb_tainted_str_new_cstr is deprecated and will be removed in Ruby 3.2.\n/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/type_map_initializer.rb:20: warning: rb_tainted_str_new_cstr is deprecated and will be removed in Ruby 3.2.\n/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/type_map_initializer.rb:20: warning: rb_tainted_str_new_cstr is deprecated and will be removed in Ruby 3.2.\n/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/type_map_initializer.rb:20: warning: rb_tainted_str_new is deprecated and will be removed in Ruby 3.2.\n/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/type_map_initializer.rb:20: warning: rb_tainted_str_new is deprecated and will be removed in Ruby 3.2.\n/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/type_map_initializer.rb:20: warning: rb_tainted_str_new is deprecated and will be removed in Ruby 3.2.\n/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/type_map_initializer.rb:20: warning: rb_tainted_str_new is deprecated and will be removed in Ruby 3.2.\nunknown OID 2205: failed to recognize type of 'regclass'. It will be treated as String.\n/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql/database_statements.rb:106: warning: rb_tainted_str_new is deprecated and will be removed in Ruby 3.2.\n/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql/database_statements.rb💯 warning: rb_tainted_str_new_cstr is deprecated and will be removed in Ruby 3.2.\n/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql/database_statements.rb:106: warning: rb_tainted_str_new is deprecated and will be removed in Ruby 3.2.\n/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql/database_statements.rb💯 warning: rb_tainted_str_new_cstr is deprecated and will be removed in Ruby 3.2.\n/Users/yahonda/src/github.com/yahonda/rails/activerecord/lib/active_record/connection_adapters/postgresql/database_statements.rb:106: warning: rb_tainted_str_new is deprecated and will be removed in Ruby 3.2.\n".
rails test test/cases/adapters/postgresql/postgresql_adapter_test.rb:363
Finished in 0.037451s, 26.7016 runs/s, 53.4031 assertions/s.
1 runs, 2 assertions, 1 failures, 0 errors, 0 skips
%
```
* Update mysql2 to the latest version
Fixes keyword arguments warning:
brianmario/mysql2/pull/1084
Fixes taint mechanism deprecation warning:
brianmario/mysql2@785969fbce
* Update json to the latest version
Fixes warning from trying to access an uninitialized ivar, and
keyword arguments warning:
flori/json/commit/de14dea34074558dc671d7edc71513f0216ce21d
flori/json/commit/19da336333e63dc9dde7baea47b179e162b7568e
Fix: https://github.com/rails/rails/issues/37650
The classic autoloader used to totally unregister any constant that
failed midway. Which mean `"SomeConst".constantize` was idempotent.
However Zeitwerk rely on normal `Kernel#require` behavior, which mean
that if an exception is raised during a class/module definition,
it will be left incompletely defined. For instance:
```ruby
class FooController
::DoesNotExist
def index
end
end
```
Will leave `FooController` defined, but without its `index` method.
Because of this, when silencing a NameError, it's important
to make sure the missing constant is really the one we were trying
to load.
Updated the default Ruby workflow:
* Trigger this action for pull request and push
* Install requried OS packages for Active Record connection adapters
* Removing `gem install bundler` because Ruby 2.6 already installs it
* Run RuboCop in parallel by `bundle exec rubocop --parallel`
* Rename `ruby.yml` to `rubocop.yml` to represent the workflow
Bump RuboCop to 0.76.0 and rename `Style/UnneededPercentQ` to `Style/RedundantPercentQ`
```ruby
$ bundle exec rubocop
Error: The `Style/UnneededPercentQ` cop has been renamed to `Style/RedundantPercentQ`.
(obsolete configuration found in .rubocop.yml
```
Removed `.codeclimate.yml`
```
/home/u/.rbenv/versions/2.7.0-dev/lib/ruby/gems/2.7.0/gems/json-2.1.0/lib/json/common.rb:156: warning: The last argument is nil, treating as empty keywords
/home/u/.rbenv/versions/2.7.0-dev/lib/ruby/gems/2.7.0/gems/json-2.1.0/lib/json/common.rb:156: warning: The last argument is used as the keyword parameter
```
Was fixed in 2.2.0.
```
/home/u/.rbenv/versions/2.7.0-dev/lib/ruby/gems/2.7.0/gems/i18n-1.6.0/lib/i18n/backend/base.rb:146: warning: The last argument is used as the keyword parameter
/home/u/.rbenv/versions/2.7.0-dev/lib/ruby/gems/2.7.0/gems/i18n-1.6.0/lib/i18n/backend/base.rb:84: warning: The last argument is used as the keyword parameter
/home/u/.rbenv/versions/2.7.0-dev/lib/ruby/gems/2.7.0/gems/i18n-1.6.0/lib/i18n.rb:179: warning: for `t' defined here
/home/u/.rbenv/versions/2.7.0-dev/lib/ruby/gems/2.7.0/gems/i18n-1.6.0/lib/i18n.rb:179: warning: for `translate' defined here
/home/u/.rbenv/versions/2.7.0-dev/lib/ruby/gems/2.7.0/gems/i18n-1.6.0/lib/i18n.rb:205: warning: The last argument is used as the keyword parameter
```
Was fixed by ruby-i18n/i18n@2920107fbf .
The `Sidekiq::Logging` module was removed in Sidekiq 6.0 in favour of
`Sidekiq.logger=`.
https://github.com/mperham/sidekiq/wiki/Logging#api-changes
> The old Sidekiq::Logging class was removed in Sidekiq 6.0. You should
> not be accessing any Sidekiq internal classes to use the logger. Use
> `logger` directly in your Worker or use `Sidekiq.logger` elsewhere.
`selenium-webdriver` is deprecateing various features for improvement in 4.0.
I want to test with the latest version to check if Rails uses deprecated
features or not.
Resque 2.0 includes grammar fixes for warnings tickled by our tests. Updating resque-scheduler also requires and updates resque to version 2.0.
```
$ ruby -v
ruby 2.6.2p47 (2019-03-13 revision 67232) [x86_64-linux]
```
This commit more or less undoes 9b5401f, restores autoloaded? not to
touch the descendants tracker, and autoloaded_constants because it is
documented in the guide.
Performance cops will be extracted from RuboCop to RuboCop Performance
when next RuboCop 0.68 will be released.
https://github.com/rubocop-hq/rubocop/issues/5977
RuboCop 0.67 is its transition period.
Since rails/rails repository uses Performance cops, This PR added
rubocop-performance gem to Gemfile.
And this PR fixes some offenses using the following auto-correct.
```console
% bundle exec rubocop -a
Offenses:
activerecord/test/cases/connection_adapters/connection_handlers_multi_db_test.rb:212:26:
C: [Corrected] Layout/SpaceAroundOperators: Operator =
> should be surrounded by a single space.
"primary" => { adapter: "sqlite3", database: "db/primary.sqlite3" }
^^
activerecord/test/cases/connection_adapters/connection_handlers_multi_db_test.rb:239:26:
C: [Corrected] Layout/SpaceAroundOperators: Operator => should be
surrounded by a single space.
"primary" => { adapter: "sqlite3", database: "db/primary.sqlite3" }
^^
actionview/test/template/resolver_shared_tests.rb:1:1: C: [Corrected]
Style/FrozenStringLiteralComment: Missing magic comment #
frozen_string_literal: true.
module ResolverSharedTests
^
actionview/test/template/resolver_shared_tests.rb:10:33: C: [Corrected]
Layout/SpaceAroundEqualsInParameterDefault: Surrounding space missing in
default value assignment.
def with_file(filename, source="File at #{filename}")
^
actionview/test/template/resolver_shared_tests.rb:106:5: C: [Corrected]
Rails/RefuteMethods: Prefer assert_not_same over refute_same.
refute_same a, b
^^^^^^^^^^^
2760 files inspected, 5 offenses detected, 5 offenses corrected
```
The original message from Zeitwerk is "can't reload, please call
loader.enable_reloading before setup (Zeitwerk::Error)", which is not
very informative for Rails programmers.
Rails should err with a message worded in terms of its interface.
d8d6bd5 makes fixture loading to bulk statements by using
`execute_batch` for sqlite3 adapter. But `execute_batch` is slower and
it caused the performance regression for fixture loading.
In sqlite3 1.4.0, it have new batch method `execute_batch2`. I've
confirmed `execute_batch2` is extremely faster than `execute_batch`.
So I think it is worth to upgrade sqlite3 to 1.4.0 to use that method.
Before:
```
% ARCONN=sqlite3 bundle exec ruby -w -Itest test/cases/associations/eager_test.rb -n test_eager_loading_too_may_ids
Using sqlite3
Run options: -n test_eager_loading_too_may_ids --seed 35790
# Running:
.
Finished in 202.437406s, 0.0049 runs/s, 0.0049 assertions/s.
1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
ARCONN=sqlite3 bundle exec ruby -w -Itest -n test_eager_loading_too_may_ids 142.57s user 60.83s system 98% cpu 3:27.08 total
```
After:
```
% ARCONN=sqlite3 bundle exec ruby -w -Itest test/cases/associations/eager_test.rb -n test_eager_loading_too_may_ids
Using sqlite3
Run options: -n test_eager_loading_too_may_ids --seed 16649
# Running:
.
Finished in 8.471032s, 0.1180 runs/s, 0.1180 assertions/s.
1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
ARCONN=sqlite3 bundle exec ruby -w -Itest -n test_eager_loading_too_may_ids 10.71s user 1.36s system 95% cpu 12.672 total
```
racc 1.4.15 includes fixes for compiling with Ruby 2.7 since
[ruby/ruby@3d1c86a](https://github.com/ruby/ruby/commit/3d1c86a).
Before:
```
ruby -v
ruby 2.7.0dev (2019-03-07 trunk 67189) [x86_64-linux]
bundle install
...
Fetching racc 1.4.14
Installing racc 1.4.14 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
current directory:
/home/u/.rbenv/versions/2.7.0-dev/lib/ruby/gems/2.7.0/gems/racc-1.4.14/ext/racc
/home/u/.rbenv/versions/2.7.0-dev/bin/ruby -I
/home/u/.rbenv/versions/2.7.0-dev/lib/ruby/2.7.0 -r
./siteconf20190307-14242-16jzp6c.rb extconf.rb
checking for rb_ary_subseq()... yes
creating Makefile
current directory:
/home/u/.rbenv/versions/2.7.0-dev/lib/ruby/gems/2.7.0/gems/racc-1.4.14/ext/racc
make "DESTDIR=" clean
current directory:
/home/u/.rbenv/versions/2.7.0-dev/lib/ruby/gems/2.7.0/gems/racc-1.4.14/ext/racc
make "DESTDIR="
make: *** No rule to make target
'/home/u/.rbenv/versions/2.7.0-dev/include/ruby-2.7.0/defines.h', needed
by
'cparse.o'. Stop.
make failed, exit code 2
Gem files will remain installed in
/home/u/.rbenv/versions/2.7.0-dev/lib/ruby/gems/2.7.0/gems/racc-1.4.14
for
inspection.
Results logged to
/home/u/.rbenv/versions/2.7.0-dev/lib/ruby/gems/2.7.0/extensions/x86_64-linux/2.7.0-static/racc-1.4.14/gem_make.out
An error occurred while installing racc (1.4.14), and Bundler cannot
continue.
Make sure that `gem install racc -v '1.4.14' --source
'https://rubygems.org/'`
succeeds before bundling.
In Gemfile:
racc
```
Rails.autoloader and Rails.once_autoloader was just tentative API good
enough for a first patch. Rails.autoloader is singular and does not
convey in its name that there is another autoloader. That might be
confusing, for example if you set a logger and miss traces. On the other
hand, the name `once_autoloader` is very close to being horrible.
Rails.autoloaders.main and Rails.autoloaders.once read better for my
taste, and have a nice symmetry. Also, both "main" and "once" are four
letters long, short and same length.
They are tagged as "rails.main" and "rails.once", respectively.
References #35235.
This is a minor update to the named methods for the following:
- s/desired_capabilities/capabilities
- s/driver_options/capabilities
Since they are all the same thing we should keep the name the same
throughout the feature.
Updated docs to match / be a little bit clearer
Also updated the Gemfile for selenium-webdriver.
* There is currently no way to define specific browser capabilities since our SystemTest driver override the `option` key [Ref](a07d068078/actionpack/lib/action_dispatch/system_testing/driver.rb (L35))
This option key is used internally by selenium to add custom capabilities on the browser.
Depending on the Browser, some option are allowed to be passed inside a hash, the driver takes care of setting whatever you passed on the driver option. An example [here](a07d068078/actionpack/lib/action_dispatch/system_testing/driver.rb (L35)) where you are allowed to pass args such as `--no-sandbox` etc
However this behavior was only meant for backward compatibility and as you can see it's deprecated.
The non-deprecated behavior is to create a `<Driver>::Option` object containing all the capabilities we want. This is what we [currently do](a07d068078/actionpack/lib/action_dispatch/system_testing/browser.rb (L34-L36)) when chrome or firefox are in headless mode.
This PR allows to pass a block when calling `driven_by`, the block will be pased a `<Driver>::Option` instance. You can modify this object the way you want by adding any capabilities. The option object will be then passed to selenium.
```ruby
driven_by :selenium, using: :chrome do |driver_option|
driver_option.add_argument('--no-sandbox')
driver_option.add_emulation(device: 'iphone 4')
end
```
It has been moved to the a fork as part of https://github.com/rails/rails/pull/31671 .
That was since to that time a required PR was not yet merged.
Now the queue_classic master branch is compatible to recent pg versions,
so that there's no need to keep using a fork.
* No need to go through ruby
* Abort early if a generator command fails
* Reuse `rails_command` method
* Bump thor minimum dependency to 0.20.3
* Add some minimal docs
* Add a changelog entry
* Restore original logging
* Use Webpacker by default on new apps
* Stop including coffee-rails by default
* Drop using a js_compressor by default
* Drop extra test for coffeescript inclusion by default
* Stick with skip_javascript to signify skipping webpack
* Don't install a JS runtime by default any more
* app/javascript will be the new default directory for JS
* Make it clear that this is just for configuring the default Webpack framework setup now
* Start using the Webpack tag in the default layout
* Irrelevant test
* jQuery is long gone
* Stop having asset pipeline compile default application.js
* Add rails-ujs by default to the Webpack setup
* Add Active Storage JavaScript to application.js pack by default
* Consistent quoting
* Add Turbolinks to default pack
* Add Action Cable to default pack
Need some work on how to set the global consumer that channels will
work with. @javan?
* Require all channels by default and use a separate consumer stub
* Channel generator now targets Webpack style
* Update task docs to match new generator style
* Use uniform import style
* Drop the JS assets generator
It was barely helpful as it was. It’s no longer helpful in a Webpacked
world. Sayonara!
* Add app/javascript to the stats directories
* Simpler import style
Which match the other imports.
* Address test failures from dropping JS compilation (and compression)
* webpacker-default: Modify `AssetsGeneratorTest`
Before:
```
$ bin/test test/generators/assets_generator_test.rb
Run options: --seed 46201
F
Failure:
AssetsGeneratorTest#test_assets [/Users/ttanimichi/ghq/github.com/ttanimichi/rails/railties/test/generators/assets_generator_test.rb:12]:
Expected file "app/assets/javascripts/posts.js" to exist, but does not
bin/test /Users/ttanimichi/ghq/github.com/ttanimichi/rails/railties/test/generators/assets_generator_test.rb:10
.
Finished in 0.031343s, 63.8101 runs/s, 95.7152 assertions/s.
2 runs, 3 assertions, 1 failures, 0 errors, 0 skips
```
After:
```
$ bin/test test/generators/assets_generator_test.rb
Run options: --seed 43571
..
Finished in 0.030370s, 65.8545 runs/s, 65.8545 assertions/s.
2 runs, 2 assertions, 0 failures, 0 errors, 0 skips
```
* webpacker-default: Modify `ChannelGeneratorTest`
Before:
```
$ bin/test test/generators/channel_generator_test.rb
Run options: --seed 8986
.F
Failure:
ChannelGeneratorTest#test_channel_with_multiple_actions_is_created [/Users/ttanimichi/ghq/github.com/ttanimichi/rails/railties/test/generators/channel_generator_test.rb:43]:
Expected file "app/assets/javascripts/channels/chat.js" to exist, but does not
bin/test /Users/ttanimichi/ghq/github.com/ttanimichi/rails/railties/test/generators/channel_generator_test.rb:34
.F
Failure:
ChannelGeneratorTest#test_channel_is_created [/Users/ttanimichi/ghq/github.com/ttanimichi/rails/railties/test/generators/channel_generator_test.rb:29]:
Expected file "app/assets/javascripts/channels/chat.js" to exist, but does not
bin/test /Users/ttanimichi/ghq/github.com/ttanimichi/rails/railties/test/generators/channel_generator_test.rb:22
E
Error:
ChannelGeneratorTest#test_cable_js_is_created_if_not_present_already:
Errno::ENOENT: No such file or directory @ apply2files - /Users/ttanimichi/ghq/github.com/ttanimichi/rails/railties/test/fixtures/tmp/app/assets/javascripts/cable.js
bin/test /Users/ttanimichi/ghq/github.com/ttanimichi/rails/railties/test/generators/channel_generator_test.rb:60
F
Failure:
ChannelGeneratorTest#test_channel_suffix_is_not_duplicated [/Users/ttanimichi/ghq/github.com/ttanimichi/rails/railties/test/generators/channel_generator_test.rb:87]:
Expected file "app/assets/javascripts/channels/chat.js" to exist, but does not
bin/test /Users/ttanimichi/ghq/github.com/ttanimichi/rails/railties/test/generators/channel_generator_test.rb:80
F
Failure:
ChannelGeneratorTest#test_channel_on_revoke [/Users/ttanimichi/ghq/github.com/ttanimichi/rails/railties/test/generators/channel_generator_test.rb:77]:
Expected file "app/assets/javascripts/cable.js" to exist, but does not
bin/test /Users/ttanimichi/ghq/github.com/ttanimichi/rails/railties/test/generators/channel_generator_test.rb:68
Finished in 0.064384s, 108.7227 runs/s, 481.4861 assertions/s.
7 runs, 31 assertions, 4 failures, 1 errors, 0 skips
```
After:
```
$ bin/test test/generators/channel_generator_test.rb
Run options: --seed 44857
.......
Finished in 0.060243s, 116.1961 runs/s, 697.1764 assertions/s.
7 runs, 42 assertions, 0 failures, 0 errors, 0 skips
```
* Fix shared generator tests.
* webpacker-default: Modify `ControllerGeneratorTest`
The JS assets generator was dropped. ref. 46215b1794
* Revert "Simpler import style". It's currently failing with an error of "TypeError: undefined is not an object (evaluating '__WEBPACK_IMPORTED_MODULE_2_activestorage___default.a.start')". Waiting for @javan to have a look.
This reverts commit 5d3ebb71059f635d3756cbda4ab9752027e09256.
* require webpacker in test app
* Add webpacker without making the build hang/timeout. (#33640)
* use yarn workspaces to allow for installing unreleased packages and only generate js/bootsnap when required
* no longer need to have webpacker in env templates as webpacker moved this config to yml file
* Fix rubocop violation
* Got the test passing for the running scaffold
* update expected lines of code
* update middleware tests to account for webpacker
* disable js in plugins be default to get the tests passing (#34009)
* clear codeclimate report issues
* Anything newer than currently released is good
* Use Webpacker development version during development of Rails
* Edge should get development webpacker as well
* Add changelog entry for Webpacker change
v 4.9.2 avoids some warnings that show in our tests.
Although Gemfile.lock currently specifies 4.8.0, the CI already runs 4.9.2
so 4.8.0 warnings do not show in our CI logs.
Version 1.6.0 includes 3a958bc419 which saves us a warning: shadowing outer local variable - options.
I see it locally, but for some reason not on the CI.
## Summary
RuboCop 0.58.2 was released.
https://github.com/rubocop-hq/rubocop/releases/tag/v0.58.2
And rubocop-0-58 channel is available in Code Climate.
https://github.com/codeclimate/codeclimate/releases/tag/v0.76.0https://github.com/codeclimate/codeclimate/commit/38f21f0
In addition, the following changes are made in this PR.
- Replace Custom cops with Rails cops
- Add jaro_winkler gem to Gemfile.lock
### Replace Custom cops with Rails cops
These are compatible replacements.
- Replace `CustomCops/AssertNot` cop with `Rails/AssertNot` cop.
- Replace `CustomCops/RefuteNot` cop with `Rails/RefuteMethods` cop.
With this replacement, it was decided to use cop of RuboCop itself.
It removes the code related to CustomCops accordingly.
### Add jaro_winkler gem to Gemfile.lock
Since RuboCop 0.57.0 depends on jaro_winkler gem,
it has been added to Gemfile.lock.
Pending the next release of Thor which [fixes](006832ea32) calls to `ERB.new`, Railties CI log for Ruby 2.6 is flooded with so many warnings it is too long for Travis to handle:
```
/home/travis/.rvm/gems/ruby-head/gems/thor-0.20.0/lib/thor/actions/file_manipulation.rb:120: warning: Passing safe_level with the 2nd argument of ERB.new is deprecated. Do not use it, and specify other arguments as keyword arguments.
/home/travis/.rvm/gems/ruby-head/gems/thor-0.20.0/lib/thor/actions/file_manipulation.rb:120: warning: Passing trim_mode with the 3rd argument of ERB.new is deprecated. Use keyword argument like ERB.new(str, trim_mode: ...) instead.
/home/travis/.rvm/gems/ruby-head/gems/thor-0.20.0/lib/thor/actions/file_manipulation.rb:120: warning: Passing eoutvar with the 4th argument of ERB.new is deprecated. Use keyword argument like ERB.new(str, eoutvar: ...) instead.
The log length has exceeded the limit of 4 MB (this usually means that the test suite is raising the same exception over and over).
The job has been terminated
```
https://travis-ci.org/rails/rails/jobs/372623604#L10000https://api.travis-ci.org/v3/job/372623604/log.txt
This patch forces installation of fixed Thor, and enables us to look at the the log.