<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>init.rb</filename>
    </added>
    <added>
      <filename>lib/rubber/capistrano.rb</filename>
    </added>
    <added>
      <filename>lib/rubber/recipes/rubber.rb</filename>
    </added>
    <added>
      <filename>lib/rubber/recipes/rubber/bundles.rb</filename>
    </added>
    <added>
      <filename>lib/rubber/recipes/rubber/deploy.rb</filename>
    </added>
    <added>
      <filename>lib/rubber/recipes/rubber/instances.rb</filename>
    </added>
    <added>
      <filename>lib/rubber/recipes/rubber/security_groups.rb</filename>
    </added>
    <added>
      <filename>lib/rubber/recipes/rubber/setup.rb</filename>
    </added>
    <added>
      <filename>lib/rubber/recipes/rubber/static_ips.rb</filename>
    </added>
    <added>
      <filename>lib/rubber/recipes/rubber/utils.rb</filename>
    </added>
    <added>
      <filename>lib/rubber/recipes/rubber/volumes.rb</filename>
    </added>
    <added>
      <filename>lib/rubber/tasks/rubber.rb</filename>
    </added>
    <added>
      <filename>rails/init.rb</filename>
    </added>
    <added>
      <filename>rubber.gemspec</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -11,7 +11,7 @@ begin
     s.description = &quot;The rubber plugin enables relatively complex multi-instance deployments of RubyOnRails applications to Amazon&#213;s Elastic Compute Cloud (EC2).  Like capistrano, rubber is role based, so you can define a set of configuration files for a role and then assign that role to as many concrete instances as needed. One can also assign multiple roles to a single instance. This lets one start out with a single ec2 instance (belonging to all roles), and add new instances into the mix as needed to scale specific facets of your deployment, e.g. adding in instances that serve only as an 'app' role to handle increased app server load.&quot;
     s.rubyforge_project = 'rubber'
     s.authors = [&quot;Matt Conway&quot;]
-    s.files =  FileList[&quot;[A-Z]*&quot;, &quot;{generators,lib,recipes}/**/*&quot;]
+    s.files =  FileList[&quot;[A-Z][A-Z]*&quot;, &quot;{generators,lib,recipes}/**/*&quot;]
     s.add_dependency 'capistrano'
     s.add_dependency 'amazon-ec2'
     s.add_dependency 'aws-s3'</diff>
      <filename>Rakefile</filename>
    </modified>
    <modified>
      <diff>@@ -2,6 +2,7 @@ load 'deploy' if respond_to?(:namespace) # cap2 differentiator
 
 require 'rubber'
 Rubber::initialize(File.dirname(__FILE__), (ENV['RAILS_ENV'] ||= 'production'))
-Dir['vendor/plugins/*/recipes/*.rb'].each { |plugin| load(plugin) }
+require 'rubber/capistrano'
 
+Dir['vendor/plugins/*/recipes/*.rb'].each { |plugin| load(plugin) }
 load 'config/deploy'</diff>
      <filename>generators/vulcanize/templates/base/Capfile</filename>
    </modified>
    <modified>
      <diff>@@ -72,7 +72,7 @@ cloud_providers:
     # create an instance, ssh into it, and copy the file /mnt/openssh_id.pub
     #
     key_name: gsg-keypair
-    key_file: &quot;#{Dir[(File.expand_path('~') rescue '/root') + '/.ec2/*' + key_name].first}&quot;
+    key_file: &quot;#{Dir[(File.expand_path('~') rescue '/root') + '/.ec2/*' + cloud_providers.aws.key_name].first}&quot;
 
     # OPTIONAL: Needed for bundling a running instance using rubber:bundle
     #</diff>
      <filename>generators/vulcanize/templates/base/config/rubber/rubber.yml</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,4 @@
 require 'rubber'
-Rubber::initialize(File.dirname(__FILE__) + '../../', (ENV['RAILS_ENV'] ||= 'development'))
-require 'rubber/tasks/rubber.rake'
+Rubber::initialize(File.dirname(__FILE__) + '/../..', (ENV['RAILS_ENV'] ||= 'development'))
+
+require 'rubber/tasks/rubber'</diff>
      <filename>generators/vulcanize/templates/base/lib/tasks/rubber.rake</filename>
    </modified>
    <modified>
      <diff>@@ -1,9 +1,10 @@
 $:.unshift(File.dirname(__FILE__))
 
 module Rubber
