Sha256: 196c5238624c463baf6e7af558293f92a1b285347a5e215e0399fc77cae6a14a

Contents?: true

Size: 1.35 KB

Versions: 1

Compression:

Stored size: 1.35 KB

Contents

# frozen_string_literal: true

require 'solidus_core'
require 'solidus_support'

module SolidusUserRoles
  class Engine < Rails::Engine
    include SolidusSupport::EngineExtensions

    isolate_namespace ::Spree

    engine_name 'solidus_user_roles'
    config.autoload_paths += %W(#{config.root}/lib)

    # use rspec for tests
    config.generators do |g|
      g.test_framework :rspec
    end

    def self.load_custom_permissions
      # Ensure both tables exist before assigning permissions
      if ActiveRecord::Base.connected? &&
          (ActiveRecord::Base.connection.tables & ['spree_roles', 'spree_permission_sets']).to_a.length == 2
        ::Spree::Role.non_base_roles.each do |role|
          ::Spree::Config.roles.assign_permissions role.name, role.permission_sets_constantized
        end
      end
    rescue ActiveRecord::NoDatabaseError
      warn "No database available, skipping role configuration"
    rescue ActiveRecord::StatementInvalid => e
      warn "Skipping role configuration: #{e.message}"
    end

    def self.activate
      Dir.glob(File.join(File.dirname(__FILE__), '../../app/**/*_decorator*.rb')).sort.each do |c|
        Rails.configuration.cache_classes ? require(c) : load(c)
      end
      return if Rails.env.test?

      SolidusUserRoles::Engine.load_custom_permissions
    end

    config.to_prepare(&method(:activate).to_proc)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
solidus_user_roles-2.0.1 lib/solidus_user_roles/engine.rb