[解決済み】Rubyで複数行の長い文字列を改行せずに分割する方法
質問
最近、私の仕事場でrubyのスタイルガイドが決まりました。その中の一つに、「行の幅は80文字まで」というのがあります。Railsのプロジェクトなので、もう少し長い文字列、例えば" ユーザーXは、物事Yについてあなたにメッセージを送りたがっていました 80文字のスタイル制限に収まらない場合もあります。
長い文字列を複数行にまたがるようにするには、3つの方法があると聞いています。
- ヘレドック
- %Q{}
- 実際に文字列を連結する
しかし、これらのケースはいずれも、結局はより多くの計算サイクルを要しており、馬鹿げているとしか思えません。文字列の連結は当然ですが、例えば
HEREDOC
と
%Q
のような方法で、改行を削除しなければなりません。
.gsub(/\n$/, '')
.
これを行うための純粋な構文で、文字列全体を1行で表示するのと同等の方法はありますか?目標は、明らかに、私のコードを少し読みやすくしたいからと言って、余分なサイクルを費やさないことです。(そうです、私はあなたが多くのトレードオフをしなければならないことを理解しています...しかし、文字列の長さのために、これはちょうど愚かに思えます)。
更新しました。 バックスラッシュは、インデントが失われるため、スタイルや読みやすさに大きく影響するため、私が望むものとは異なります。
例
if foo
string = "this is a \
string that spans lines"
end
上記はちょっと読みにくいですね。
<ブロッククオートEDIT : 下に答えを追加しました。3年後、私たちは今、スクイグリーヘレドックを手に入れました。
解決方法は?
3年後、Ruby 2.3には解決策があります。それは、squiggly heredocです。
class Subscription
def warning_message
<<~HEREDOC
Subscription expiring soon!
Your free trial will expire in #{days_until_expiration} days.
Please update your billing information.
HEREDOC
end
end
ブログ記事のリンク https://infinum.co/the-capsized-eight/articles/multiline-strings-ruby-2-3-0-the-squiggly-heredoc
<ブロッククオート最もインデントされていない行のインデントが削除されます。 は、コンテンツの各行から削除されます。
関連
-
[解決済み】Bundler: コマンドが見つからない
-
[解決済み] Ruby/Rails の「フック」とは何ですか?
-
[解決済み] どのようにrailsでラジオボタンを正しく使用するには?
-
[解決済み] 変更欄のRailsマイグレーション
-
[解決済み] railsアプリケーションでCookieのオーバーフロー?
-
[解決済み] Railsでグループとカウント
-
[解決済み] Ruby on RailsのActiveRecordのマイグレーションで、長すぎるインデックス名を処理するには?
-
[解決済み】Rubyでファイルの行を読み込む方法
-
[解決済み】Rubyでファイルパスから拡張子なしのファイル名を取得する方法
-
[解決済み] Ruby on Railsです。複数のハッシュキーを削除する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】bcrypt LoadError: Cannot load such file
-
[解決済み] DestroyとDeleteの違い
-
[解決済み] Errno::EACCESS: パーミッションが拒否された @ dir_s_mkdir
-
[解決済み] Ruby:Rubyの配列にinclude.の反対はある?
-
[解決済み] railsで':remote => true'はどのように動作するのでしょうか?
-
[解決済み] RubyとRailsの "Date.today "フォーマット
-
[解決済み] Ruby on rails アプリで ES6 (ES2015) を使用するにはどうすればよいですか?
-
[解決済み] Railsでグループとカウント
-
[解決済み] Railsコンソール:リロード!モデルファイルの変更が反映されない?考えられる理由は何でしょうか?
-
[解決済み】Ruby: 複数行の文字列を連結せずに書くことはできますか?