Skip to content

Instantly share code, notes, and snippets.

@cassiomarques
Created December 9, 2011 16:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cassiomarques/1452110 to your computer and use it in GitHub Desktop.
Save cassiomarques/1452110 to your computer and use it in GitHub Desktop.
class A
def self.create_sub_class(name)
c= Class.new(self)
const_set name, c
end
end
A.create_sub_class "B"
A::B # ok!
# mas eu queria criar só B, no escopo global
B # uninitialized constant B (NameError)
@tinogomes
Copy link

Object.const_set "C", Class.new
=> C < Object
1.9.2 (main)> C
=> C < Object
1.9.2 (main)> C.new
=> #<C:0x000001013f8e80>

@tinogomes
Copy link

porém

class A; end
=> nil
1.9.2 (main)> A::C.new
(pry):14: warning: toplevel constant C referenced by A::C
=> #<C:0x0000010131d3d0>

@cassiomarques
Copy link
Author

Valeu @tinogomes, era disso que eu precisava. Óbvio né? A solução que eu queria era algo simples e eu imaginando altas doideras aqui. Obrigado!!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment