lib/active_scaffold/bridges/bridge.rb in active_scaffold-3.0.12 vs lib/active_scaffold/bridges/bridge.rb in active_scaffold-3.0.21
- old
+ new
@@ -1,50 +1,59 @@
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
- self.bridges.each(&:run) unless self.bridges_run
- self.bridges_run = true
+ 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
-}
+ load_bridge = true
+ unless ActiveScaffold.exclude_bridges.empty?
+ match = bridge_require.match('bridges\/(.*)\/bridge.rb')
+ bridge_name = match[1] ? match[1] : nil
+ load_bridge = ActiveScaffold.exclude_bridges.exclude?(bridge_name.to_sym) if bridge_name
+ end
+ require bridge_require if load_bridge == true
+}
\ No newline at end of file