はじめに

Railsの特徴の1つはテストコードに関する情報が豊富なことだと思います。
テストの中でも最もメジャーなRSpecに関しては書くことがたくさんあるので、「Railsを斬る」とは別カテゴリのコラムにすることにしました。

RSpecはバージョン2とバージョン3で記述方法がかなり異なります。ここでのバージョンはRspec3を想定しています。

フォーマット指定

RSpecの出力は–format(もしくは-f)で指定可能です。

指定可能なフォーマットはprogress(デフォルト)、documentation、html、jsonの4種類が用意されています。 (続きを読む…)

コード共有 -Shared examples-

Rspecでテストコードを書くとやたらめったらコードが長くなることがありますよね、ここではShared exampleを利用してコードを共有する(DRY)方法を紹介します。
※RSpecのバージョンはRspec3を想定しています。
(続きを読む…)

コード共有 -Shared context-

Rspecでテストコードを書くとやたらめったらコードが長くなることがありますよね、ここではShared contextを利用してコードを共有する(DRY)方法を紹介します。
※RSpecのバージョンはRspec3を想定しています。
(続きを読む…)

一部のテストのみ実行 -タグ付け-

RSpecテストの数が数百、数千個になってくるとテストの待ち時間が問題になってきます。個々のテストに「毎回実行する」、「たまに実行する」や「すぐ終わる」、「時間かかる」などの分類ができると便利です。
その際に使用するのがRSpecのtag機能です。
※RSpecのバージョンはRspec3を想定しています。 (続きを読む…)

一部のテストのみ実行 -コマンドオプション-

前回tagを指定することで一部のテストのみ実行する方法を紹介しましたが、tag以外にも文字列の検索機能や行番号指定を利用して特定のテストのみを選択して実行することができます。
その際にはrspecコマンドに–example (もしくは-e)オプションや:(行番号)を使用します。
※RSpecのバージョンはRspec3を想定しています。

(続きを読む…)

before句 after句

テスト実行前後に処理を挟む場合はbefore、afterを使用します。
それぞれ:suite、:context、:exampleを指定してテストのどの部分に処理を挟むかを指定します。
※RSpecのバージョンはRspec3を想定しています。 (続きを読む…)

サーバは実際どれだけ攻撃されてるのか

number_key

3ヶ月ほど前にサクラVPSで契約してうっかり放置したままのサーバを発見しました。
ちなみにこのサーバ、契約時のままの状態でWebサーバやDBサーバ等は一切起動していません。
IPアドレスのDNS登録もされていないので、インターネット上にポツンと放置された空き家のような存在です。
そんなサーバでも/etc/log/secureファイルをみるとありとあらゆる攻撃にさらされているんですね。
※幸い悪用されていませんでした、レンタルサーバ契約時は迅速にセキュリティ対策しましょう。

せっかくなのでこの1ヶ月の攻撃ログをまとめてみました。 (続きを読む…)