The JWKS keys have no expiry at the moment, as you can see from the response returned by the endpoint. So you can and probably should cache them for improved application performance/user experience and to avoid running into rate limits.
Verifying JWT tokens using RS256 asymmetric signing algorithm is still the preferred method for verifying tokens: Validate Access Tokens
As for the specifics of the our Ruby SDK and how it handles the authentication and verification of the tokens, I am not that familiar with Ruby or the library itself. Since it is a Community supported repository I recommend posting your questions/issues to the GitHub issues page.
You can also read more about the differences between RS256 and HS256 signing algorithms here in this StackOverflow post.
You can cache the JWKS keys as they have not expiry at the moment. You can also look for HTTP response headers and based on the values, stop sending requests to get JWKS and instead use them from your cache.
I hope this helps.
Regards.