Railsの会11日目「Railsテスト」
今日の進歩です。
agenda。
テストについてまとめた
----------------------------------------------------------------------------------------
1.リファクタリング
コード読みやすくしたりすることだよ!
リファクタリングは「class」の名前をわかりやすくしたり、コメントを追加したりし理解しやすいコード に修正する。
⚠️バグが増えることもある。
リファクタリングとは、ソフトウェアの外部的振る舞いを保ちつつ、理解や修正が簡単になるように、内部構造を改善することです。
2.ステータスコード
エラーの番号。よく見るのが404かな…。
分類 コード メッセージ 1.0 1.1 情報
(Informational)100 Continue × ○ 101 Switching Protocols × ○ 成功
(Success)200 OK ○ ○ 201 Created ○ ○ 202 Accepted ○ ○ 203 Non-Authoritative Information × ○ 204 No Content ○ ○ 205 Reset Content × ○ 206 Partial Content × ○ 転送
(Redirection)300 Multiple Choices × ○ 301 Moved Permanently ○ ○ 302 Found Moved Temporarily○ ○ 303 See Other × ○ 304 Not Modified ○ ○ 305 Use Proxy × ○ クライアントエラー
(Client Error)400 Bad Request ○ ○ 401 Unauthorized ○ ○ 402 Payment Required × ○ 403 Forbidden ○ ○ 404 Not Found ○ ○ 405 Method Not Allowed × ○ 406 Not Acceptable × ○ 407 Proxy Authentication Required × ○ 408 Request Time-out × ○ 409 Conflict × ○ 410 Gone × ○ 411 Length Required × ○ 412 Precondition Failed × ○ 413 Request Entity Too Large × ○ 414 Request-URI Too Large × ○ 415 Unsupported Media Type × ○ サーバエラー
(Server Error)500 Internal Server Error ○ ○ 501 Not Implemented ○ ○ 502 Bad Gateway ○ ○ 503 Service Unavailable ○ ○ 504 Gateway Time-out × ○ 505 HTTP Version not supported × ○
よく見るエラーは覚えておこう…😊
3.リダイレクト(HTTP)
リダイレクトとは、サイトにアクセスしようとしたユーザーを、最初にリクエストされた URL とは別の URL に移動させることです。 別の URL へのリダイレクトには正当な理由がある場合もあります。 たとえば、サイトを新しいアドレスに移転した場合や、複数のページを 1 つに統合した場合などです。
4.短縮URL
そのまんまの意味。
短縮 URL を使うメリット
短縮 URL は、ただリンクを短く表現できるだけではありません。
他のメリットを挙げてみました。クリック率が上がる
短縮URLと短縮されていない長いURLで比較すると、
短縮URLの方が圧倒的にクリック率が高いという統計があります。手書き・口頭で伝えられる
どのサービスも短縮後の URL は 20 文字前後なので、
電話口やホワイトボードなどへの手書きでもなんとか伝えられるでしょう。プロっぽく見える
まだまだ一般なレベルで認知されているとは言えないサービスなので、
使うとプロっぽく見えます(笑)アクセス解析がある
Google URL Shortener や Bit.ly であれば、
短縮URLのうしろに「+」をつけることで、
アクセス解析の画面が表示されます。
もちろんデメリットも
リンク先がどんなサイトなのかわからない
どのサイトにリンクされているかをURLで判断できないので、
フィッシングサイトにも引っかかりやすくなります。もっとも悪用されたのがこの機能でらしいです。
URL が覚えられない
短縮するために、数値や記号の羅列になっているため、
記憶するのに適していません。ブランド化が難しい
URL が覚えられないのと同様に
せっかくのあなたのドメインが隠れてしまうので、
リンクを開くユーザーは自分がどのサイトにアクセスしているか
分からなくなってしまいます。遅くなる
リダイレクトが発生するので経由するサーバーが増え、
その分表示速度が低下します。作った短縮 URL は消せない
短縮 URL のリンク先は変更できません。
一度作ったリンクはそのサービスが存在する限り利用可能ですので、
無価値な URL を世の中に残してしまいます。サービスが永続的に存在するかがわからない
どのサービスも未来永劫使えるか把握できず、
サービスが止まれば短縮 URL は使えなくなります。あの Google でさえ、
不要と判断したサービス(Reader など)は撤退する世の中です。
5.リダイレクション
標準入力にはデフォルトが割り当てられていて、これをユーザが自由に変更できる切り替えのこと。(入出力の切り替え)
通常、コマンド入力はキーボードから行い、その結果を画面に出力し、エラーがあればその内容も画面に出力します。これは、以下のような定義があるからです。
「/dev/stdin」などは特殊ファイルと呼ばれ、各入出力装置をファイルとして操作できるようにしたものです。そして、この定義を変更することで、キーボード以外の装置から入力し、画面以外の装置へ出力することが可能になります。
この切り替えのことをリダイレクションといいます。
びっくりするくらい何言っているのか分からないぞ…!😭
いろんな記事見たけど説明が意味ワカラナイ
6.テストの成功・失敗
- 成功したとき ・・・ ... で表す。
- 失敗したとき ・・・ F 又は E で表す。
- 失敗例
NameError: undefined local variable or method `static_pages_about_url'
意味:aboutページのurlがないよ
解決策:ルーティングファイルを修正
7.スプリングサーバー
pringはrubyで実装されているプロリーダ。
プリローダとは
先取り、先読みという意味。
必要なデータを先取りして読み込む時間を短くする技術。
youtubeに使われている。
8.キャッシュ
パソコンが一時的にほぞんしているデータのこと。
メリット
- URLが保存されるのでいきたいサイトにすぐ行ける。
デメリット
- システムを更新したとき、反映されないことがある。
9.スプリング
Spring も Rails application preloader と総称されるソフトウェアの仲間です。テストを実行する度に Rails アプリケーションをロードするのは時間の無駄なので、サーバとしてプリロードしておき、テストの実行時間短縮を目的としたものです。古くから使われているものとしては、Spork というものがあります。しかし、Spork については簡単に触れるだけにとどめます。
Spork/Zeus/Spring によるテスト実行時間の短縮 - RSpec/Capybara入門 - Ruby on Rails with OIAX
使い方
まず、
Gemfile
に以下のコードを追加します:group :development do gem 'spring' gem 'spring-commands-rspec' endそして、
bundle install
コマンドを実行します。何も準備は要りません。いきなり、テストを実行できます:
$ spring rspec spec/Zeus の場合と異なり、Spring はバックグランドで黙ってサーバを起動するので、私たちが別ウィンドウで明示的にサーバを起動する必要がないのです。
常に Spring を使って RSpec のテストを実行するのなら、
bin
ディレクトリのrspec
コマンドを書き換えてしまうといいでしょう。次のコマンドを実行すると、自動的に書き換えが完了します:$ spring binstub rspec
bundle binstub rspec
を実行するとbin/rspec
の中身が元に戻ってしまうので注意してください。すると、今後は Spring の存在を意識せずに RSpec のテストを実行できます:
$ bin/rspec spec/現行の Sinope (この連載で作っている Rails アプリケーション)のテストを私の PC で実行してみたところ、初回はサーバの起動に時間がかかるため 4.03 秒かかりましたが、2回目からは 2.74 秒で終わりました。
Spork/Zeus/Spring によるテスト実行時間の短縮 - RSpec/Capybara入門 - Ruby on Rails with OIAX
おまけ エラーまとめ
1 'about'というページがないよ!!ルートが設定されていない (routes.rb)
2 <Home | Ruby...App> の書き方が下の正しい記述と見比べて間違っているよ!
(この場合空白がない)
3 aboutページのテンプレートがないよ!
4 名前が間違っている(定義されていない変数またはメソッドです)
11.まとめ
- リファクタリング コードをわかりやすくすること。
- ステータスコード エラーの番号
- リダイレクト(HTTP) サイトの移転とかに使われる。
- 短縮URL そのままの意味
- リダイレクション URLの移転。サイトのリニューアルとかに使う。
- テスト成功例・失敗例 .../F /E エラーの内容
- スプリングサーバー ストリーミングのことかなとか思っている。
- キャッシュ データの記録。
- スプリング Railsサーバのダウンロード時間を短くする技術。
参考URL
Ruby on Rails チュートリアル メモ #2 - belog
Ruby のエラーメッセージを読み解く(初心者向け)その 2 - Qiita