ヒアドキュメントの最後の改行を除去することは不可能？　一般的にputsとは一緒に使わない？


## ネットでよく見かけるソース

[code]

    def hoge
      foo = '12345'
      a = <<~EOS
        foo: #{foo}
      EOS
    end
    
    print hoge
    
[/code]

## 結果

[code]

    foo: 12345
    #<-改行されている
    
[/code]

## 下記はエラー

[code]

    def hoge
      foo = '12345'
      a = <<~EOS
        foo: #{foo}\
      EOS
    end
    
[/code]

## エラー内容

`can't find string "EOS" anywhere before EOF`

## 質問

特に問題がないと言えば問題がないですが、ヒアドキュメントによって作られた文字列を含む変数などを`puts`で表示させると`ヒアドキュメントの最後の改行`と`putsの改行`のダブルの改行が出力されるわけです。一般的にヒアドキュメントの場合は`puts`とは一緒に使わないのでしょうか？
最後の改行を除去する方法はありますか？




`puts`に末尾が改行で終わっている文字列を渡しても、改行は1つしか出ません。  
なのでヒアドキュメントの場合も`puts`と一緒に使うことはよくあります。

> 末尾が改行で終っている引数や配列の要素に対しては puts 自身 は改行を出力しません。  
>  <http://docs.ruby-lang.org/ja/2.3.0/class/Kernel.html#M_PUTS>
>
> Writes a record separator (typically a newline) after any that do not
> already end with a newline sequence.  
>  <http://ruby-doc.org/core-2.3.1/IO.html#method-i-puts>




`puts`に末尾が改行で終わっている文字列を渡しても、改行は1つしか出ません。  
なのでヒアドキュメントの場合も`puts`と一緒に使うことはよくあります。

> 末尾が改行で終っている引数や配列の要素に対しては puts 自身 は改行を出力しません。  
>  <http://docs.ruby-lang.org/ja/2.3.0/class/Kernel.html#M_PUTS>
>
> Writes a record separator (typically a newline) after any that do not
> already end with a newline sequence.  
>  <http://ruby-doc.org/core-2.3.1/IO.html#method-i-puts>

