You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@deltacloud.apache.org by mf...@redhat.com on 2010/10/15 17:42:37 UTC

[PATCH core 4/4] Fixed class spawning to be compatible with Rails

From: Michal Fojtik <mf...@redhat.com>

---
 client/lib/base_object.rb |   22 ++++++++++------------
 client/lib/deltacloud.rb  |    9 +++++----
 2 files changed, 15 insertions(+), 16 deletions(-)

diff --git a/client/lib/base_object.rb b/client/lib/base_object.rb
index b269bb8..23aa37b 100644
--- a/client/lib/base_object.rb
+++ b/client/lib/base_object.rb
@@ -16,7 +16,7 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 
-require 'lib/string'
+require 'string'
 
 module DeltaCloud
 
@@ -256,18 +256,16 @@ module DeltaCloud
 
     def self.add_class(name, parent=:base)
       parent_class = case parent
-        when :base then BaseObject
-        when :action then ActionObject
-        when :state then StateFullObject
+        when :base then 'BaseObject'
+        when :action then 'ActionObject'
+        when :state then 'StateFullObject'
       end
-      begin
-        return API.const_get(name.classify)
-      rescue NameError
-        API.module_eval("class #{name.classify} < #{parent_class.to_s}; end")
-        new_class = API.const_get(name.classify)
-        @defined_classes ||= []
-        @defined_classes << new_class
-        new_class
+      @defined_classes ||= []
+      if @defined_classes.include?(name)
+        self.module_eval("API::#{name.classify}")
+      else
+        self.module_eval("class #{name.classify} < DeltaCloud::#{parent_class}; end")
+        DeltaCloud.const_get("#{name.classify}")
       end
     end
 
diff --git a/client/lib/deltacloud.rb b/client/lib/deltacloud.rb
index 5c224e5..f797223 100644
--- a/client/lib/deltacloud.rb
+++ b/client/lib/deltacloud.rb
@@ -20,10 +20,11 @@ require 'nokogiri'
 require 'rest_client'
 require 'base64'
 require 'logger'
-require 'lib/hwp_properties'
-require 'lib/instance_state'
-require 'lib/documentation'
-require 'lib/base_object'
+
+require 'hwp_properties'
+require 'instance_state'
+require 'documentation'
+require 'base_object'
 
 module DeltaCloud
 
-- 
1.7.2.3