Skip to content
This repository has been archived by the owner on Dec 21, 2023. It is now read-only.

Commit

Permalink
Further preparation for Rails 6 (mastodon#15916)
Browse files Browse the repository at this point in the history
* 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. rails/rails#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.
  • Loading branch information
ClearlyClaire authored Mar 19, 2021
1 parent 55ac2b9 commit b358229
Show file tree
Hide file tree
Showing 9 changed files with 15 additions and 15 deletions.
2 changes: 1 addition & 1 deletion app/controllers/admin/domain_blocks_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ def create
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?
Expand Down
8 changes: 4 additions & 4 deletions db/migrate/20161006213403_rails_settings_migration.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@
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
Expand Down
2 changes: 1 addition & 1 deletion db/migrate/20171119172437_create_admin_action_logs.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ def change
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
Expand Down
2 changes: 1 addition & 1 deletion db/migrate/20180528141303_fix_accounts_unique_index.rb
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ def up
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(','))
Expand Down
4 changes: 2 additions & 2 deletions db/migrate/20181024224956_migrate_account_conversations.rb
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ class Notification < ApplicationRecord
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
Expand Down
2 changes: 1 addition & 1 deletion db/migrate/20181207011115_downcase_custom_emoji_domains.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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]

Expand Down
6 changes: 3 additions & 3 deletions lib/mastodon/migration_helpers.rb
Original file line number Diff line number Diff line change
Expand Up @@ -319,7 +319,7 @@ def update_column_in_batches(table_name, column, value)
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
Expand All @@ -335,7 +335,7 @@ def update_column_in_batches(table_name, column, value)

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
Expand All @@ -356,7 +356,7 @@ def update_column_in_batches(table_name, column, value)
.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)
Expand Down
2 changes: 1 addition & 1 deletion spec/requests/link_headers_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
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
Expand Down

0 comments on commit b358229

Please sign in to comment.