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) | ||||
|         @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? | ||||
|  |  | |||
|  | @ -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 | ||||
|  |  | |||
|  | @ -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 | ||||
|  |  | |||
|  | @ -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(',')) | ||||
|  |  | |||
|  | @ -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 | ||||
|  |  | |||
|  | @ -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 | ||||
|  |  | |||
|  | @ -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] | ||||
| 
 | ||||
|  |  | |||
|  | @ -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) | ||||
|  |  | |||
|  | @ -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 | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue