SecureRandom#hex
определено здесь как:
def hex(n=nil)
random_bytes(n).unpack("H*")[0]
end
, поэтому сгенерированные ими данные точно такие же, только формат отличается.
Что касаетсяключи шифрования, это зависит от вас и от способа размещения вашего приложения.Если он находится на сервере, которым вы управляете, то незафиксированный файл конфигурации - это хорошо (хотя подход с переменным окружением все еще работает, очевидно).Если вы используете хостинг, например, на Heroku, лучше использовать переменную окружения.