JavaScriptをがんばるブログ

React,OSS,ソフトウェア開発が中心のブログです👨‍💻

ruby on rails: sqliteの改行を置換

僕はruby on railssqliteをそのまま利用しています。

今までブログ記事の改行にnl2br(自作helper)を使用していましたが、
記事本文をhtmlで書きたい時に邪魔になるので、
nl2brをやめて改行文字を<br>に置換することにしました。

php脳から脱却ヾ(o・ω・)ノ

最初は

UPDATE article SET content=REPLACE(content,'\r\n','<br>');

このように置換を試みたのですが変化が無い...

\r\nを本当の改行に変えたら置換出来ました。

UPDATE article SET content=REPLACE(content,' /* 本当の改行 */
','<br>');

htmlからのフォーム送信に含まれる改行はCR/LFに正規化されるようなので、

4.10.13 The textarea element — HTML5

For historical reasons, the element's value is normalised in three different ways for three different purposes. The raw value is the value as it was originally set. It is not normalized. The API value is the value used in the value IDL attribute. It is normalized so that line breaks use "LF" (U+000A) characters. Finally, there is the form submission value. It is normalized so that line breaks use U+000D CARRIAGE RETURN U+000A LINE FEED (CRLF) character pairs, and in addition, if necessary given the element's wrap attribute, additional line breaks are inserted to wrap the text at the given width.

テキストエディタで改行をCR/LFに指定してSQL文を作ると良いでしょう。

ちなみに、
production環境のsqliteコンソールに入るコマンドは

rails dbconsole production

今までdevelop環境のsqliteへ入るのにrails dbと打ち込んでいましたが、
rails dbconsoleの省略形だった事を今日知りました。

production環境のdbに入る方法を検索しようと、

rails db production

とサーチしてもproduction環境のdb設定ファイルの記事がヒットして、
実に検索者泣かせ。・゚゚・(>д<)・゚゚・。