Further preparation for Rails 6 (#15916)
* 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.
This commit is contained in:
		
							parent
							
								
									ac03531bec
								
							
						
					
					
						commit
						6024c263bf
					
				
					 9 changed files with 15 additions and 15 deletions
				
			
		|  | @ -22,7 +22,7 @@ module Admin | ||||||
|       if existing_domain_block.present? && !@domain_block.stricter_than?(existing_domain_block) |       if existing_domain_block.present? && !@domain_block.stricter_than?(existing_domain_block) | ||||||
|         @domain_block.save |         @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 |         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 |         render :new | ||||||
|       else |       else | ||||||
|         if existing_domain_block.present? |         if existing_domain_block.present? | ||||||
|  |  | ||||||
|  | @ -7,12 +7,12 @@ end | ||||||
| class RailsSettingsMigration < MIGRATION_BASE_CLASS | class RailsSettingsMigration < MIGRATION_BASE_CLASS | ||||||
|   def self.up |   def self.up | ||||||
|     create_table :settings do |t| |     create_table :settings do |t| | ||||||
|       t.string     :var, :null => false |       t.string     :var, null: false | ||||||
|       t.text       :value |       t.text       :value | ||||||
|       t.references :target, :null => false, :polymorphic => true |       t.references :target, null: false, polymorphic: true, index: { name: 'index_settings_on_target_type_and_target_id' } | ||||||
|       t.timestamps :null => true |       t.timestamps null: true | ||||||
|     end |     end | ||||||
|     add_index :settings, [ :target_type, :target_id, :var ], :unique => true |     add_index :settings, [ :target_type, :target_id, :var ], unique: true | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   def self.down |   def self.down | ||||||
|  |  | ||||||
|  | @ -3,7 +3,7 @@ class CreateAdminActionLogs < ActiveRecord::Migration[5.1] | ||||||
|     create_table :admin_action_logs do |t| |     create_table :admin_action_logs do |t| | ||||||
|       t.belongs_to :account, foreign_key: { on_delete: :cascade } |       t.belongs_to :account, foreign_key: { on_delete: :cascade } | ||||||
|       t.string :action, null: false, default: '' |       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.text :recorded_changes, null: false, default: '' | ||||||
| 
 | 
 | ||||||
|       t.timestamps |       t.timestamps | ||||||
|  |  | ||||||
|  | @ -37,7 +37,7 @@ class FixAccountsUniqueIndex < ActiveRecord::Migration[5.2] | ||||||
|       end |       end | ||||||
|     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| |     duplicates.each do |row| | ||||||
|       deduplicate_account!(row['ids'].split(',')) |       deduplicate_account!(row['ids'].split(',')) | ||||||
|  |  | ||||||
|  | @ -17,8 +17,8 @@ class MigrateAccountConversations < ActiveRecord::Migration[5.2] | ||||||
|     belongs_to :account, optional: true |     belongs_to :account, optional: true | ||||||
|     belongs_to :activity, polymorphic: true, optional: true |     belongs_to :activity, polymorphic: true, optional: true | ||||||
| 
 | 
 | ||||||
|     belongs_to :status,         foreign_type: 'Status',        foreign_key: 'activity_id', optional: true |     belongs_to :status,  foreign_key: 'activity_id', optional: true | ||||||
|     belongs_to :mention,        foreign_type: 'Mention',       foreign_key: 'activity_id', optional: true |     belongs_to :mention, foreign_key: 'activity_id', optional: true | ||||||
| 
 | 
 | ||||||
|     def target_status |     def target_status | ||||||
|       mention&.status |       mention&.status | ||||||
|  |  | ||||||
|  | @ -2,7 +2,7 @@ class DowncaseCustomEmojiDomains < ActiveRecord::Migration[5.2] | ||||||
|   disable_ddl_transaction! |   disable_ddl_transaction! | ||||||
| 
 | 
 | ||||||
|   def up |   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| |     duplicates.each do |row| | ||||||
|       CustomEmoji.where(id: row['ids'].split(',')[0...-1]).destroy_all |       CustomEmoji.where(id: row['ids'].split(',')[0...-1]).destroy_all | ||||||
|  |  | ||||||
|  | @ -2,7 +2,7 @@ class AddCaseInsensitiveIndexToTags < ActiveRecord::Migration[5.2] | ||||||
|   disable_ddl_transaction! |   disable_ddl_transaction! | ||||||
| 
 | 
 | ||||||
|   def up |   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 |       canonical_tag_id  = row['ids'].split(',').first | ||||||
|       redundant_tag_ids = row['ids'].split(',')[1..-1] |       redundant_tag_ids = row['ids'].split(',')[1..-1] | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -319,7 +319,7 @@ module Mastodon | ||||||
|         count_arel = table.project(Arel.star.count.as('count')) |         count_arel = table.project(Arel.star.count.as('count')) | ||||||
|         count_arel = yield table, count_arel if block_given? |         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 |         return if total == 0 | ||||||
|       end |       end | ||||||
|  | @ -335,7 +335,7 @@ module Mastodon | ||||||
| 
 | 
 | ||||||
|       start_arel = table.project(table[:id]).order(table[:id].asc).take(1) |       start_arel = table.project(table[:id]).order(table[:id].asc).take(1) | ||||||
|       start_arel = yield table, start_arel if block_given? |       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: |       # In case there are no rows but we didn't catch it in the estimated size: | ||||||
|       return unless first_row |       return unless first_row | ||||||
|       start_id = first_row['id'].to_i |       start_id = first_row['id'].to_i | ||||||
|  | @ -356,7 +356,7 @@ module Mastodon | ||||||
|             .skip(batch_size) |             .skip(batch_size) | ||||||
| 
 | 
 | ||||||
|           stop_arel = yield table, stop_arel if block_given? |           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 |           update_arel = Arel::UpdateManager.new | ||||||
|             .table(table) |             .table(table) | ||||||
|  |  | ||||||
|  | @ -25,7 +25,7 @@ describe 'Link headers' do | ||||||
|     end |     end | ||||||
| 
 | 
 | ||||||
|     def link_header_with_type(type) |     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] } |         link.attr_pairs.any? { |pair| pair == ['type', type] } | ||||||
|       end |       end | ||||||
|     end |     end | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue