Документы gatsby-image говорят, что пропускают его через реквизит
blockquote>Означает, что вы можете добавить любое свойство, которое хотите, внутри тега
Img
. Из-за некоторых внутренних ограничений вы должны использовать атрибут имени JavaScript, а не HTML (т. Е.className
вместоclass
)Итак:
render={data => <Img fluid={data.placeholderImage.childImageSharp.fluid} className="logo" />}
В зависимости от того, сколько времени строка Вы хотели бы Вас, может использовать несколько альтернатив:
require 'digest'
Digest.hexencode('http://foo-bar.com/yay/?foo=bar&a=22')
# "687474703a2f2f666f6f2d6261722e636f6d2f7961792f3f666f6f3d62617226613d3232"
require 'digest/md5'
Digest::MD5.hexdigest('http://foo-bar.com/yay/?foo=bar&a=22')
# "43facc5eb5ce09fd41a6b55dba3fe2fe"
require 'digest/sha1'
Digest::SHA1.hexdigest('http://foo-bar.com/yay/?foo=bar&a=22')
# "2aba83b05dc9c2d9db7e5d34e69787d0a5e28fc5"
require 'digest/sha2'
Digest::SHA2.hexdigest('http://foo-bar.com/yay/?foo=bar&a=22')
# "e78f3d17c1c0f8d8c4f6bd91f175287516ecf78a4027d627ebcacfca822574b2"
Примечание, что это не будет неотгадываемым, Вам, вероятно, придется объединить его с некоторым другим (секретный, но статичный) данные для соления строки:
salt = 'foobar'
Digest::SHA1.hexdigest(salt + 'http://foo-bar.com/yay/?foo=bar&a=22')
# "dbf43aff5e808ae471aa1893c6ec992088219bbb"
Теперь становится намного более трудно генерировать этот хеш для кого-то, кто не знает исходное содержание и не имеет никакого доступа к Вашему источнику.
Я также предложил бы смотреть на различные алгоритмы в пространстве имен обзора. Для создания его тяжелее для предположения, а не (или в дополнение к) солящий с секретным паролем можно также использовать точный дамп времени:
require 'digest/md5'
def hash_url(url)
Digest::MD5.hexdigest("#{Time.now.to_f}--#{url}")
end
, Так как результат любого алгоритма хеширования, как гарантируют, не будет уникален, не забывайте проверять на уникальность своего результата против ранее сгенерированных хешей прежде, чем предположить, что Ваш хеш применим. Использование Time.now делает повторную попытку тривиальной для реализации, так как только необходимо звонить, пока уникальный хеш не сгенерирован.
Использование Обзор:: MD5 из стандартной библиотеки Ruby:
Digest::MD5.hexdigest(my_url)