]> cat aescling's git repositories - mastodon.git/commitdiff
Further preparation for Rails 6 (#15916)
authorClaire <claire.github-309c@sitedethib.com>
Fri, 19 Mar 2021 01:45:34 +0000 (02:45 +0100)
committerGitHub <noreply@github.com>
Fri, 19 Mar 2021 01:45:34 +0000 (02:45 +0100)
* Use ActiveRecord::Result#to_ary instead of deprecated to_hash

They do the same thing, and to_hash has been removed from Rails 6.1

* Explicitly name polymorphic indexes to workaround a bug in Rails 6.1

cf. https://github.com/rails/rails/issues/41693

* Fix incorrect usage of “foreign_key” in migration script

* Use `ActiveModel::Errors#delete` instead of deprecated clear method

* Fix link headers tests on Rails 6.1

Rails 6.1 adds values to the Link header by default, thus it is not a
LinkHeader object anymore. Fix the test to parse the Link header instead
of assuming it is a LinkHeader.

app/controllers/admin/domain_blocks_controller.rb
db/migrate/20161006213403_rails_settings_migration.rb
db/migrate/20171119172437_create_admin_action_logs.rb
db/migrate/20180528141303_fix_accounts_unique_index.rb
db/migrate/20181024224956_migrate_account_conversations.rb
db/migrate/20181207011115_downcase_custom_emoji_domains.rb
db/migrate/20190726175042_add_case_insensitive_index_to_tags.rb
lib/mastodon/migration_helpers.rb
spec/requests/link_headers_spec.rb

index ba927b04adab1f809a9334cb7011e85e8f49c85f..b140c454c17718bdb8c82e03cf75d6dee59ac96c 100644 (file)
@@ -22,7 +22,7 @@ module Admin
       if existing_domain_block.present? && !@domain_block.stricter_than?(existing_domain_block)
         @domain_block.save
         flash.now[:alert] = I18n.t('admin.domain_blocks.existing_domain_block_html', name: existing_domain_block.domain, unblock_url: admin_domain_block_path(existing_domain_block)).html_safe # rubocop:disable Rails/OutputSafety
-        @domain_block.errors[:domain].clear
+        @domain_block.errors.delete(:domain)
         render :new
       else
         if existing_domain_block.present?
index 42875d7cbda3e0a78ac22036e4d6cf45a1649c10..9d565cb5c6f1155a33637d8b3fd0c50926893815 100644 (file)
@@ -7,12 +7,12 @@ end
 class RailsSettingsMigration < MIGRATION_BASE_CLASS
   def self.up
     create_table :settings do |t|
-      t.string     :var, :null => false
+      t.string     :var, null: false
       t.text       :value
-      t.references :target, :null => false, :polymorphic => true
-      t.timestamps :null => true
+      t.references :target, null: false, polymorphic: true, index: { name: 'index_settings_on_target_type_and_target_id' }
+      t.timestamps null: true
     end
-    add_index :settings, [ :target_type, :target_id, :var ], :unique => true
+    add_index :settings, [ :target_type, :target_id, :var ], unique: true
   end
 
   def self.down
index 0c2b6c623d1c91ad9caff049c8368984a642b2ae..b690735d2654db8bd9d9104ab89e207129c4132b 100644 (file)
@@ -3,7 +3,7 @@ class CreateAdminActionLogs < ActiveRecord::Migration[5.1]
     create_table :admin_action_logs do |t|
       t.belongs_to :account, foreign_key: { on_delete: :cascade }
       t.string :action, null: false, default: ''
-      t.references :target, polymorphic: true
+      t.references :target, polymorphic: true, index: { name: 'index_admin_action_logs_on_target_type_and_target_id' }
       t.text :recorded_changes, null: false, default: ''
 
       t.timestamps
index 5d7b3c463b01f0fc6f6ebfcb7c77c94b7d248856..02813f363c78caf724cbcbd62a7c87d521256f13 100644 (file)
@@ -37,7 +37,7 @@ class FixAccountsUniqueIndex < ActiveRecord::Migration[5.2]
       end
     end
 
-    duplicates = Account.connection.select_all('SELECT string_agg(id::text, \',\') AS ids FROM accounts GROUP BY lower(username), lower(domain) HAVING count(*) > 1').to_hash
+    duplicates = Account.connection.select_all('SELECT string_agg(id::text, \',\') AS ids FROM accounts GROUP BY lower(username), lower(domain) HAVING count(*) > 1').to_ary
 
     duplicates.each do |row|
       deduplicate_account!(row['ids'].split(','))
index 12e0a70fac9d86b4b0038ed13a6afdd9802c46e8..9e6497d81ffde4469b1e14d7807f60ede8541408 100644 (file)
@@ -17,8 +17,8 @@ class MigrateAccountConversations < ActiveRecord::Migration[5.2]
     belongs_to :account, optional: true
     belongs_to :activity, polymorphic: true, optional: true
 
-    belongs_to :status,         foreign_type: 'Status',        foreign_key: 'activity_id', optional: true
-    belongs_to :mention,        foreign_type: 'Mention',       foreign_key: 'activity_id', optional: true
+    belongs_to :status,  foreign_key: 'activity_id', optional: true
+    belongs_to :mention, foreign_key: 'activity_id', optional: true
 
     def target_status
       mention&.status
index 65f1fc8d938c835fd8b6742ac1918914f6059dbd..e27e0249d9d2807ced2627243614a26f83e24092 100644 (file)
@@ -2,7 +2,7 @@ class DowncaseCustomEmojiDomains < ActiveRecord::Migration[5.2]
   disable_ddl_transaction!
 
   def up
-    duplicates = CustomEmoji.connection.select_all('SELECT string_agg(id::text, \',\') AS ids FROM custom_emojis GROUP BY shortcode, lower(domain) HAVING count(*) > 1').to_hash
+    duplicates = CustomEmoji.connection.select_all('SELECT string_agg(id::text, \',\') AS ids FROM custom_emojis GROUP BY shortcode, lower(domain) HAVING count(*) > 1').to_ary
 
     duplicates.each do |row|
       CustomEmoji.where(id: row['ids'].split(',')[0...-1]).destroy_all
index 057fc86baa8fd25b399cbdbc1ed1229f6dfd0848..eb03d7ca7d2520c4f3b7e835da20b55f1f26d72a 100644 (file)
@@ -2,7 +2,7 @@ class AddCaseInsensitiveIndexToTags < ActiveRecord::Migration[5.2]
   disable_ddl_transaction!
 
   def up
-    Tag.connection.select_all('SELECT string_agg(id::text, \',\') AS ids FROM tags GROUP BY lower(name) HAVING count(*) > 1').to_hash.each do |row|
+    Tag.connection.select_all('SELECT string_agg(id::text, \',\') AS ids FROM tags GROUP BY lower(name) HAVING count(*) > 1').to_ary.each do |row|
       canonical_tag_id  = row['ids'].split(',').first
       redundant_tag_ids = row['ids'].split(',')[1..-1]
 
index bf2314ecb1e209bbd64086d7deb444235120606c..fcaa9259e3b6da6e71bd8814d8943eedf6a35dad 100644 (file)
@@ -319,7 +319,7 @@ module Mastodon
         count_arel = table.project(Arel.star.count.as('count'))
         count_arel = yield table, count_arel if block_given?
 
-        total = exec_query(count_arel.to_sql).to_hash.first['count'].to_i
+        total = exec_query(count_arel.to_sql).to_ary.first['count'].to_i
 
         return if total == 0
       end
@@ -335,7 +335,7 @@ module Mastodon
 
       start_arel = table.project(table[:id]).order(table[:id].asc).take(1)
       start_arel = yield table, start_arel if block_given?
-      first_row = exec_query(start_arel.to_sql).to_hash.first
+      first_row = exec_query(start_arel.to_sql).to_ary.first
       # In case there are no rows but we didn't catch it in the estimated size:
       return unless first_row
       start_id = first_row['id'].to_i
@@ -356,7 +356,7 @@ module Mastodon
             .skip(batch_size)
 
           stop_arel = yield table, stop_arel if block_given?
-          stop_row = exec_query(stop_arel.to_sql).to_hash.first
+          stop_row = exec_query(stop_arel.to_sql).to_ary.first
 
           update_arel = Arel::UpdateManager.new
             .table(table)
index 712ee262b80ca4b5cc9a7af5fecdc8c8ca719a25..c32e0f79a935cf8e61313b1f9c7812903d54fae9 100644 (file)
@@ -25,7 +25,7 @@ describe 'Link headers' do
     end
 
     def link_header_with_type(type)
-      response.headers['Link'].links.find do |link|
+      LinkHeader.parse(response.headers['Link'].to_s).links.find do |link|
         link.attr_pairs.any? { |pair| pair == ['type', type] }
       end
     end