Sha256: 7b656b276fb1766280a8fe84c5dd2256df96e17646139ed46cd634424b2290bf

Contents?: true

Size: 1.37 KB

Versions: 44

Compression:

Stored size: 1.37 KB

Contents

# ActiveRecord::Translation is a dirty bastard and overrides `ActiveModel::Translation#lookup_ancestors`, so that it
# will only count superclasses, and not all ancestors.  Metasploit::Model needs the original behavior so that its
# {Metasploit::Model::Module} modules can supply translations to both `ActiveRecord::Base` descendants in `Mdm` and
# `ActiveModel` descendants in `Metasploit::Framework`
#
# @see https://github.com/rails/rails/issues/11409
module Metasploit::Model::Translation
  extend ActiveSupport::Concern

  # Adds {#lookup_ancestors} and {#i18n_scope} so that {Metasploit::Model} modules can participate in translation
  # lookups.
  module ClassMethods
    # When localizing a string, it goes through the lookup returned by this method, which is used in
    # ActiveModel::Name#human, # ActiveModel::Errors#full_messages and ActiveModel::Translation#human_attribute_name.
    #
    # @return [Array<Module>] Array of `Class#ancestors` that respond to `module_name`.
    def lookup_ancestors
      self.ancestors.select { |ancestor|
        ancestor.respond_to?(:model_name)
      }
    end

    # Classes that include a metasploit-model are trying to share code between ActiveRecord and ActiveModel, so the scope
    # should be neither 'activerecord' nor 'activemodel'.
    #
    # @return [String] `'metasploit.model'`
    def i18n_scope
      'metasploit.model'
    end
  end
end

Version data entries

44 entries across 44 versions & 1 rubygems

Version Path
metasploit-model-2.0.4 lib/metasploit/model/translation.rb
metasploit-model-2.0.3 lib/metasploit/model/translation.rb
metasploit-model-2.0.2 lib/metasploit/model/translation.rb
metasploit-model-2.0.1 lib/metasploit/model/translation.rb
metasploit-model-2.0.0 lib/metasploit/model/translation.rb
metasploit-model-1.1.0 lib/metasploit/model/translation.rb
metasploit-model-1.0.2 lib/metasploit/model/translation.rb
metasploit-model-1.0.1 lib/metasploit/model/translation.rb
metasploit-model-1.0.0 lib/metasploit/model/translation.rb
metasploit-model-0.30.2 lib/metasploit/model/translation.rb
metasploit-model-0.30.2-java lib/metasploit/model/translation.rb
metasploit-model-0.30.1 lib/metasploit/model/translation.rb
metasploit-model-0.30.1-java lib/metasploit/model/translation.rb
metasploit-model-0.30.1.pre.rspec.pre.3.pre.1 lib/metasploit/model/translation.rb
metasploit-model-1.0.0.pre.rails.pre.4.0 lib/metasploit/model/translation.rb
metasploit-model-0.30.0 lib/metasploit/model/translation.rb
metasploit-model-0.30.0-java lib/metasploit/model/translation.rb
metasploit-model-0.29.2 lib/metasploit/model/translation.rb
metasploit-model-0.29.2-java lib/metasploit/model/translation.rb
metasploit-model-0.29.0 lib/metasploit/model/translation.rb