bashスクリプトのインデントがぐちゃぐちゃになってウンザリという時に、ツール一発で簡単にキレイにしてくれるものを探していたら、beautify_bashを見つけた。
早速使ってみたところ、想定しているRubyのバージョンが古いらしく、String
に対するeach
メソッドが存在しないというエラーが。
undefined method `each' for data:String (NoMethodError)
ちょっと調べてみたところ、Ruby1.9からeachメソッドは廃止されたとのこと。
ということで、エラーになっている部分をeach_line
メソッドに書き換えたところ、ちゃんと動くようになり、bashスクリプトの整形も期待していた動作をしてくれるようになった。
bashスクリプトをgitレポジトリにpushしたときに自動的にこのスクリプトを適用するようにしておけば幸せになれそうだ。
diffはこちら。
beautify.rb
diff --git a/beautify_bash.rb b/beautify_bash.rb
index 601ca5e..d0b0f9e 100644
--- a/beautify_bash.rb
+++ b/beautify_bash.rb
@@ -42,7 +42,7 @@ module BeautifyBash
ext_quote_string = ""
here_string = ""
output = []
- data.each do |record|
+ data.each_line do |record|
record.chomp!
stripped_record = record.strip
if(in_here_doc)
ついでにgithubにもあげておいた。