We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 0a6b618 commit b60eedeCopy full SHA for b60eede
ruby/hyper-state/lib/ext/object_space.rb
@@ -0,0 +1,25 @@
1
+module ObjectSpace
2
+ def self.each_object(target_klass, &block)
3
+ klasses = [Object]
4
+ i = 0
5
+ loop do
6
+ klass = klasses[i]
7
+ yield klass
8
+ names = `klass.$$const` && `Object.keys(klass.$$const)`
9
+ names.each do |name|
10
+ begin
11
+ k = klass.const_get(name) rescue nil
12
+ next unless `k.$$const`
13
+ next unless k.respond_to?(:is_a?)
14
+ next if klasses.include?(k)
15
+
16
+ klasses << k if k.is_a? target_klass
17
+ rescue Exception => e
18
+ next
19
+ end
20
+ end if names
21
+ i += 1
22
+ break if i >= klasses.length
23
24
25
+end
0 commit comments