diff --git a/config/initializers/00_random.rb b/config/initializers/00_random.rb new file mode 100644 index 00000000..b23a879e --- /dev/null +++ b/config/initializers/00_random.rb @@ -0,0 +1,32 @@ +# -*- coding: us-ascii -*- +# frozen_string_literal: true + +class Random + + class << self + + private + + # :stopdoc: + + # Implementation using OpenSSL + def gen_random_openssl(n) + return OpenSSL::Random.random_bytes(n) + end + + begin + # Check if Random.urandom is available + Random.urandom(1) + rescue RuntimeError + begin + require 'openssl' + rescue NoMethodError + raise NotImplementedError, "No random device" + else + alias urandom gen_random_openssl + end + end + + public :urandom + end +end