ためすう

html_safe を使おうとしたけど、非推奨だったので sanitize を使おう (Rails5)

2019-10-14

やったこと

html_safe を使ってみます。

確認環境

$ ruby --version
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin17]

$ rails --version
Rails 5.2.3

調査

ファイルを準備します。

app/controllers/tasks_controller.rb

class TasksController < ApplicationController

  def index
    @message = '<form><a href="#">ddd</a><br>ddd2</form>'
  end
end

app/views/tasks/index.html.erb

<%= @message %>
<hr>
<%= @message.html_safe %>
<hr>
<%= sanitize @message %>

出力結果

&lt;form&gt;&lt;a href="#"&gt;ddd&lt;/a&gt;&lt;br&gt;ddd2&lt;/form&gt;
<hr>

<form><a href="#">ddd</a><br>ddd2</form>
<hr>

<a href="#">ddd</a>
<br>
ddd2

html_safe より、sanitize が推奨されているようです。

form タグが表示されなくなっていることが分かります。

参考

開発環境の設定ファイルをバージョン管理する

2019-10-14

やったこと

開発環境の設定ファイルをバージョン管理します。

調査

バージョン管理するファイル確認

dotfiles というディレクトリで設定ファイルを管理しているとします。

今回は .bash_profile.vimrc を対象とします。

$ cd ~/dotfiles
$ tree -a .bash_profile .vimrc
.bash_profile [error opening dir]
.vimrc [error opening dir]

シンボリックリンクを適用する

link.sh

ln -sf ~/dotfiles/.vimrc ~/.vimrc
ln -sf ~/dotfiles/.bash_profile ~/.bash_profile
$ cd ~/dotfiles
$ link.sh

参考

unix コマンドを作る

2019-10-14

やったこと

自作の unix コマンドを作ります。

調査

スクリプトを作成する

/usr/local/bin/hoge

#!/bin/sh

echo "Hello"

権限設定

$ chmod a+x /usr/local/bin/hoge

実行

$ hoge
Hello

参考

make を使ってみる (unix)

2019-10-11

やったこと

make を使ってみます

確認環境

$ make --version
GNU Make 3.81
Copyright (C) 2006  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

This program built for i386-apple-darwin11.3.0

調査

Makefile の作成

Makefile

all:
  @echo Hello1

make を実行する

$ make
Hello1

git の hook を使ってみる

2019-10-11

やったこと

git の hook を使ってみます

確認環境

$ git --version
git version 2.17.2 (Apple Git-113)

調査

pre-push をコピーする

$ cp .git/hooks/pre-push.sample ./.git/hooks/pre-push

pre-push 変更

先頭にコードを追加してみます。

./.git/hooks/pre-push

echo 999
echo "エラーが発生しました"
exit 1

... (下記省略)

push

$ git push origin master
999
エラーが発生しました
error: failed to push some refs to 'xxx.git'

push 出来なかったことが分かります。

git show-branch でブランチの状態を見る

2019-10-11

やったこと

git show-branch を使い、ブランチの状態を見ます

確認環境

$ git --version
git version 2.17.2 (Apple Git-113)

調査

test1 ブランチに test2 をマージされているとします。

コマンドを実行すると、下記のようになりました。

$ git show-branch
! [master] add
 * [test1] Merge branch 'test2' into test1
  ! [test2] a
---
 -  [test1] Merge branch 'test2' into test1
 *+ [test2] a
 *  [test1^] t
+*+ [master] add

test1 ブランチに、マージコミット以外があった場合、気づくことが出来るかと思います。

git で add した後に差分を確認する

2019-10-10

やったこと

git で add した後に差分を確認します

確認環境

$ git --version
git version 2.17.2 (Apple Git-113)

調査

git add した後の状態を確認する

$ git status
On branch test1
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

	new file:   add.md

差分を確認する

$ git diff --cached
diff --git a/add.md b/add.md
new file mode 100644
index 0000000..bb95160
--- /dev/null
+++ b/add.md
@@ -0,0 +1 @@
+33

おまけ

ヘルプ抜粋

$ git diff --help
git diff [--options] --cached [<commit>] [--] [<path>...]
This form is to view the changes you staged for the next commit relative to the named <commit>

git add で部分的に適用する

2019-10-10

やったこと

git add で部分的に適用します

確認環境

$ git --version
git version 2.17.2 (Apple Git-113)

調査

diff 確認

$ git diff aaa.md
diff --git a/aaa.md b/aaa.md
index b58152c..6e0860d 100644
--- a/aaa.md
+++ b/aaa.md
@@ -1,7 +1,7 @@
 1
 2
-xxxxx
-xxxxx
+YYYYY
+YYYYY
 3
 4
 5
@@ -118,6 +118,13 @@ xxxxx
 1
 2
 3
+xxxxx
+xxxxx
+4
+5
+1
+2
+3
 4
 5
 1

add 適用

$ git add -p aaa.md
diff --git a/aaa.md b/aaa.md
index b58152c..6e0860d 100644
--- a/aaa.md
+++ b/aaa.md
@@ -1,7 +1,7 @@
 1
 2
-xxxxx
-xxxxx
+YYYYY
+YYYYY
 3
 4
 5
Stage this hunk [y,n,q,a,d,j,J,g,/,e,?]? y
@@ -118,6 +118,13 @@ xxxxx
 1
 2
 3
+xxxxx
+xxxxx
+4
+5
+1
+2
+3
 4
 5
 1
Stage this hunk [y,n,q,a,d,K,g,/,e,?]? n

2つ目の差分については n で add しないようにしました。

確認

差分が残っていることが分かります。

$ git diff aaa.md
diff --git a/aaa.md b/aaa.md
index ecdaeaf..6e0860d 100644
--- a/aaa.md
+++ b/aaa.md
@@ -118,6 +118,13 @@ YYYYY
 1
 2
 3
+xxxxx
+xxxxx
+4
+5
+1
+2
+3
 4
 5
 1

git のブランチ名を変更する

2019-10-10

やったこと

ブランチ名を変更します

確認環境

$ git --version
git version 2.17.2 (Apple Git-113)

調査

パターン1 (oldbranch は省略)

変更前

$ git branch
  master
* test1
$ git branch -m test2
$ git branch
  master
* test2

test2 に変わりました。

パターン2 (oldbranch を指定)

変更前

$ git branch
* master
  test2
$ git branch -m test2 test1
$ git branch
* master
  test1

test2 -> test1 に変わりました。

ヘルプ抜粋

$ git branch --help
 git branch (-m | -M) [<oldbranch>] <newbranch>

git add の取り消し (インデックスから削除する)

2019-10-09

やったこと

git add でインデックスに登録したあと、インデックスから削除します。

確認環境

$ git --version
git version 2.17.2 (Apple Git-113)

調査

git add でインデックスに登録する

$ git add app/controllers/users_controller.rb
$ git add ggg

ステータス確認

$ git --version
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

	modified:   app/controllers/users_controller.rb
	new file:   ggg
$ git reset HEAD
Unstaged changes after reset:
M	app/controllers/users_controller.rb

参考