From: "mame (Yusuke Endoh)" Date: 2022-06-06T03:22:32+00:00 Subject: [ruby-core:108777] [Ruby master Feature#18817] SecureRandom::choose is not being exposed Issue #18817 has been updated by mame (Yusuke Endoh). Status changed from Open to Rejected "choose" is named just for an internal API. We need another good name if we make it public. Continue to discuss in #18183. ---------------------------------------- Feature #18817: SecureRandom::choose is not being exposed https://bugs.ruby-lang.org/issues/18817#change-97842 * Author: midnight (Sarun R) * Status: Rejected * Priority: Normal ---------------------------------------- I read through [the doc of `SecureRandom`](https://ruby-doc.org/stdlib-3.1.2/libdoc/securerandom/rdoc/SecureRandom.html) and found that it has the `choose` method. So, I spin up `irb` for a quick test. ~~~ > ::SecureRandom.choose([*('0'..'9'), *('A'..'Z')], 25) (irb):47:in `
': private method `choose' called for SecureRandom:Module (NoMethodError) ::SecureRandom.choose([*('0'..'9'), *('A'..'Z')], 25) ^^^^^^^ ~~~ The method is marked as private. So, I forcefully call the method with success. ~~~ > ::SecureRandom.send(:choose, [*('0'..'9'), *('A'..'Z')], 25) => "5FHY5PXLT184GIVISCVESTMGO" ~~~ I did not test for uniformity of the randomness, though. I wonder why the method has been marked as private? Is it not ready for production uses? -- https://bugs.ruby-lang.org/ Unsubscribe: