I am not sure what's going on here,
but taking a glimpse at this commit:
http://github.com/gunark/rubycas-server/commit/653be6d08421c8d7e87f027a1d4a3bca473831e5
MRI is not thread-safe in many places,
especially in `require', constants setup, etc.
I don't think instantiating any constants
while serving service is a good idea generally.
That is, just instantiate "all" constants at
boot-up is the safest way.
Kernel#autoload has the same problem.
Avoid them in thread critical process.
Explicitly requiring and instantiating is
tedious and annoying but a lot safer in
multi-threaded environments.
I am not sure if rubycas-server is running
in multi-threaded environments. But if
multi-threaded is considered, we should
explicitly require and instantiate any
shared value, e.g. constants, mutable data, etc.
Or get a mutex which instantiated in boot-up,
for a quick and dirty fix I guess...
Sorry that I don't have enough time to
take a deep look into it. I was doing too
many projects parallelly... /sigh/