よちよち.rb 第17回 #yochiyochirb

今回は、渋谷のbeezさんでした!
ゆかおさんが「よちよち.rbはこちらです」って書いたホワイトボード持っててくれたので、
待ち合わせスムーズでしたね!!

概要

自己紹介(出身地自慢)
Railsチュートリアル「2.4 最後に」より

大阪出身多かった

みなさんに出身地自慢してもらったらわかったんだけど、
けっこう大阪出身のひとが多かった!
でもみなさん大阪弁で話さないので、普段は全然気づかなかった…
意外と「相手が大阪弁じゃないと出ない」って人、多いんですね。

Railsチュートリアル3章にはいった!

いよいよ、3章に入って、sample_app作成にはいります。

Test::Unit と RSpec の違い?

チュートリアルでは、`rails new` で自動生成されるTest::Unitではなく、RSpecをつかってテストをしていくそうです。
よちよチスト的には、そもそも「テストって?」っていう状態なわけで、
つまり「Test::Unit と RSpec でどう違うの?」っていう疑問が浮かぶわけです。
GitHub Issues 案件かな。。


Seleniumとは?

Rspecでテストするにあたって必要なGemをGemfileに書いていったわけですが、
それで登場したのがCapybaraとSelenium
CapybaraはSeleniumなどのGemに依存していると書いてあるけれど、
そもそもSelenium is 何?
ブラウザを選ばずWebテストを自動化するSelenium (1/3):ユカイ、ツーカイ、カイハツ環境!(7) - @IT

うーん、便利そう、だけど。
どうやら @pupupopo_ さんがイケるらしいので、今度教わることにしました。


秘密トークン (secret token)とは?

これ、ミートアップのときなんか流しちゃったんですけど、
帰ってからもう一度読んでみたらちょっと意味がよくわからなくて…
リスト3.2の直前のパラグラフで出てきます。

このサンプルアプリケーションはパブリックリポジトリ (public repository) として公開されるので、Railsでセッション変数の暗号化に使用するための、いわゆる秘密トークン (secret token) を必ず更新することが重要です。

Railsでセッション変数の暗号化?
どんなふうに大事なものなのかイマイチ仕組みがよくわからないのですが。。


.gitignoreはリスト1.7のように変更する必要がある?

さらに読み進めていくと、
秘密トークンをうっかり公開しないように、のとのこと。
なんかさらっと書いてあるけど結構重要なことなんじゃないの?

つまり、

秘密トークンをハードコードしている(セキュリティ上よくない)、という問題に対応すべく、
リスト3.2のような秘密トークンを動的生成するコードを作成し、これで動かすと.secretファイルが生成されます。
これをうっかり公開しないように、.gitignoreにちゃんと.secretを足しておきましょうね。

ということのようです。

…てことはなんかさらっと書いてあるけど、
.gitignoreファイルは1.7を参考にして書き直したほうがいい、という意味ですよね!?

こんな記事も見つけました。
rails の secret_token の扱い - QA@IT


どうしてセキュリティ上やばいやつを自動生成しちゃうの?

上記の話の流れで、そもそもどうしてセキュリティ上よくない「ハードコードされた秘密トークン」が自動生成されちゃうのかしら。

あるいは.gitignoreで最初から安全にしちゃえばいいじゃん!と思ったけど、
バージョン管理方法はGitに限っているわけではないので、そこはRailsでは決められないということなのか。

なんかモヤモヤすることがたくさんあるので、GitHub Issues でみなさんの意見を聞きたいです。

Issuesが!!

先週あげたIssues、はてぶのホッテントリになってたみたいでした。
modelは直接ActiveRecord::Baseを継承しているのは、なぜ? · Issue #162 · yochiyochirb/meetups · GitHub
ゆかおさんがRailsコミッタの @a_matsuda さんにお話を聞いてきてくださったのでスッキリ解決しましたね!

次回

GWはざま?の4/28(月)ですね。
その次の5/5(月)は連休中なのでお休みして、5/7(水)にイレギュラー回を予定しているようです!