Sha256: 909b3f289ebf0db4fa713bebe00c3537e0b8511267103aeb61716b8131e7f36c

Contents?: true

Size: 1.45 KB

Versions: 10

Compression:

Stored size: 1.45 KB

Contents

module ActiveScaffold
  module Bridges
    def self.bridge(name, &block)
      ActiveScaffold::Bridges::Bridge.new(name, &block)
    end
    
    class Bridge
      attr_accessor :name
      cattr_accessor :bridges
      cattr_accessor :bridges_run
      self.bridges = []
      
      def initialize(name, &block)
        self.name = name
        @install = nil
        # by convention and default, use the bridge name as the required constant for installation
        @install_if = lambda { Object.const_defined?(name) }
        self.instance_eval(&block)
        
        ActiveScaffold::Bridges::Bridge.bridges << self
      end
      
      # Set the install block
      def install(&block)
        @install = block
      end
      
      # Set the install_if block (to check to see whether or not to install the block)
      def install?(&block)
        @install_if = block
      end
      
      
      def run
        raise(ArgumentError, "install and install? not defined for bridge #{name}" ) unless @install && @install_if
        @install.call if @install_if.call
      end
      
      def self.run_all
        return false if self.bridges_run
        ActiveScaffold::Bridges::Bridge.bridges.each{|bridge|
          bridge.run
        }
        self.bridges_run=true
      end
    end
  end
end

require File.join(File.dirname(__FILE__), 'shared', 'date_bridge.rb')
Dir[File.join(File.dirname(__FILE__), "*/bridge.rb")].each{|bridge_require|
  require bridge_require
} 

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
active_scaffold_vho-3.0.16 lib/active_scaffold/bridges/bridge.rb
active_scaffold_vho-3.0.15 lib/active_scaffold/bridges/bridge.rb
active_scaffold_vho-3.0.14 lib/active_scaffold/bridges/bridge.rb
active_scaffold_vho-3.0.13 lib/active_scaffold/bridges/bridge.rb
active_scaffold_vho-3.0.12 lib/active_scaffold/bridges/bridge.rb
active_scaffold_vho-3.0.11 lib/active_scaffold/bridges/bridge.rb
active_scaffold_vho-3.0.10 lib/active_scaffold/bridges/bridge.rb
active_scaffold_vho-3.0.9 lib/active_scaffold/bridges/bridge.rb
active_scaffold_vho-3.0.8 lib/active_scaffold/bridges/bridge.rb
active_scaffold_vho-3.0.7 lib/active_scaffold/bridges/bridge.rb