Передача полезной нагрузки JSON в Redis через Ruby и Redis-Cli
Я пытаюсь использовать скрипт Ruby для передачи полезной нагрузки json в redis через redis-cli, но почему-то я не понимаю правильные цитаты:
timestamp = `date +%s.%N`.strip
jid = `cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 24 | head -n 1`.strip
json = "{\"retry\":true,\"queue\":\"tests\",\"class\":\"TestRunnerJob\",\"args\":[#{ARGV[0].to_i}],\"jid\":\"#{jid}\",\"enqueued_at\":#{timestamp}}"
cmd = <<-eos
echo lpush "queue:tests" \"#{json}\" |redis-cli -h localhost -n 12 -d ';'
eos
p `#{cmd.strip}`
Должно быть, я как-то облажался, но не понимаю, где.
1 ответ
Решение
Ваш json
интерполируется дважды, избавляясь от слешей. Используйте одинарные кавычки:
json = '{\"retry\":true,\"queue\":\"tests\",\"class\":\"TestRunnerJob\",\"args\":[#{ARGV[0].to_i}],\"jid\":\"#{jid}\",\"enqueued_at\":#{timestamp}}"'