activerecord 7.0.1 → 7.0.2
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of activerecord might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.md +70 -0
- data/lib/active_record/associations.rb +1 -0
- data/lib/active_record/attribute_methods.rb +1 -1
- data/lib/active_record/autosave_association.rb +2 -2
- data/lib/active_record/connection_adapters/abstract/quoting.rb +1 -1
- data/lib/active_record/connection_adapters/abstract/schema_definitions.rb +4 -4
- data/lib/active_record/connection_adapters/abstract/schema_dumper.rb +14 -1
- data/lib/active_record/connection_adapters/mysql/database_statements.rb +1 -1
- data/lib/active_record/connection_adapters/mysql/schema_dumper.rb +7 -1
- data/lib/active_record/connection_adapters/postgresql/schema_statements.rb +6 -1
- data/lib/active_record/connection_adapters/postgresql_adapter.rb +2 -2
- data/lib/active_record/database_configurations/connection_url_resolver.rb +1 -0
- data/lib/active_record/database_configurations.rb +1 -1
- data/lib/active_record/encryption/configurable.rb +2 -2
- data/lib/active_record/fixtures.rb +1 -1
- data/lib/active_record/gem_version.rb +1 -1
- data/lib/active_record/integration.rb +2 -2
- data/lib/active_record/railtie.rb +2 -2
- data/lib/active_record/relation/delegation.rb +1 -1
- data/lib/active_record/relation/query_methods.rb +11 -5
- data/lib/active_record/relation.rb +1 -1
- data/lib/active_record/schema.rb +38 -23
- data/lib/active_record/schema_dumper.rb +15 -16
- metadata +9 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: da2fb0412054b1d4bb0376fdefd081df9e1a775086b26c990a3ef2c4694c2f5f
|
4
|
+
data.tar.gz: 93e85094985b3aa298e20f69231ef317fe2bbf13c8172262d7e8bf2a4baedb9c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aecf41a61f98af43c3861ca75c584af4b58d2613e1cc3f10746b7b4b058c6995e7a7fc5f1f44ec68f845e0b9c54b83cad732a7e31ecd6e34b513098a0fe7fe98
|
7
|
+
data.tar.gz: 1eedc6462f61e6724a43a77dc5848cb3a381bc9caa4ea4913a3995af8458e38d9cfbd7592ae331c2fff42745101aeae2feb0361167b5754c8171ea938229582d
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,75 @@
|
|
1
|
+
## Rails 7.0.2 (February 08, 2022) ##
|
2
|
+
|
3
|
+
* Fix `PG.connect` keyword arguments deprecation warning on ruby 2.7.
|
4
|
+
|
5
|
+
*Nikita Vasilevsky*
|
6
|
+
|
7
|
+
* Fix the ability to exclude encryption params from being autofiltered.
|
8
|
+
|
9
|
+
*Mark Gangl*
|
10
|
+
|
11
|
+
* Dump the precision for datetime columns following the new defaults.
|
12
|
+
|
13
|
+
*Rafael Mendonça França*
|
14
|
+
|
15
|
+
* Make sure encrypted attributes are not being filtered twice.
|
16
|
+
|
17
|
+
*Nikita Vasilevsky*
|
18
|
+
|
19
|
+
* Dump the database schema containing the current Rails version.
|
20
|
+
|
21
|
+
Since https://github.com/rails/rails/pull/42297, Rails now generate datetime columns
|
22
|
+
with a default precision of 6. This means that users upgrading to Rails 7.0 from 6.1,
|
23
|
+
when loading the database schema, would get the new precision value, which would not match
|
24
|
+
the production schema.
|
25
|
+
|
26
|
+
To avoid this the schema dumper will generate the new format which will include the Rails
|
27
|
+
version and will look like this:
|
28
|
+
|
29
|
+
```
|
30
|
+
ActiveRecord::Schema[7.0].define
|
31
|
+
```
|
32
|
+
|
33
|
+
When upgrading from Rails 6.1 to Rails 7.0, you can run the `rails app:update` task that will
|
34
|
+
set the current schema version to 6.1.
|
35
|
+
|
36
|
+
*Rafael Mendonça França*
|
37
|
+
|
38
|
+
* Fix parsing expression for PostgreSQL generated column.
|
39
|
+
|
40
|
+
*fatkodima*
|
41
|
+
|
42
|
+
* Fix `Mysql2::Error: Commands out of sync; you can't run this command now`
|
43
|
+
when bulk-inserting fixtures that exceed `max_allowed_packet` configuration.
|
44
|
+
|
45
|
+
*Nikita Vasilevsky*
|
46
|
+
|
47
|
+
* Fix error when saving an association with a relation named `record`.
|
48
|
+
|
49
|
+
*Dorian Marié*
|
50
|
+
|
51
|
+
* Fix `MySQL::SchemaDumper` behavior about datetime precision value.
|
52
|
+
|
53
|
+
*y0t4*
|
54
|
+
|
55
|
+
* Improve associated with no reflection error.
|
56
|
+
|
57
|
+
*Nikolai*
|
58
|
+
|
59
|
+
* Fix PG.connect keyword arguments deprecation warning on ruby 2.7.
|
60
|
+
|
61
|
+
Fixes #44307.
|
62
|
+
|
63
|
+
*Nikita Vasilevsky*
|
64
|
+
|
65
|
+
* Fix passing options to `check_constraint` from `change_table`.
|
66
|
+
|
67
|
+
*Frederick Cheung*
|
68
|
+
|
69
|
+
|
1
70
|
## Rails 7.0.1 (January 06, 2022) ##
|
2
71
|
|
72
|
+
|
3
73
|
* Change `QueryMethods#in_order_of` to drop records not listed in values.
|
4
74
|
|
5
75
|
`in_order_of` now filters down to the values provided, to match the behavior of the `Enumerable` version.
|
@@ -413,7 +413,7 @@ module ActiveRecord
|
|
413
413
|
inspected_value = if value.is_a?(String) && value.length > 50
|
414
414
|
"#{value[0, 50]}...".inspect
|
415
415
|
elsif value.is_a?(Date) || value.is_a?(Time)
|
416
|
-
%("#{value.
|
416
|
+
%("#{value.to_fs(:inspect)}")
|
417
417
|
else
|
418
418
|
value.inspect
|
419
419
|
end
|
@@ -446,7 +446,7 @@ module ActiveRecord
|
|
446
446
|
elsif autosave != false
|
447
447
|
key = reflection.options[:primary_key] ? public_send(reflection.options[:primary_key]) : id
|
448
448
|
|
449
|
-
if (autosave && record.changed_for_autosave?) ||
|
449
|
+
if (autosave && record.changed_for_autosave?) || _record_changed?(reflection, record, key)
|
450
450
|
unless reflection.through_reflection
|
451
451
|
record[reflection.foreign_key] = key
|
452
452
|
association.set_inverse_instance(record)
|
@@ -461,7 +461,7 @@ module ActiveRecord
|
|
461
461
|
end
|
462
462
|
|
463
463
|
# If the record is new or it has changed, returns true.
|
464
|
-
def
|
464
|
+
def _record_changed?(reflection, record, key)
|
465
465
|
record.new_record? ||
|
466
466
|
association_foreign_key_changed?(reflection, record, key) ||
|
467
467
|
record.will_save_change_to_attribute?(reflection.foreign_key)
|
@@ -810,8 +810,8 @@ module ActiveRecord
|
|
810
810
|
# t.check_constraint("price > 0", name: "price_check")
|
811
811
|
#
|
812
812
|
# See {connection.add_check_constraint}[rdoc-ref:SchemaStatements#add_check_constraint]
|
813
|
-
def check_constraint(*args)
|
814
|
-
@base.add_check_constraint(name, *args)
|
813
|
+
def check_constraint(*args, **options)
|
814
|
+
@base.add_check_constraint(name, *args, **options)
|
815
815
|
end
|
816
816
|
|
817
817
|
# Removes the given check constraint from the table.
|
@@ -819,8 +819,8 @@ module ActiveRecord
|
|
819
819
|
# t.remove_check_constraint(name: "price_check")
|
820
820
|
#
|
821
821
|
# See {connection.remove_check_constraint}[rdoc-ref:SchemaStatements#remove_check_constraint]
|
822
|
-
def remove_check_constraint(*args)
|
823
|
-
@base.remove_check_constraint(name, *args)
|
822
|
+
def remove_check_constraint(*args, **options)
|
823
|
+
@base.remove_check_constraint(name, *args, **options)
|
824
824
|
end
|
825
825
|
end
|
826
826
|
end
|
@@ -3,6 +3,8 @@
|
|
3
3
|
module ActiveRecord
|
4
4
|
module ConnectionAdapters # :nodoc:
|
5
5
|
class SchemaDumper < SchemaDumper # :nodoc:
|
6
|
+
DEFAULT_DATETIME_PRECISION = 6 # :nodoc:
|
7
|
+
|
6
8
|
def self.create(connection, options)
|
7
9
|
new(connection, options)
|
8
10
|
end
|
@@ -63,7 +65,18 @@ module ActiveRecord
|
|
63
65
|
end
|
64
66
|
|
65
67
|
def schema_precision(column)
|
66
|
-
column.
|
68
|
+
if column.type == :datetime
|
69
|
+
case column.precision
|
70
|
+
when nil
|
71
|
+
"nil"
|
72
|
+
when DEFAULT_DATETIME_PRECISION
|
73
|
+
nil
|
74
|
+
else
|
75
|
+
column.precision.inspect
|
76
|
+
end
|
77
|
+
elsif column.precision
|
78
|
+
column.precision.inspect
|
79
|
+
end
|
67
80
|
end
|
68
81
|
|
69
82
|
def schema_scale(column)
|
@@ -100,8 +100,8 @@ module ActiveRecord
|
|
100
100
|
statements = statements.map { |sql| transform_query(sql) }
|
101
101
|
combine_multi_statements(statements).each do |statement|
|
102
102
|
raw_execute(statement, name)
|
103
|
+
@connection.abandon_results!
|
103
104
|
end
|
104
|
-
@connection.abandon_results!
|
105
105
|
end
|
106
106
|
|
107
107
|
def default_insert_value(column)
|
@@ -53,7 +53,13 @@ module ActiveRecord
|
|
53
53
|
end
|
54
54
|
|
55
55
|
def schema_precision(column)
|
56
|
-
|
56
|
+
if /\Atime(?:stamp)?\b/.match?(column.sql_type) && column.precision == 0
|
57
|
+
nil
|
58
|
+
elsif column.type == :datetime
|
59
|
+
column.precision == 0 ? "nil" : super
|
60
|
+
else
|
61
|
+
super
|
62
|
+
end
|
57
63
|
end
|
58
64
|
|
59
65
|
def schema_collation(column)
|
@@ -663,7 +663,12 @@ module ActiveRecord
|
|
663
663
|
column_name, type, default, notnull, oid, fmod, collation, comment, attgenerated = field
|
664
664
|
type_metadata = fetch_type_metadata(column_name, type, oid.to_i, fmod.to_i)
|
665
665
|
default_value = extract_value_from_default(default)
|
666
|
-
|
666
|
+
|
667
|
+
if attgenerated.present?
|
668
|
+
default_function = default
|
669
|
+
else
|
670
|
+
default_function = extract_default_function(default_value, default)
|
671
|
+
end
|
667
672
|
|
668
673
|
if match = default_function&.match(/\Anextval\('"?(?<sequence_name>.+_(?<suffix>seq\d*))"?'::regclass\)\z/)
|
669
674
|
serial = sequence_name_from_parts(table_name, column_name, match[:suffix]) == match[:sequence_name]
|
@@ -75,7 +75,7 @@ module ActiveRecord
|
|
75
75
|
|
76
76
|
class << self
|
77
77
|
def new_client(conn_params)
|
78
|
-
PG.connect(conn_params)
|
78
|
+
PG.connect(**conn_params)
|
79
79
|
rescue ::PG::Error => error
|
80
80
|
if conn_params && conn_params[:dbname] && error.message.include?(conn_params[:dbname])
|
81
81
|
raise ActiveRecord::NoDatabaseError.db_error(conn_params[:dbname])
|
@@ -281,7 +281,7 @@ module ActiveRecord
|
|
281
281
|
def initialize(connection, logger, connection_parameters, config)
|
282
282
|
super(connection, logger, config)
|
283
283
|
|
284
|
-
@connection_parameters = connection_parameters
|
284
|
+
@connection_parameters = connection_parameters || {}
|
285
285
|
|
286
286
|
# @local_tz is initialized as nil to avoid warnings when connect tries to use it
|
287
287
|
@local_tz = nil
|
@@ -38,7 +38,7 @@ module ActiveRecord
|
|
38
38
|
# the returned list. Most of the time we're only iterating over the write
|
39
39
|
# connection (i.e. migrations don't need to run for the write and read connection).
|
40
40
|
# Defaults to +false+.
|
41
|
-
# * <tt>include_hidden:</
|
41
|
+
# * <tt>include_hidden:</tt> Determines whether to include replicas and configurations
|
42
42
|
# hidden by +database_tasks: false+ in the returned list. Most of the time we're only
|
43
43
|
# iterating over the primary connections (i.e. migrations don't need to run for the
|
44
44
|
# write and read connection). Defaults to +false+.
|
@@ -50,9 +50,9 @@ module ActiveRecord
|
|
50
50
|
end
|
51
51
|
end
|
52
52
|
|
53
|
-
def
|
53
|
+
def install_auto_filtered_parameters_hook(application) # :nodoc:
|
54
54
|
ActiveRecord::Encryption.on_encrypted_attribute_declared do |klass, encrypted_attribute_name|
|
55
|
-
application.config.filter_parameters << encrypted_attribute_name unless ActiveRecord::Encryption.config.excluded_from_filter_parameters.include?(
|
55
|
+
application.config.filter_parameters << encrypted_attribute_name unless ActiveRecord::Encryption.config.excluded_from_filter_parameters.include?(encrypted_attribute_name)
|
56
56
|
end
|
57
57
|
end
|
58
58
|
end
|
@@ -79,7 +79,7 @@ module ActiveRecord
|
|
79
79
|
timestamp = max_updated_column_timestamp
|
80
80
|
|
81
81
|
if timestamp
|
82
|
-
timestamp = timestamp.utc.
|
82
|
+
timestamp = timestamp.utc.to_fs(cache_timestamp_format)
|
83
83
|
"#{model_name.cache_key}/#{id}-#{timestamp}"
|
84
84
|
else
|
85
85
|
"#{model_name.cache_key}/#{id}"
|
@@ -103,7 +103,7 @@ module ActiveRecord
|
|
103
103
|
raw_timestamp_to_cache_version(timestamp)
|
104
104
|
|
105
105
|
elsif timestamp = updated_at
|
106
|
-
timestamp.utc.
|
106
|
+
timestamp.utc.to_fs(cache_timestamp_format)
|
107
107
|
end
|
108
108
|
elsif self.class.has_attribute?("updated_at")
|
109
109
|
raise ActiveModel::MissingAttributeError, "missing attribute: updated_at"
|
@@ -360,9 +360,9 @@ To keep using the current cache store, you can turn off cache versioning entirel
|
|
360
360
|
end
|
361
361
|
|
362
362
|
# Filtered params
|
363
|
-
ActiveSupport.on_load(:action_controller) do
|
363
|
+
ActiveSupport.on_load(:action_controller, run_once: true) do
|
364
364
|
if ActiveRecord::Encryption.config.add_to_filter_parameters
|
365
|
-
ActiveRecord::Encryption.
|
365
|
+
ActiveRecord::Encryption.install_auto_filtered_parameters_hook(app)
|
366
366
|
end
|
367
367
|
end
|
368
368
|
end
|
@@ -87,7 +87,7 @@ module ActiveRecord
|
|
87
87
|
|
88
88
|
delegate :to_xml, :encode_with, :length, :each, :join,
|
89
89
|
:[], :&, :|, :+, :-, :sample, :reverse, :rotate, :compact, :in_groups, :in_groups_of,
|
90
|
-
:to_sentence, :to_formatted_s, :as_json,
|
90
|
+
:to_sentence, :to_fs, :to_formatted_s, :as_json,
|
91
91
|
:shuffle, :split, :slice, :index, :rindex, to: :records
|
92
92
|
|
93
93
|
delegate :primary_key, :connection, to: :klass
|
@@ -68,7 +68,7 @@ module ActiveRecord
|
|
68
68
|
# # WHERE "authors"."id" IS NOT NULL AND "comments"."id" IS NOT NULL
|
69
69
|
def associated(*associations)
|
70
70
|
associations.each do |association|
|
71
|
-
reflection =
|
71
|
+
reflection = scope_association_reflection(association)
|
72
72
|
@scope.joins!(association)
|
73
73
|
self.not(reflection.table_name => { reflection.association_primary_key => nil })
|
74
74
|
end
|
@@ -96,16 +96,22 @@ module ActiveRecord
|
|
96
96
|
# # WHERE "authors"."id" IS NULL AND "comments"."id" IS NULL
|
97
97
|
def missing(*associations)
|
98
98
|
associations.each do |association|
|
99
|
-
reflection =
|
100
|
-
unless reflection
|
101
|
-
raise ArgumentError.new("An association named `:#{association}` does not exist on the model `#{@scope.name}`.")
|
102
|
-
end
|
99
|
+
reflection = scope_association_reflection(association)
|
103
100
|
@scope.left_outer_joins!(association)
|
104
101
|
@scope.where!(reflection.table_name => { reflection.association_primary_key => nil })
|
105
102
|
end
|
106
103
|
|
107
104
|
@scope
|
108
105
|
end
|
106
|
+
|
107
|
+
private
|
108
|
+
def scope_association_reflection(association)
|
109
|
+
reflection = @scope.klass._reflect_on_association(association)
|
110
|
+
unless reflection
|
111
|
+
raise ArgumentError.new("An association named `:#{association}` does not exist on the model `#{@scope.name}`.")
|
112
|
+
end
|
113
|
+
reflection
|
114
|
+
end
|
109
115
|
end
|
110
116
|
|
111
117
|
FROZEN_EMPTY_ARRAY = [].freeze
|
data/lib/active_record/schema.rb
CHANGED
@@ -10,7 +10,7 @@ module ActiveRecord
|
|
10
10
|
#
|
11
11
|
# Usage:
|
12
12
|
#
|
13
|
-
# ActiveRecord::Schema.define do
|
13
|
+
# ActiveRecord::Schema[7.0].define do
|
14
14
|
# create_table :authors do |t|
|
15
15
|
# t.string :name, null: false
|
16
16
|
# end
|
@@ -30,32 +30,47 @@ module ActiveRecord
|
|
30
30
|
# ActiveRecord::Schema is only supported by database adapters that also
|
31
31
|
# support migrations, the two features being very similar.
|
32
32
|
class Schema < Migration::Current
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
33
|
+
module Definition
|
34
|
+
extend ActiveSupport::Concern
|
35
|
+
|
36
|
+
module ClassMethods
|
37
|
+
# Eval the given block. All methods available to the current connection
|
38
|
+
# adapter are available within the block, so you can easily use the
|
39
|
+
# database definition DSL to build up your schema (
|
40
|
+
# {create_table}[rdoc-ref:ConnectionAdapters::SchemaStatements#create_table],
|
41
|
+
# {add_index}[rdoc-ref:ConnectionAdapters::SchemaStatements#add_index], etc.).
|
42
|
+
#
|
43
|
+
# The +info+ hash is optional, and if given is used to define metadata
|
44
|
+
# about the current schema (currently, only the schema's version):
|
45
|
+
#
|
46
|
+
# ActiveRecord::Schema[7.0].define(version: 2038_01_19_000001) do
|
47
|
+
# ...
|
48
|
+
# end
|
49
|
+
def define(info = {}, &block)
|
50
|
+
new.define(info, &block)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def define(info, &block) # :nodoc:
|
55
|
+
instance_eval(&block)
|
48
56
|
|
49
|
-
|
50
|
-
|
57
|
+
if info[:version].present?
|
58
|
+
connection.schema_migration.create_table
|
59
|
+
connection.assume_migrated_upto_version(info[:version])
|
60
|
+
end
|
51
61
|
|
52
|
-
|
53
|
-
connection.
|
54
|
-
connection.assume_migrated_upto_version(info[:version])
|
62
|
+
ActiveRecord::InternalMetadata.create_table
|
63
|
+
ActiveRecord::InternalMetadata[:environment] = connection.migration_context.current_environment
|
55
64
|
end
|
65
|
+
end
|
66
|
+
|
67
|
+
include Definition
|
56
68
|
|
57
|
-
|
58
|
-
|
69
|
+
def self.[](version)
|
70
|
+
@class_for_version ||= {}
|
71
|
+
@class_for_version[version] ||= Class.new(Migration::Compatibility.find(version)) do
|
72
|
+
include Definition
|
73
|
+
end
|
59
74
|
end
|
60
75
|
end
|
61
76
|
end
|
@@ -74,22 +74,21 @@ module ActiveRecord
|
|
74
74
|
end
|
75
75
|
|
76
76
|
def header(stream)
|
77
|
-
stream.puts
|
78
|
-
# This file is auto-generated from the current state of the database. Instead
|
79
|
-
# of editing this file, please use the migrations feature of Active Record to
|
80
|
-
# incrementally modify your database, and then regenerate this schema definition.
|
81
|
-
#
|
82
|
-
# This file is the source Rails uses to define your schema when running `bin/rails
|
83
|
-
# db:schema:load`. When creating a new database, `bin/rails db:schema:load` tends to
|
84
|
-
# be faster and is potentially less error prone than running all of your
|
85
|
-
# migrations from scratch. Old migrations may fail to apply correctly if those
|
86
|
-
# migrations use external dependencies or application code.
|
87
|
-
#
|
88
|
-
# It's strongly recommended that you check this file into your version control system.
|
89
|
-
|
90
|
-
ActiveRecord::Schema.define(#{define_params}) do
|
91
|
-
|
92
|
-
HEADER
|
77
|
+
stream.puts <<~HEADER
|
78
|
+
# This file is auto-generated from the current state of the database. Instead
|
79
|
+
# of editing this file, please use the migrations feature of Active Record to
|
80
|
+
# incrementally modify your database, and then regenerate this schema definition.
|
81
|
+
#
|
82
|
+
# This file is the source Rails uses to define your schema when running `bin/rails
|
83
|
+
# db:schema:load`. When creating a new database, `bin/rails db:schema:load` tends to
|
84
|
+
# be faster and is potentially less error prone than running all of your
|
85
|
+
# migrations from scratch. Old migrations may fail to apply correctly if those
|
86
|
+
# migrations use external dependencies or application code.
|
87
|
+
#
|
88
|
+
# It's strongly recommended that you check this file into your version control system.
|
89
|
+
|
90
|
+
ActiveRecord::Schema[#{ActiveRecord::Migration.current_version}].define(#{define_params}) do
|
91
|
+
HEADER
|
93
92
|
end
|
94
93
|
|
95
94
|
def trailer(stream)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 7.0.
|
4
|
+
version: 7.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Heinemeier Hansson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-02-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 7.0.
|
19
|
+
version: 7.0.2
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 7.0.
|
26
|
+
version: 7.0.2
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: activemodel
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - '='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 7.0.
|
33
|
+
version: 7.0.2
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - '='
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 7.0.
|
40
|
+
version: 7.0.2
|
41
41
|
description: Databases on Rails. Build a persistent domain model by mapping database
|
42
42
|
tables to Ruby classes. Strong conventions for associations, validations, aggregations,
|
43
43
|
migrations, and testing come baked-in.
|
@@ -434,10 +434,10 @@ licenses:
|
|
434
434
|
- MIT
|
435
435
|
metadata:
|
436
436
|
bug_tracker_uri: https://github.com/rails/rails/issues
|
437
|
-
changelog_uri: https://github.com/rails/rails/blob/v7.0.
|
438
|
-
documentation_uri: https://api.rubyonrails.org/v7.0.
|
437
|
+
changelog_uri: https://github.com/rails/rails/blob/v7.0.2/activerecord/CHANGELOG.md
|
438
|
+
documentation_uri: https://api.rubyonrails.org/v7.0.2/
|
439
439
|
mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
|
440
|
-
source_code_uri: https://github.com/rails/rails/tree/v7.0.
|
440
|
+
source_code_uri: https://github.com/rails/rails/tree/v7.0.2/activerecord
|
441
441
|
rubygems_mfa_required: 'true'
|
442
442
|
post_install_message:
|
443
443
|
rdoc_options:
|