<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -59,6 +59,22 @@ module FreeBASE
     end
     
     ##
+    # Requires all the plugins based on the load list calculated by the dependency resolution
+    #
+    def require_plugins
+      num = 0
+      if @load_list.size == 0
+        puts &quot;[FreeBASE] no plugins to require&quot; if ARGV.include?(&quot;--debug-freebase&quot;)
+        exit
+      end
+      while num &lt; @load_list.size
+        plugin = @load_list[num]
+        plugin.instance.require_files
+        num += 1
+      end
+    end
+    
+    ##
     # Loads all the plugins based on the load list calculated by the dependency resolution
     #
     def load_plugins</diff>
      <filename>freebase2/lib/freebase/configuration.rb</filename>
    </modified>
    <modified>
      <diff>@@ -41,6 +41,10 @@ module FreeBASE
       Core.new(propertiesFile, defaultPropertiesFile, :load_only =&gt; true)
     end
     
+    def self.require(propertiesFile, defaultPropertiesFile)
+      Core.new(propertiesFile, defaultPropertiesFile, :require_only =&gt; true)
+    end
+    
     # The master bus FreeBASE::DataBus
     attr_reader :bus
     
@@ -65,8 +69,12 @@ module FreeBASE
       @bus[&quot;/log/info&quot;] &lt;&lt; &quot;--- #{@properties['config/product_name']} Started on #{Time.now.to_s}&quot;
       @bus[&quot;/system/state/all_plugins_loaded&quot;].data = false
       @plugin_config = Configuration.new(self, @properties[&quot;config/plugin_path&quot;])
-      @plugin_config.load_plugins
-      @plugin_config.start_plugins unless options[:load_only]
+      if options[:require_only]
+        @plugin_config.require_plugins
+      else
+        @plugin_config.load_plugins
+        @plugin_config.start_plugins unless options[:load_only]
+      end
       @bus[&quot;/system/state/all_plugins_loaded&quot;].data = true
       @core_thread = Thread.current
       unless options[:load_only]</diff>
      <filename>freebase2/lib/freebase/core.rb</filename>
    </modified>
    <modified>
      <diff>@@ -198,6 +198,27 @@ module FreeBASE
       @base_slot['state'].data
     end
     
+    # Require the plugins files
+    def require_files
+      log_requires do
+        $LOAD_PATH &lt;&lt; File.expand_path(
+            File.join(
+              @plugin_configuration.full_base_path, 
+              &quot;lib&quot;))
+        if @plugin_configuration.require_path
+          require @plugin_configuration.require_path
+        else
+          # loads from default path plugin_dir/lib/plugin_name if no load path given
+          path = File.expand_path(
+              File.join(
+                @plugin_configuration.full_base_path, 
+                &quot;lib&quot;, 
+                @plugin_configuration.name))
+          require path
+        end
+      end
+    end
+    
     ##
     # Loads the plugin instance by calling load on the Module defined by startup_module.
     #
@@ -206,25 +227,9 @@ module FreeBASE
       begin
         raise Exception.new(&quot;unment dependencies&quot;) unless @plugin_configuration.dependencies_met?
         require @plugin_configuration.dependencies_path if @plugin_configuration.dependencies_path
-        log_requires do
-          $LOAD_PATH &lt;&lt; File.expand_path(
-              File.join(
-                @plugin_configuration.full_base_path, 
-                &quot;lib&quot;))
-          if @plugin_configuration.require_path
-            require @plugin_configuration.require_path
-          else
-            # loads from default path plugin_dir/lib/plugin_name if no load path given
-            path = File.expand_path(
-                File.join(
-                  @plugin_configuration.full_base_path, 
-                  &quot;lib&quot;, 
-                  @plugin_configuration.name))
-            require path
-          end
-          object = eval(@plugin_configuration.startup_module)
-          object.load if object.respond_to?(:load)
-        end
+        require_files
+        object = eval(@plugin_configuration.startup_module)
+        object.load if object.respond_to?(:load)
         transition(FreeBASE::LOADED)
       rescue Exception =&gt; error
         puts error</diff>
      <filename>freebase2/lib/freebase/plugin.rb</filename>
    </modified>
    <modified>
      <diff>@@ -24,6 +24,10 @@ module Redcar
     FreeBASE::Core.load_plugins(&quot;properties.yaml&quot;,&quot;config/default.yaml&quot;)
   end
   
+  def self.require
+    FreeBASE::Core.require(&quot;properties.yaml&quot;,&quot;config/default.yaml&quot;)
+  end
+  
   def self.pump
     bus[&quot;/system/ui/messagepump&quot;].call()
   end</diff>
      <filename>lib/redcar.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>31e4cb735be068182aefd5023c78747e4ad9b213</id>
    </parent>
  </parents>
  <author>
    <name>Daniel Lucraft</name>
    <email>dan@fluentradical.com</email>
  </author>
  <url>http://github.com/danlucraft/redcar/commit/9d4d458e9d4809ab8b0bf890e11a4b1ba6abecdb</url>
  <id>9d4d458e9d4809ab8b0bf890e11a4b1ba6abecdb</id>
  <committed-date>2009-10-24T00:32:19-07:00</committed-date>
  <authored-date>2009-10-24T00:31:37-07:00</authored-date>
  <message>Added FreeBASE::Core#require_plugins method for just requiring plugin files without loading the plugins.</message>
  <tree>8c79a2e9c06993f8ee65a0baa4c20a33299d428d</tree>
  <committer>
    <name>Daniel Lucraft</name>
    <email>dan@fluentradical.com</email>
  </committer>
</commit>
