How to separate a heredoc from other key-value pairs in a hash literal in Ruby?

hashmap, heredoc, literals, ruby

Solution

This seems to work

{
  foo: 123,
  bar: <<-HEREDOC,
    a longer text
  HEREDOC
  baz: 456
}

Problem

I just wanted to use a heredoc as a value in a hash literal. While it works fine if the heredoc is the very last element: ``` { foo: 123, bar: <<-HEREDOC a longer text HEREDOC } #=> {:foo=>123, :bar=>" a longer text\n"} ``` I couldn't find a way to add another key-value pair after the heredoc. Or, more specifically, I couldn't find a way to insert the separating comma without causing a syntax error: ``` { foo: 123, bar: <<-HEREDOC a longer text HEREDOC # <- causes a syntax error because a comma is missing here, but where to put it? baz: 456 } ```

Original source

Related problems