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