diff options
author | Claire <claire.github-309c@sitedethib.com> | 2021-05-07 15:56:45 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-07 15:56:45 +0200 |
commit | a5f91a11d07db93526597131100c919f21a5dd78 (patch) | |
tree | fc51cd3cc48942fa4f5689ee0ac57f6a4fa173ab /lib | |
parent | 0ad240cb6b8662e31dfae6279cbee07a4c75b231 (diff) |
Fix older migrations on Ruby 3 (#16174)
Diffstat (limited to 'lib')
-rw-r--r-- | lib/mastodon/migration_helpers.rb | 16 | ||||
-rw-r--r-- | lib/paperclip/schema_extensions.rb | 37 |
2 files changed, 45 insertions, 8 deletions
diff --git a/lib/mastodon/migration_helpers.rb b/lib/mastodon/migration_helpers.rb index 147642a1c..521d903bf 100644 --- a/lib/mastodon/migration_helpers.rb +++ b/lib/mastodon/migration_helpers.rb @@ -95,7 +95,7 @@ module Mastodon allow_null: options[:null] ) else - add_column(table_name, column_name, :datetime_with_timezone, options) + add_column(table_name, column_name, :datetime_with_timezone, **options) end end end @@ -120,7 +120,7 @@ module Mastodon options = options.merge({ algorithm: :concurrently }) disable_statement_timeout - add_index(table_name, column_name, options) + add_index(table_name, column_name, **options) end # Removes an existed index, concurrently when supported @@ -144,7 +144,7 @@ module Mastodon disable_statement_timeout end - remove_index(table_name, options.merge({ column: column_name })) + remove_index(table_name, **options.merge({ column: column_name })) end # Removes an existing index, concurrently when supported @@ -168,7 +168,7 @@ module Mastodon disable_statement_timeout end - remove_index(table_name, options.merge({ name: index_name })) + remove_index(table_name, **options.merge({ name: index_name })) end # Only available on Postgresql >= 9.2 @@ -472,7 +472,7 @@ module Mastodon col_opts[:limit] = old_col.limit end - add_column(table, new, new_type, col_opts) + add_column(table, new, new_type, **col_opts) # We set the default value _after_ adding the column so we don't end up # updating any existing data with the default value. This isn't @@ -510,10 +510,10 @@ module Mastodon new_pk_index_name = "index_#{table}_on_#{column}_cm" unless indexes_for(table, column).find{|i| i.name == old_pk_index_name} - add_concurrent_index(table, [temp_column], { + add_concurrent_index(table, [temp_column], unique: true, name: new_pk_index_name - }) + ) end end end @@ -763,7 +763,7 @@ module Mastodon options[:using] = index.using if index.using options[:where] = index.where if index.where - add_concurrent_index(table, new_columns, options) + add_concurrent_index(table, new_columns, **options) end end diff --git a/lib/paperclip/schema_extensions.rb b/lib/paperclip/schema_extensions.rb new file mode 100644 index 000000000..8d065676a --- /dev/null +++ b/lib/paperclip/schema_extensions.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true + +# Monkey-patch various Paperclip methods for Ruby 3.0 compatibility + +module Paperclip + module Schema + module StatementsExtensions + def add_attachment(table_name, *attachment_names) + raise ArgumentError, 'Please specify attachment name in your add_attachment call in your migration.' if attachment_names.empty? + + options = attachment_names.extract_options! + + attachment_names.each do |attachment_name| + COLUMNS.each_pair do |column_name, column_type| + column_options = options.merge(options[column_name.to_sym] || {}) + add_column(table_name, "#{attachment_name}_#{column_name}", column_type, **column_options) + end + end + end + end + + module TableDefinitionExtensions + def attachment(*attachment_names) + options = attachment_names.extract_options! + attachment_names.each do |attachment_name| + COLUMNS.each_pair do |column_name, column_type| + column_options = options.merge(options[column_name.to_sym] || {}) + column("#{attachment_name}_#{column_name}", column_type, **column_options) + end + end + end + end + end +end + +Paperclip::Schema::Statements.prepend(Paperclip::Schema::StatementsExtensions) +Paperclip::Schema::TableDefinition.prepend(Paperclip::Schema::TableDefinitionExtensions) |