appspot が提供する sqlformat Web サービスを使用してこれを解決しました。上記の Sql Beautify メソッドを使用して独自の Web サービスを作成することもできましたが、コード リポジトリに新しい言語を導入したくありませんでした (使用するのは ruby、python、および javascript のみです)。
# Hits the following web-service
# http://sqlformat.appspot.com/format/
# Github page
# https://github.com/andialbrecht/sqlparse/
# Documentation
# http://sqlformat.appspot.com/api/
# data - The SQL statement to format.
# remove_comments - Set to 1 to remove comments.
# keyword_case - How to convert keywords. Allowed values are 'lower', 'upper', 'capitalize'.
# identifier_case - How to convert identifiers. Allowed values are 'lower', 'upper', 'capitalize'.
# - while this is an option I found it capitalizes table names which breaks the query. BE CAREFUL
# n_indents - An integer indicating the indendation depth.
# right_margin - An integer indicating the maximum line length.
# output_format - Transfer the statement into another programming language. Allowed values are 'python', 'php'
# {
# :data => query,
# :format => 'text',
# :remove_comments => 1,
# :keyword_case => 'upper',
# :n_indents => 2,
# }
# or, just pass in a the query as a string and the above params will be the default
def DB::format_sql( params )
if( params.class == String )
params = {
:data => params,
:format => 'text',
:remove_comments => 1,
:keyword_case => 'upper',
:n_indents => 2,
}
end
res = Net::HTTP.post_form(URI.parse('http://sqlformat.appspot.com/format/'), params )
return res.body
end