| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In Rails engine, migration files are in under `db/migrate` of engine.
Therefore, when rake task is executed in engine, `db/migrate` is
automatically added to `DatabaseTasks.migrations_paths`.
https://github.com/rails/rails/blob/a18cf23a9cbcbeed61e8049442640c7153e0a8fb/activerecord/lib/active_record/railtie.rb#L39..L43
However, if execute the rake task under dummy app, migration files will not
be loaded because engine's migration path setting process is not called.
Therefore, in order to load migration files correctly, it is necessary to
execute rake task under engine.
Fixes #30765
|
|\
| |
| | |
Fix broken link to recaptcha.net [ci skip]
|
| |
| |
| |
| |
| | |
The link to recaptcha.net returns a 404. As far as I can tell, the new
link ought to be to https://developers.google.com/recaptcha/ .
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Currently `:api:` tag has leaked on the doc directly since RDoc doesn't
support `:api:` tag directive.
http://api.rubyonrails.org/v5.1/classes/AbstractController/Rendering.html
So `:api: private` doesn't work as expected. We are using `:nodoc:` for
the purpose.
Related #13989.
|
|\ \
| | |
| | | |
Remove unused methods from `RenderPartialWithRecordIdentificationController`
|
| | |
| | |
| | |
| | | |
These methods no longer used since a3da293.
|
| |/
|/|
| |
| | |
Follow up of #30728.
|
|\ \
| | |
| | |
| | |
| | | |
y-yagi/dont_use_active_support_where_it_is_not_needed
Don't use Active Support where it is not needed.
|
| |/
| |
| |
| |
| |
| |
| |
| |
| | |
This code has been changed with https://github.com/rails/rails/pull/30735/files#diff-8e5f6b33c191ad6dec07f3288345a13fL47.
However, `active_support/time` is not load automatically, so if use
Action Pack alone, `days` method can not use and an error occurs.
In this case, I think that there is no problem by specifying a value
with Integer.
|
|\ \
| |/
|/| |
Fix "warning: method redefined; discarding old test_scaffold_plural_names"
|
|/
|
|
|
|
|
|
|
|
|
|
| |
Since warning was issued due to duplication of test names, fix the test
name to a meaningful name.
This fixes following warnings:
```
railties/test/generators/named_base_test.rb:141: warning: method redefined; discarding old test_scaffold_plural_names
railties/test/generators/named_base_test.rb:62: warning: previous definition of test_scaffold_plural_names was here
```
|
|
|
|
| |
https://travis-ci.org/rails/rails/jobs/281044755#L5582-L5586
|
| |
|
|\
| |
| | |
Fix formatting in ActionDispatch::SSL middleware docs
|
| |
| |
| |
| |
| |
| |
| | |
Before: https://monosnap.com/file/J6xewF0tYpm6dC9nSTe82ddsHAOcM5.png
After: https://monosnap.com/file/0tCYicLXNqRHAEMDb81u0aLb3gH9Wf.png
[ci skip]
|
|\ \
| | |
| | | |
Fix Typo in Testing Guide [ci skip]
|
|/ / |
|
| | |
|
| | |
|
|\ \
| | |
| | |
| | |
| | | |
mikeycgto/actiondispatch-use-aead-encrypted-cookies-patch
Fixes for use_authenticated_cookie_encryption
|
| | |
| | |
| | |
| | | |
Use CBC encryption is this configuration value is set to false
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
See the changelog entry.
Remove `secrets.secret_token` from the bug report templates,
since we don't accept bug reports for Rails versions that
don't support a `secret_key_base`.
[ claudiob & Kasper Timm Hansen ]
|
|\ \ \
| | | |
| | | |
| | | |
| | | | |
bogdanvlviv/fix-activestorage-package_json_version_format
Set version in activestorage/package.json in proper format.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
`5.2.0.alpha` => `5.2.0-alpha`
System versioning isn't compliant with npm.
|
|\ \ \ \
| | | | |
| | | | | |
Add assert_enqueued_email_with to ActionMailer::TestHelper
|
| | | | | |
|
|\ \ \ \ \
| |_|_|_|/
|/| | | | |
activerecord: Remove a redundant mutation tracker
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
The extra mutation tracker was needed in Rails 5.1 to preserve the
old behaviour of `changes`, but now there is no difference
between `changes` and `changes_to_save`, so `@mutation_tracker`
can be removed.
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Nested scaffold should be fine
|
| | | | | | |
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
Align `bin/update`'s Yarn usage with `bin/setup`
|
| | | | | | | |
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
[ci skip]
|
|\ \ \ \ \ \ \
| |_|/ / / / /
|/| | | | | |
| | | | | | |
| | | | | | | |
y-yagi/ensure_transform_keys_of_hwida_to_return_hwida
Ensure `HashWithIndifferentAccess#transform_keys` to return `HashWithIndifferentAccess`
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
`HashWithIndifferentAccess`
Currently, `#transform_values`, `#select` and `#reject` return instance
of `HashWithIndifferentAccess`. But `#transform_keys` returns instance
of Hash. This behavior is a bit confusing.
I think that `HashWithIndifferentAccess#transform_keys` should also return
instance of `HashWithIndifferentAccess` as well as other methods.
|
|/ / / / / /
| | | | | |
| | | | | |
| | | | | | |
Since #29301, `arel_attribute` respects a custom table name.
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
cheerful/record-milliseconds-in-postgres-timestamp-ranges
Use `ActiveRecord::ConnectionAdapters::Quoting.quote` to quote bounds for a PostgreSQL range
|
|/ / / / / /
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
PostgreSQL 9.1+ introduced range types, and Rails added support for
using this datatype in ActiveRecord. However, the serialization of
`PostgreSQL::OID::Range` was incomplete, because it did not properly
quote the bounds that make up the range. A clear example of this is a
`tsrange`.
Normally, ActiveRecord quotes Date/Time objects to include the
milliseconds. However, the way `PostgreSQL::OID::Range` serialized its
bounds, the milliseconds were dropped. This meant that the value was
incomplete and not equal to the submitted value.
An example of normal timestamps vs. a `tsrange`. Note how the bounds
for the range do not include their milliseconds (they were present in
the ruby Range):
UPDATE "iterations" SET "updated_at" = $1, "range" = $2 WHERE
"iterations"."id" = $3
[["updated_at", "2017-09-23 17:07:01.304864"],
["range", "[2017-09-23 00:00:00 UTC,2017-09-23 23:59:59 UTC]"],
["id", 1234]]
`PostgreSQL::OID::Range` serialized the range by interpolating a
string for the range, which works for most cases, but does not work
for timestamps:
def serialize(value)
if value.is_a?(::Range)
from = type_cast_single_for_database(value.begin)
to = type_cast_single_for_database(value.end)
"[#{from},#{to}#{value.exclude_end? ? ')' : ']'}"
else
super
end
end
(byebug) from = type_cast_single_for_database(value.begin)
2010-01-01 13:30:00 UTC
(byebug) to = type_cast_single_for_database(value.end)
2011-02-02 19:30:00 UTC
(byebug) "[#{from},#{to}#{value.exclude_end? ? ')' : ']'}"
"[2010-01-01 13:30:00 UTC,2011-02-02 19:30:00 UTC)"
@sgrif (the original implementer for Postgres Range support) provided
some feedback about where the quoting should occur:
Yeah, quoting at all is definitely wrong here. I'm not sure what I
was thinking in 02579b5, but what this is doing is definitely in the
wrong place. It should probably just be returning a range of
subtype.serialize(value.begin) and subtype.serialize(value.end), and
letting the adapter handle the rest.
`Postgres::OID::Range` now returns a `Range` object, and
`ActiveRecord::ConnectionAdapters::PostgreSQL::Quoting` can now encode
and quote a `Range`:
def encode_range(range)
"[#{type_cast(range.first)},#{type_cast(range.last)}#{range.exclude_end? ? ')' : ']'}"
end
...
encode_range(range)
#=> "['2010-01-01 13:30:00.670277','2011-02-02 19:30:00.745125')"
This commit includes tests to make sure the milliseconds are
preserved in `tsrange` and `tstzrange` columns
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
It is also used in `BlockTestCase`.
|
| |_|_|/ /
|/| | | |
| | | | |
| | | | |
| | | | | |
`abstract_unit.rb` in actionview was copied from actionpack in the
commit eb23754e. But some part is never used for actionview's tests.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
`AttributeMethodsTest`
These are no longer used since 66736c8e.
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Change :github git source for bug report templates
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
:github source uses `git://` url by default, `https://` is recommended.
See http://bundler.io/v1.15/guides/git.html#security
We do the same in our `Gemfile` and templates.
|
|/ / / / /
| | | | |
| | | | |
| | | | |
| | | | | |
Because the reflection doesn't have `foreign_type` unless the
association is a polymorphic association.
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Add a space to RefineryCMS in Engine guide [ci skip]
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
* According to the official website, it seems that "RefineryCMS" is "Refinery CMS".
* See at: http://www.refinerycms.com/
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
I do not want to set the expectation that any enumerable object should
behave this way, but this case in particular comes up frequently enough
that I'm caving on this one.
Fixes #30684.
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
PERF: Partially recover some performance when preloading.
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Benchmark Script:
```
require 'active_record'
require 'benchmark/ips'
ActiveRecord::Base.establish_connection(ENV.fetch('DATABASE_URL'))
ActiveRecord::Migration.verbose = false
ActiveRecord::Schema.define do
create_table :users, force: true do |t|
t.string :name, :email
t.integer :topic_id
t.timestamps null: false
end
create_table :topics, force: true do |t|
t.string :title
t.timestamps null: false
end
end
attributes = {
name: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.',
email: 'foobar@email.com'
}
class Topic < ActiveRecord::Base
has_many :users
end
class User < ActiveRecord::Base
belongs_to :topic
end
100.times do
User.create!(attributes)
end
users = User.first(50)
Topic.create!(title: 'This is a topic', users: users)
Benchmark.ips do |x|
x.config(time: 10, warmup: 5)
x.report("preload") do
User.includes(:topic).all.to_a
end
end
```
Before:
```
Calculating -------------------------------------
preload 40.000 i/100ms
-------------------------------------------------
preload 407.962 (± 1.5%) i/s - 4.080k
```
After:
```
alculating -------------------------------------
preload 43.000 i/100ms
-------------------------------------------------
preload 427.567 (± 1.6%) i/s - 4.300k
```
|