summaryrefslogtreecommitdiff
path: root/rubocop
diff options
context:
space:
mode:
authorSean McGivern <sean@gitlab.com>2017-10-10 10:36:10 +0100
committerSean McGivern <sean@gitlab.com>2017-10-10 10:36:10 +0100
commita560291f143399b2c8d340fb0a02615dc72552c3 (patch)
tree5245ac6e4a7e48ece0f8b1efb1427073058bc6f0 /rubocop
parent43b692cb4b43a476862fb6e7bf4c09edd6035077 (diff)
downloadgitlab-ce-a560291f143399b2c8d340fb0a02615dc72552c3.tar.gz
Also warn on timestamp in datetime migration copfix-timestampz-cop
The types `timestamp` and `datetime` are aliases: https://github.com/rails/rails/blob/v4.2.10/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb#L362-L364
Diffstat (limited to 'rubocop')
-rw-r--r--rubocop/cop/migration/datetime.rb20
1 files changed, 13 insertions, 7 deletions
diff --git a/rubocop/cop/migration/datetime.rb b/rubocop/cop/migration/datetime.rb
index 651935dd53e..9cba3c35b26 100644
--- a/rubocop/cop/migration/datetime.rb
+++ b/rubocop/cop/migration/datetime.rb
@@ -7,14 +7,18 @@ module RuboCop
class Datetime < RuboCop::Cop::Cop
include MigrationHelpers
- MSG = 'Do not use the `datetime` data type, use `datetime_with_timezone` instead'.freeze
+ MSG = 'Do not use the `%s` data type, use `datetime_with_timezone` instead'.freeze
# Check methods in table creation.
def on_def(node)
return unless in_migration?(node)
node.each_descendant(:send) do |send_node|
- add_offense(send_node, :selector) if method_name(send_node) == :datetime
+ method_name = node.children[1]
+
+ if method_name == :datetime || method_name == :timestamp
+ add_offense(send_node, :selector, format(MSG, method_name))
+ end
end
end
@@ -23,12 +27,14 @@ module RuboCop
return unless in_migration?(node)
node.each_descendant do |descendant|
- add_offense(node, :expression) if descendant.type == :sym && descendant.children.last == :datetime
- end
- end
+ next unless descendant.type == :sym
- def method_name(node)
- node.children[1]
+ last_argument = descendant.children.last
+
+ if last_argument == :datetime || last_argument == :timestamp
+ add_offense(node, :expression, format(MSG, last_argument))
+ end
+ end
end
end
end