Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Convert CoffeeScript to ES6 syntax #38974

Closed
wants to merge 4 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
6 changes: 3 additions & 3 deletions actioncable/lib/action_cable/helpers/action_cable_helper.rb
Expand Up @@ -12,11 +12,11 @@ module ActionCableHelper
# </head>
#
# This is then used by Action Cable to determine the URL of your WebSocket server.
# Your CoffeeScript can then connect to the server without needing to specify the
# Your JavaScript can then connect to the server without needing to specify the
# URL directly:
#
# #= require cable
# @App = {}
# window.Cable = require("@rails/actioncable")
# window.App = {}
# App.cable = Cable.createConsumer()
#
# Make sure to specify the correct server location in each of your environment
Expand Down
6 changes: 6 additions & 0 deletions activerecord/CHANGELOG.md
@@ -1,3 +1,9 @@
* Add support for `if_exists` option for removing an index.

The `remove_index` method can take an `if_exists` option. If this is set to true an error won't be raised if the index doesn't exist.

*Eileen M. Uchitelle*

* Remove ibm_db, informix, mssql, oracle, and oracle12 Arel visitors which are not used in the code base.

*Ryuta Kamizono*
Expand Down
Expand Up @@ -845,6 +845,11 @@ def add_index(table_name, column_name, options = {})
#
# remove_index :accounts, :branch_id, name: :by_branch_party
#
# Checks if the index exists before trying to remove it. Will silently ignore indexes that
# don't exist.
#
# remove_index :accounts, if_exists: true
#
# Removes the index named +by_branch_party+ in the +accounts+ table +concurrently+.
#
# remove_index :accounts, name: :by_branch_party, algorithm: :concurrently
Expand All @@ -855,7 +860,10 @@ def add_index(table_name, column_name, options = {})
#
# For more information see the {"Transactional Migrations" section}[rdoc-ref:Migration].
def remove_index(table_name, column_name = nil, options = {})
return if options[:if_exists] && !index_exists?(table_name, column_name, options)

index_name = index_name_for_remove(table_name, column_name, options)

execute "DROP INDEX #{quote_column_name(index_name)} ON #{quote_table_name(table_name)}"
end

Expand Down
Expand Up @@ -448,7 +448,7 @@ def add_index(table_name, column_name, options = {}) #:nodoc:
end
end

def remove_index(table_name, column_name = nil, options = {}) #:nodoc:
def remove_index(table_name, column_name = nil, options = {}) # :nodoc:
table = Utils.extract_schema_qualified_name(table_name.to_s)

if column_name.is_a?(Hash)
Expand All @@ -467,13 +467,17 @@ def remove_index(table_name, column_name = nil, options = {}) #:nodoc:
end
end

return if options[:if_exists] && !index_exists?(table_name, column_name, options)

index_to_remove = PostgreSQL::Name.new(table.schema, index_name_for_remove(table.to_s, column_name, options))

algorithm =
if options.key?(:algorithm)
index_algorithms.fetch(options[:algorithm]) do
raise ArgumentError.new("Algorithm must be one of the following: #{index_algorithms.keys.map(&:inspect).join(', ')}")
end
end

execute "DROP INDEX #{algorithm} #{quote_table_name(index_to_remove)}"
end

Expand Down
Expand Up @@ -226,8 +226,11 @@ def primary_keys(table_name) # :nodoc:
pks.sort_by { |f| f["pk"] }.map { |f| f["name"] }
end

def remove_index(table_name, column_name, options = {}) #:nodoc:
def remove_index(table_name, column_name, options = {}) # :nodoc:
return if options[:if_exists] && !index_exists?(table_name, column_name, options)

index_name = index_name_for_remove(table_name, column_name, options)

exec_query "DROP INDEX #{quote_column_name(index_name)}"
end

Expand Down
5 changes: 4 additions & 1 deletion activerecord/lib/active_record/counter_cache.rb
Expand Up @@ -51,7 +51,10 @@ def reset_counters(id, *counters, touch: nil)

if touch
names = touch if touch != true
updates.merge!(touch_attributes_with_time(*names))
names = Array.wrap(names)
options = names.extract_options!
touch_updates = touch_attributes_with_time(*names, **options)
updates.merge!(touch_updates)
end

unscoped.where(primary_key => object.id).update_all(updates)
Expand Down
2 changes: 1 addition & 1 deletion activerecord/lib/active_record/relation.rb
Expand Up @@ -500,7 +500,7 @@ def update_counters(counters)

if touch
names = touch if touch != true
names = Array(names)
names = Array.wrap(names)
options = names.extract_options!
touch_updates = klass.touch_attributes_with_time(*names, **options)
updates.merge!(touch_updates) unless touch_updates.empty?
Expand Down
2 changes: 1 addition & 1 deletion activerecord/test/cases/counter_cache_test.rb
Expand Up @@ -264,7 +264,7 @@ class ::SpecialReply < ::Reply
test "reset multiple counters with touch: true" do
assert_touching @topic, :updated_at do
Topic.update_counters(@topic.id, replies_count: 1, unique_replies_count: 1)
Topic.reset_counters(@topic.id, :replies, :unique_replies, touch: true)
Topic.reset_counters(@topic.id, :replies, :unique_replies, touch: { time: Time.now.utc })
end
end

Expand Down
18 changes: 17 additions & 1 deletion activerecord/test/cases/migration/index_test.rb
Expand Up @@ -72,12 +72,28 @@ def test_add_index_does_not_accept_too_long_index_names
connection.add_index(table_name, "foo", name: good_index_name)
end

def test_add_index_which_already_exists_does_not_raise_error
def test_add_index_which_already_exists_does_not_raise_error_with_option
connection.add_index(table_name, "foo", if_not_exists: true)

assert_nothing_raised do
connection.add_index(table_name, "foo", if_not_exists: true)
end

assert connection.index_name_exists?(table_name, "index_testings_on_foo")
end

def test_remove_index_which_does_not_exist_doesnt_raise_with_option
connection.add_index(table_name, "foo")

connection.remove_index(table_name, "foo")

assert_raises ArgumentError do
connection.remove_index(table_name, "foo")
end

assert_nothing_raised do
connection.remove_index(table_name, "foo", if_exists: true)
end
end

def test_internal_index_with_name_matching_database_limit
Expand Down
2 changes: 1 addition & 1 deletion activerecord/test/cases/relation/update_all_test.rb
Expand Up @@ -194,7 +194,7 @@ def test_update_counters_cares_about_optimistic_locking
people = Person.where(id: people(:michael, :david, :susan))
expected = people.pluck(:lock_version)
expected.map! { |version| version + 1 }
people.update_counters(touch: [time: now])
people.update_counters(touch: { time: now })

assert_equal [now] * 3, people.pluck(:updated_at)
assert_equal expected, people.pluck(:lock_version)
Expand Down
Expand Up @@ -19,6 +19,11 @@
<% if keeps? -%>
!/log/.keep
!/tmp/.keep

# Ignore pidfiles, but keep the directory.
/tmp/pids/*
!/tmp/pids/
!/tmp/pids/.keep
<% end -%>

<% unless skip_active_storage? -%>
Expand Down