debian-mirror-gitlab/config/initializers/attr_encrypted_no_db_connection.rb

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

45 lines
1.6 KiB
Ruby
Raw Normal View History

2021-03-11 19:13:27 +05:30
# frozen_string_literal: true
2022-07-16 23:28:13 +05:30
raise 'This patch is only tested with attr_encrypted v3.1.0' unless AttrEncrypted::Version.string == '3.1.0'
2015-09-11 14:41:01 +05:30
module AttrEncrypted
module Adapters
module ActiveRecord
2018-12-05 23:21:45 +05:30
module GitlabMonkeyPatches
# Prevent attr_encrypted from defining virtual accessors for encryption
# data when the code and schema are out of sync. See this issue for more
# details: https://github.com/attr-encrypted/attr_encrypted/issues/332
def attribute_instance_methods_as_symbols_available?
false
end
2021-09-30 23:02:18 +05:30
protected
# The attr_encrypted gem is not actively maintained
# At the same time it contains the code that raises kwargs deprecation warnings:
# https://github.com/attr-encrypted/attr_encrypted/blob/master/lib/attr_encrypted/adapters/active_record.rb#L65
#
def attr_encrypted(*attrs)
super
attr = attrs.first
redefine_method(:"#{attr}_changed?") do |**options|
attribute_changed?(attr, **options)
end
end
2015-09-11 14:41:01 +05:30
end
end
end
end
2018-12-05 23:21:45 +05:30
# As of v3.1.0, the attr_encrypted gem defines the AttrEncrypted and
# AttrEncrypted::Adapters::ActiveRecord modules, and uses "extend" to mix them
# into the ActiveRecord::Base class. This intervention overrides utility methods
# defined by attr_encrypted to fix two bugs, as detailed above.
#
# The methods are used here: https://github.com/attr-encrypted/attr_encrypted/blob/3.1.0/lib/attr_encrypted.rb#L145-158
ActiveSupport.on_load(:active_record) do
extend AttrEncrypted::Adapters::ActiveRecord::GitlabMonkeyPatches
end