From cd74c1434e42f7e6aa12fe2e2b8d9b1e56aea78f Mon Sep 17 00:00:00 2001 From: Yorick Peterse Date: Wed, 31 May 2017 13:47:36 +0200 Subject: Added Cop to blacklist the use of serialize This Cop blacklists the use of ActiveRecord's "serialize" method, except for cases where we already use this. --- rubocop/cop/activerecord_serialize.rb | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 rubocop/cop/activerecord_serialize.rb (limited to 'rubocop/cop') diff --git a/rubocop/cop/activerecord_serialize.rb b/rubocop/cop/activerecord_serialize.rb new file mode 100644 index 00000000000..bfa0cff9a67 --- /dev/null +++ b/rubocop/cop/activerecord_serialize.rb @@ -0,0 +1,24 @@ +module RuboCop + module Cop + # Cop that prevents the use of `serialize` in ActiveRecord models. + class ActiverecordSerialize < RuboCop::Cop::Cop + MSG = 'Do not store serialized data in the database, use separate columns and/or tables instead'.freeze + + def on_send(node) + return unless in_models?(node) + + add_offense(node, :selector) if node.children[1] == :serialize + end + + def models_path + File.join(Dir.pwd, 'app', 'models') + end + + def in_models?(node) + path = node.location.expression.source_buffer.name + + path.start_with?(models_path) + end + end + end +end -- cgit v1.2.3