Sha256: a4ca9e1d89b226f96fcbe1b9124f819ac5e54208312dd5db2643f99c90e589d2

Contents?: true

Size: 1.18 KB

Versions: 22

Compression:

Stored size: 1.18 KB

Contents

module ActiveScaffold
  module DelayedSetup
    def self.included(base)
      base.extend ClassMethods
    end

    def process(*)
      self.class.config_active_scaffold_delayed
      super
    end

    module ClassMethods
      def active_scaffold(model_id = nil, &block)
        @delayed_monitor ||= Monitor.new
        @active_scaffold_delayed = proc do
          begin
            @_prefixes = nil # clean prefixes in case is already cached, so our local_prefixes override is picked up
            super(model_id, &block)
            @active_scaffold_delayed = @delayed_monitor = nil # after configuring, no need to keep proc or monitor
          rescue StandardError
            # clear config variable if failed, so next request tries again
            @active_scaffold_config = nil
            raise
          end
        end
      end

      def config_active_scaffold_delayed
        @delayed_monitor&.synchronize do
          # if called in same thread while running config, do nothing
          @active_scaffold_delayed&.call unless @active_scaffold_config
        end
      end

      def active_scaffold_config
        config_active_scaffold_delayed
        super
      end
    end
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
active_scaffold-3.6.20 lib/active_scaffold/delayed_setup.rb
active_scaffold-3.6.19 lib/active_scaffold/delayed_setup.rb
active_scaffold-3.6.17 lib/active_scaffold/delayed_setup.rb
active_scaffold-3.6.15 lib/active_scaffold/delayed_setup.rb
active_scaffold-3.6.14 lib/active_scaffold/delayed_setup.rb
active_scaffold-3.6.13 lib/active_scaffold/delayed_setup.rb
active_scaffold-3.6.12 lib/active_scaffold/delayed_setup.rb
active_scaffold-3.6.11.1 lib/active_scaffold/delayed_setup.rb
active_scaffold-3.6.11 lib/active_scaffold/delayed_setup.rb
active_scaffold-3.6.10 lib/active_scaffold/delayed_setup.rb
active_scaffold-3.6.9 lib/active_scaffold/delayed_setup.rb
active_scaffold-3.6.8 lib/active_scaffold/delayed_setup.rb
active_scaffold-3.6.6 lib/active_scaffold/delayed_setup.rb
active_scaffold-3.6.5 lib/active_scaffold/delayed_setup.rb
active_scaffold-3.6.4.1 lib/active_scaffold/delayed_setup.rb
active_scaffold-3.6.4 lib/active_scaffold/delayed_setup.rb
active_scaffold-3.6.3 lib/active_scaffold/delayed_setup.rb
active_scaffold-3.6.2 lib/active_scaffold/delayed_setup.rb
active_scaffold-3.6.1 lib/active_scaffold/delayed_setup.rb
active_scaffold-3.6.0 lib/active_scaffold/delayed_setup.rb