lib/delorean/base.rb in delorean_lang-0.3.36 vs lib/delorean/base.rb in delorean_lang-0.3.37

- old
+ new

@@ -153,10 +153,12 @@ when ActiveRecord::Base return obj.read_attribute(attr) if obj.has_attribute?(attr) return obj.send(attr.to_sym) if obj.class.reflections[attr] when NodeCall return obj.evaluate(attr) + when OpenStruct + return obj[attr.to_sym] when Class return obj.send((attr + POST).to_sym, _e) if obj < BaseClass end begin @@ -174,11 +176,11 @@ case obj when nil # FIXME: even Javascript which is superpermissive raises an # exception on null getattr. return nil - when Hash, ActiveRecord::Base, NodeCall, Class + when Hash, ActiveRecord::Base, NodeCall, Class, OpenStruct raise InvalidIndex unless args.length == 1 _get_attr(obj, args[0], _e) when Array, String, MatchData raise InvalidIndex unless args.length <= 2 && args[0].is_a?(Integer) && @@ -262,10 +264,10 @@ res = obj.send(msg, *args) # FIXME: can't freeze AR relations since then we can't chain # calls (e.g. the chaining modifies the relation object. Not # sure what this side-effect means. Delorean code which # perform queries on queries seems to work. - ActiveRecord::Relation === res ? res : res.freeze + (ActiveRecord::Relation === res || Class === res) ? res : res.freeze end ###################################################################### end end