Если вам абсолютно необходимо перезаписать существующую константу, вы можете сделать что-то вроде этого:
# use Object to make sure Thread is overwritten globally
# use `send` because `remove_const` is a private method of Object
# Can use OldThread to access already existing Thread
OldThread = Object.send(:remove_const, :Thread)
# define whatever you want here
class MyNewThread
...
end
# Now Thread is the same as MyNewThread
Object.send(:const_set, :Thread, MyNewThread)
Очевидно, что все, что зависело от ранее существовавшего Thread
, было бы уничтожено, если вы не сделали какую-то обезьяну-patching.
То, что такого рода вещи можно сделать, не значит, что так и должно быть.Но в определенных обстоятельствах это может быть удобно, например, в тестах вы можете переопределить удаленный источник данных своим собственным «тупым» объектом.