こんにちは、鈴木です。
ActiveSpport の strip_heredoc というメソッドをご存知でしょうか?
行頭の不要なインデント
以下のスクリプトを見てください。
1 2 3 4 5 6 7 |
# coding: utf-8 require 'active_support/core_ext/string/strip' puts <<-'EOS' おじいさんは、山へ芝刈りに。 おばあさんは、川へ洗濯物に。 EOS |
実行します。
1 2 |
おじいさんは、山へ芝刈りに。 おばあさんは、川へ洗濯物に。 |
行頭がインデントされてしまいました・・。
strip_heredoc で行頭のインデントを消す
strip_heredoc を使ってみます。
1 2 3 4 5 6 7 8 |
# coding: utf-8 require 'active_support/core_ext/string/strip' puts <<-'EOS'.strip_heredoc # strip_heredoc を使った おじいさんは、山へ芝刈りに。 おばあさんは、川へ洗濯物に。 めでたし、めでたし。 EOS |
実行すると、以下の出力が得られます。
1 2 3 |
おじいさんは、山へ芝刈りに。 おばあさんは、川へ洗濯物に。 めでたし、めでたし。 |
良い感じです。
もう少し長いヒアドキュメントでも試してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# coding: utf-8 require 'active_support/core_ext/string/strip' puts <<-'EOS'.strip_heredoc SELECT * FROM sales_details LEFT OUTER JOIN products ON products.id=sales_details.product_id LEFT OUTER JOIN product_categories ON product_categories.id=products.product_category_id LEFT OUTER JOIN sales ON sales.id=sales_details.sales_id LEFT OUTER JOIN shops ON shops.id=sales.shop_id LEFT OUTER JOIN coupons ON coupons.id=sales.coupon_id LEFT OUTER JOIN customers ON customers.id=sales.customer_id LEFT OUTER JOIN occupations ON occupations.id=customers.occupation_id LEFT OUTER JOIN prefectures ON prefectures.code=customer.prefecture_code WHERE sales.sold_at < '2000-01-01' AND products.name LIKE '%Web 限定%' AND product_categories.name IN ('野菜', 'お米', '魚介類') AND shops.name IN ('京都支店', '北海道支店', '名古屋支店') AND coupons.name = 'Web 会員限定クーポン' AND customer.gender = '男性' AND occupations.name IN ('自営業', '教師', '医者') AND prefectures.name = '京都' ORDER BY sales_details.sold_at DESC, products.name, product_categories.name, shops.name, occupation.name ; EOS |
実行結果は、、、
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
SELECT * FROM sales_details LEFT OUTER JOIN products ON products.id=sales_details.product_id LEFT OUTER JOIN product_categories ON product_categories.id=products.product_category_id LEFT OUTER JOIN sales ON sales.id=sales_details.sales_id LEFT OUTER JOIN shops ON shops.id=sales.shop_id LEFT OUTER JOIN coupons ON coupons.id=sales.coupon_id LEFT OUTER JOIN customers ON customers.id=sales.customer_id LEFT OUTER JOIN occupations ON occupations.id=customers.occupation_id LEFT OUTER JOIN prefectures ON prefectures.code=customer.prefecture_code WHERE sales.sold_at < '2000-01-01' AND products.name LIKE '%Web 限定%' AND product_categories.name IN ('野菜', 'お米', '魚介類') AND shops.name IN ('京都支店', '北海道支店', '名古屋支店') AND coupons.name = 'Web 会員限定クーポン' AND customer.gender = '男性' AND occupations.name IN ('自営業', '教師', '医者') AND prefectures.name = '京都' ORDER BY sales_details.sold_at DESC, products.name, product_categories.name, shops.name, occupation.name ; |
良い感じ・・です。