"httparty" is only added in #30020 to write two tests to make PUT requests
against S3 and GCS.
The same requests can be made with net/http, removing a dependency from the Gemfile.
A common source of bugs and code bloat within Active Record has been the
need for us to maintain the list of bind values separately from the AST
they're associated with. This makes any sort of AST manipulation
incredibly difficult, as any time we want to potentially insert or
remove an AST node, we need to traverse the entire tree to find where
the associated bind parameters are.
With this change, the bind parameters now live on the AST directly.
Active Record does not need to know or care about them until the final
AST traversal for SQL construction. Rather than returning just the SQL,
the Arel collector will now return both the SQL and the bind parameters.
At this point the connection adapter will have all the values that it
had before.
A bit of this code is janky and something I'd like to refactor later. In
particular, I don't like how we're handling associations in the
predicate builder, the special casing of `StatementCache::Substitute` in
`QueryAttribute`, or generally how we're handling bind value replacement
in the statement cache when prepared statements are disabled.
This also mostly reverts #26378, as it moved all the code into a
location that I wanted to delete.
/cc @metaskills @yahonda, this change will affect the adapters
Fixes#29766.
Fixes#29804.
Fixes#26541.
Close#28539.
Close#24769.
Close#26468.
Close#26202.
There are probably other issues/PRs that can be closed because of this
commit, but that's all I could find on the first few pages.
Bootsnap precomputes load path resolution and caches ruby ISeq
and YAML parsing/compilation, reducing application boot time by
approximately 50% on supported configurations.
Improves the performance from O(n) to O(1).
Previously it would require 50 queries to
insert 50 fixtures. Now it takes only one query.
Disabled on sqlite which doesn't support multiple inserts.
The test using mathn was first introduced in f1d9179 to check that the
`distance_of_time_in_words` properly doesn't use the `Fixnum#/` method
by explicitly requiring this library as it redefines this method.
Given that `mathn` has been gemified in Ruby 2.5 and is deprecated since
version 2.2, we can certainly safely assume that people will most-likely
not require this library in their application.
However, to make sure that we don't regress, let's add a test similar to
the one before f1d9179.
Capybara was updated in teamcapybara/capybara#1841 to use Minitest style
assertions so that system test output shows x number of assertions, x
numbe of failures, etc.
Before:
```
6 runs, 0 assertions, 0 failures, 0 errors, 0 skips
```
After:
```
6 runs, 7 assertions, 1 failures, 0 errors, 0 skips
```
This change bumps Capybara from 2.7.0 to 2.13.0 and includes the
required minitest assertion file in the test case. 🎉
* Move system tests back into Action Pack
* Rename `ActionSystemTest` to `ActionDispatch::SystemTestCase`
* Remove private base module and only make file for public
`SystemTestCase` class, name private module `SystemTesting`
* Rename `ActionSystemTestCase` to `ApplicationSystemTestCase`
* Update corresponding documentation and guides
* Delete old `ActionSystemTest` files
Renames `Rails::SystemTestCase` to `ActionSystemTest` and moves it to a
gem under the Rails name.
We need to name the class `ActionSystemTestCase` because the gem expects
a module but tests themselves expect a class.
Adds MIT-LICENSE, CHANGELOG, and README for the future.
* Adds test case test
* Adds driver adapter test
* Adds tests for capybara seleium driver (testing the settings not
actually opening the browser to test capybara w/ selenium because that
would so so so slow)
* Adds tests for rack test driver
* Adds tests for generators
* puma 3.7.0: to let kill("TERM") properly terminate the process in railties test (3.6.2 doesnot on my machine)
* amq-protocol 2.1.0: to reduce warnings in AJ tests
* rails-html-sanitizer: missing change in a previous commit that updated Gemfile
Erubi offers the following advantages for Rails:
* Works with ruby's --enable-frozen-string-literal option
* Has 88% smaller memory footprint
* Does no freedom patching (Erubis adds a method to Kernel)
* Has simpler internals (1 file, <150 lines of code)
* Has an open development model (Erubis doesn't have a
public source control repository or bug tracker)
* Is not dead (Erubis hasn't been updated since 2011)
Erubi is a simplified fork of Erubis that contains just the
parts that are generally needed (which includes the parts
that Rails uses). The only intentional difference in
behavior is that it does not include support for <%=== tags
for debug output. That could be added to the ActionView ERB
handler if it is desired.
The Erubis template handler remains in a deprecated state
so that code that accesses it directly does not break. It
can be removed after Rails 5.1.
nio4r 2.0.0 primarily includes new features and bugfixes, with few breaking
changes. The primary reason for bumping the major version is dropping support
for all Ruby versions prior to 2.2.2, so as to match Rails 5.
Full release announcement here:
https://groups.google.com/forum/#!topic/socketry/ZDIUj1ufiJ8
Coffee script 1.12.1 was released and contained a bug where coffee
script was undefined. 1.12.1 was yanked and 1.12.2 was released. This
bumps coffee-script-source so that CI Railties tests pass.
See: https://github.com/jashkenas/coffeescript/issues/4403
When the initial evented monitor feature was written, the latest version of listen
was the 3.0.x series. Since then the listen project has moved on to the 3.1.x series.
This patch allows the use of the new versions.
Mostly, this is just to avoid EventMachine. But there's also an argument
to be made that we're better off using a different protocol library for
our test suite than the one we use to implement the server.
* Following tests were failing on Ruby edge 2.4 version -
- RelationTest#test_update_all_with_joins_and_offset_and_order:
- RelationTest#test_update_all_with_joins_and_offset:
- BasicsTest#test_no_limit_offset:
- CalculationsTest#test_offset_is_kept:
- ActiveRecord::CollectionCacheKeyTest#test_cache_key_for_queries_with_offset_which_return_0_rows:
- FinderTest#test_third_to_last:
* As Arel 7.1 supports Integer unification after https://github.com/rails/arel/pull/437 we can use it.
When run test of Active Job with resque 1.26, occurs following error.
```
QueuingTest#test_current_locale_is_kept_while_running_perform_later:
NoMethodError: undefined method `current_tags' for #<Resque::QuietFormatter:0x0055b44f63ed50>
/home/yaginuma/program/rails/master_y_yagi/rails/activejob/lib/active_job/logging.rb:51:in `logger_tagged_by_active_job?'
```
This was happening for the formatter class of resque not the formatter class of
Rails is they've been used to logger.formatter.
This was happening because become fomatter is changed during the instantiation
of worker in the resque 1.26.
In the master, unless the environment variable is set, fomatter is so as not to
be changed, test will pass.
Ref: https://github.com/resque/resque/pull/1439
- Railties tests related to fetching asset URL started failing after the
release of sprockets 3.6.1 on Travis.
- This was due to the change in
https://github.com/rails/sprockets/pull/311/files
which changed the logic in `concat_javascript_sources` to add `;` at
the end of file if the source did not end with semicolon.
- Bumped up sprockets minor version and fixed the failing tests.
Apps that depend on Action Cable don't need Blade for app development,
so we can remove the gem dependency.
We do need Blade for Action Cable dev, so we bundle it in the Gemfile.
Signed-off-by: Jeremy Daer <jeremydaer@gmail.com>
Without the `wdm` gem, it appears that `listen` keeps an open handle to
each of these files, causing them not to be removed when the tempdir
tries to clean iteslf up, and then directory to fail to unlink. In
addition to fixing that particular failure, we now construct OS agnostic
paths, and capture exceptions if the directory fails to unlink so that
minitest will report it rather than crash
dalli 2.7.6 fixed deprecation warning caused by using
`Rack::Session::Abstract::ID`.
This commit suppress warnings on ActionPack tests.
See:
9874a7c3ad
This new adapter does get a little more intimate with the redis-rb gem's
implementation than I would like, but it's the least bad of the
approaches I've come up with.
This PR includes two changes for 2.0.0:
- Breaking API change around `async.perform` --> `perform_async`
- New addition of `perform_in`, which now allows end users of the
adapter to use the `enqueued_at` public API method.
This removes 8 runtime gem dependencies from Rails:
```
Using hitimes 1.2.3
Using timers 4.1.1
Using celluloid-essentials 0.20.5
Using celluloid-extras 0.20.5
Using celluloid-fsm 0.20.5
Using celluloid-pool 0.20.5
Using celluloid-supervision 0.20.5
Using celluloid 0.17.2
```
In listen 3.0.4 and below, the `#stop` method on the notification
backends are a no-op, meaning that we are leaking them per test. This
ended up triggering another bug in Ruby that causes our builds to fail
randomly on CI.
listen bug: https://github.com/guard/listen/issues/353
ruby bug: https://bugs.ruby-lang.org/issues/11744
This is the implementation of the file update checker written
by Puneet Agarwal for GSoC 2015 (except for the tiny version
of the listen gem, which was 3.0.2 in the original patch).
Puneet's branch became too out of sync with upstream. This is
the final work in one single clean commit.
Credit goes in the first line using a convention understood
by the contrib app.
* Introduce `ActionDispatch::Http::Headers#add` to add a value to
a multivalued header.
* Move `Response#add_header` upstream: https://github.com/rack/rack/pull/957
* Match upstream `Response#have_header?` -> `#has_header?` name change.
* Move `app/assets/manifest.js` to `app/assets/config/manifest.js`.
Avoid the suggestion that you can/should deep-link `stylesheets/foo`.
* Pull in all toplevel stylesheets and JavaScripts, not just
`application.js` and `.css`. Demonstrate how to use `link_directory`
with a specified `.js`/`.css` type.
* Fix RAILS_ENV handling in assets tests.
* Shush warnings spam from third-party libs that distract from tests.
The thread_safe gem is being deprecated and all its code has been merged
into the concurrent-ruby gem. The new class, Concurrent::Map, is exactly
the same as its predecessor except for fixes to two bugs discovered
during the merge.
Just include the modules necessary in the Request object to implement
the things we need. This should make it easier to build delegate
request objects because the API is smaller
Escaping and unescaping paths is different than query parameters, and we
need to respect that. This commit uses the new method in Rack to escape
and unescape paths. Fixes#11816
Fixes 4d157ea8c1
Without any specification about the version of sprockets-rails, running a
`bundle install` on a brand new app might result in sprockets 0.0.1 being
installed.
However, the minimum requirement is sprockets-rails 2 (see https://github.com/rails/rails/pull/17752/files)
The concurrent-ruby gem is a toolset containing many concurrency
utilities. Many of these utilities include runtime-specific
optimizations when possible. Rather than clutter the Rails codebase with
concurrency utilities separate from the core task, such tools can be
superseded by similar tools in the more specialized gem. This commit
replaces `ActiveSupport::Concurrency::Latch` with
`Concurrent::CountDownLatch`, which is functionally equivalent.
Our general contract in Active Record is that strings are assumed to be
SQL literals, and symbols are assumed to reference a column. If a from
clause is given, we shouldn't include the table name, but we should
still quote the value as if it were a column.
Upon fixing this, the tests were still failing on SQLite. This was
because the column name being returned by the query was `"\"join\""`
instead of `"join"`. This is actually a bug in SQLite that was fixed a
long time ago, but I was using the version of SQLite included by OS X
which has this bug. Since I'm guessing this will be a common case for
contributors, I also added an explicit check with a more helpful error
message.
Fixes#20360
History:
1. `debugger` was there until d2ed433b where it was commented out, and I
couldn't figure out why
2. Since then we inherited that when switching to `byebug` in 93559da4
Reasons:
1. It's nice to have a debugger when working on framework bugs
2. It's an uncommented dependency in app Gemfiles since Rails 4.2 (see fbe38c9e)
Since we now only support Ruby 2.2+, we can safely remove the old mri
entries from the Gemfile.
This also allows us not to lock to a specific bundler version, since
:mri_22 was defined only on 1.7.11.
Closes#19611.
The edge version ships with a patch that uses composition over
inheritance for the Mail::PartsList object (see mikel/mail#782).
Let's test Action Mailer against it to prevent eventual regressions
and experience it.
Moreover, this branch makes the Action Mailer suite green against
Rubinius.
I found that nil values were being incorrectly sent to
`parse_nested_query` in Rack. Originally it was thought that Rails was
doing something incorrect but it was actually rack-test. This was fixed
in brynary/rack-test@4a4b2c1 and is no longer an issue. This commit
bumps rack-test in Rails so changes to Rack don't cause failures.
See rack/rack#813 for more information.
The main reason is to make bisect easier.
In some points, we have a lot of git dependencies. Since we don't have
the information of which commit we are referring to, bundler get the
latest commit of the master branch of the dependency. This sometimes
returns a version that is not compatible with Rails anymore, making the
tests fail and the harder to identify the commit that introduced a bug.
Also this will make sure that a contributor will always get a set of
dependencies that are passing with our tests.
In our CI server we delete the lock file to make sure we are always
testing against the newest release of our dependencies.