-  VERSION = '0.9.0'
-  
+
   def self.initialize(project_root, project_env)
+    return if defined?(PROJECT_ROOT) &amp;&amp; defined?(RUBBER_ENV)
+    
     Object.const_set('RUBBER_ENV', project_env)
     Object.const_set('PROJECT_ROOT', project_root)
 
@@ -22,6 +23,8 @@ module Rubber
       LOGGER.formatter = lambda {|severity, time, progname, msg| &quot;Rubber[%s]: %s\n&quot; % [severity, msg.to_s.lstrip]}
     end
   end
+
+  VERSION = File.read(File.join(File.dirname(__FILE__), '..', 'VERSION')).chomp
 end
 
 </diff>
      <filename>lib/rubber.rb</filename>
    </modified>
    <modified>
      <diff>@@ -3,10 +3,10 @@ require &quot;rubber/cloud/base&quot;
 module Rubber
   module Cloud
 
-    def self.get_provider(provider, env)
+    def self.get_provider(provider, env, capistrano)
       require &quot;rubber/cloud/#{provider}&quot;
       clazz = Rubber::Cloud.const_get(provider.capitalize)
-      return clazz.new(env)
+      return clazz.new(env, capistrano)
     end
 
   end</diff>
      <filename>lib/rubber/cloud.rb</filename>
    </modified>
    <modified>
      <diff>@@ -109,7 +109,9 @@ module Rubber
           if val.instance_of? Hash
             def val.method_missing(method_id)
               key = method_id.id2name
-              self[key]
+              v = val[name]
+              v = get(name, true, true) unless v
+              return v
             end
           end
           </diff>
      <filename>lib/rubber/environment.rb</filename>
    </modified>
    <modified>
      <diff>@@ -107,6 +107,9 @@ class EnvironmentTest &lt; Test::Unit::TestCase
     assert_equal 'val3', e.var2.var3, 'env not retrieving right val'
     assert_equal({'var5' =&gt; 'val5'}, e.var2.var4, 'env not retrieving right val')
     assert_equal ['val6a', 'val6b'], e.var2.var6, 'env not retrieving right val'
+    assert_equal 'val1', e.var7, 'env not retrieving right val'
+    assert_equal 'val3', e.var9, 'env not retrieving right val'
+    assert_equal 'val5', e.var9, 'env not retrieving right val'
   end
 
 end</diff>
      <filename>test/environment_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -4,3 +4,6 @@ var2:
   var4:
     var5: val5
   var6: [val6a, val6b]
+  var7: &quot;#{var1}&quot;
+  var8: &quot;#{var3}&quot;
+  var9: &quot;#{var2.var4.var5}&quot;</diff>
      <filename>test/fixtures/nested/rubber.yml</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>lib/rubber/tasks/rubber.rake</filename>
    </removed>
    <removed>
      <filename>recipes/rubber.rb</filename>
    </removed>
    <removed>
      <filename>recipes/rubber/bundles.rb</filename>
    </removed>
    <removed>
      <filename>recipes/rubber/deploy.rb</filename>
    </removed>
    <removed>
      <filename>recipes/rubber/instances.rb</filename>
    </removed>
    <removed>
      <filename>recipes/rubber/security_groups.rb</filename>
    </removed>
    <removed>
      <filename>recipes/rubber/setup.rb</filename>
    </removed>
    <removed>
      <filename>recipes/rubber/static_ips.rb</filename>
    </removed>
    <removed>
      <filename>recipes/rubber/utils.rb</filename>
    </removed>
    <removed>
      <filename>recipes/rubber/volumes.rb</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>bf908790b31586689abc4da626113ec8ccde02fe</id>
    </parent>
  </parents>
  <author>
    <name>Matt Conway</name>
    <email>wr0ngway@yahoo.com</email>
  </author>
  <url>http://github.com/wr0ngway/rubber/commit/dc350a0a7bec93f6bf80a8b23cc8dae8deb0c1df</url>
  <id>dc350a0a7bec93f6bf80a8b23cc8dae8deb0c1df</id>
  <committed-date>2009-06-15T20:06:22-07:00</committed-date>
  <authored-date>2009-06-15T20:06:22-07:00</authored-date>
  <message>initial gem support</message>
  <tree>659a27cef2dceb97747eea31ac0cebe14d5a8559</tree>
  <committer>
    <name>Matt Conway</name>
    <email>wr0ngway@yahoo.com</email>
  </committer>
</commit>
