Railsの会12日目「テストが落ちたので修正」補足
今日の進捗。
agenda
- テストが落ちた原因
- 解決方法
- まとめ
1.テストが落ちた!!!!!!(テストが落ちた原因)
テストコマンドを打った↓
$ bundle exec rake test
iTerm------------------------------------------------------------------------------------
assert_select "title", "Home | Ruby on Rails Tutorial Sample App"
上のセレクタは、<title>タグの内に「Home|Ruby on Rails Tutorial Sample App」という文字があるかどうかをチェックします。
<Home | Ruby on Rails Tutorial Sample App> expected but was<About | Ruby on Rails Tutorial Sample App>..
<% provide(:title, “Home") %>
<% provide(:title, “About") %>
2.error解決方法
<% provide(:title, "Home") %>
<h1>Sample App</h1>
<p>
This is the home page for the
<a href="http://www.railstutorial.org/">Ruby on Rails Tutorial</a>
sample application.
</p>
<% provide(:title, "About") %>
<h1>About</h1>
<p>
The <a href="http://www.railstutorial.org/"><em>Ruby on Rails
Tutorial</em></a> is a
<a href="http://railstutorial.jp">book</a> and
<a href="http://screencasts.railstutorial.org/">screencast series</a>
to teach web development with
<a href="http://rubyonrails.org/">Ruby on Rails</a>.
This is the sample application for the tutorial.
</p>
<% provide(:title, "About") %> ・・・・・(以下略)・・・・
<% provide(:title, "Home") %> ・・・・・(以下略)・・・・
$ bundle exec rake test
3.まとめ
かなり初歩的な間違いだったのですが、
$ bundle exec rake test の大切さを学べた気がします。
そのほかにも エラーの直し方までを相手に説明のために書けば良いのかも…!
反省点
- エラーの読み方が甘い。(英語大事…
- コードの意味を理解していない。
エラーの解決方法まで簡単にまとめてみた。
- エラーが発生!!(エラー文を読む 7行目がおかしいらしい
- 7行目を読む
- 意味を調べるため、教科書を見直す(railstutorial)
- 文が多くて探せなかったので command + F で検索をかける
- エラー文をもう一度みる (home と aboutの異変に気付く。
- 修正
- $ bundle exec rake test
まだまだ初心者から抜け出せそうにない…( ; ; )
Railsの会 12日目「セキュリティー」
今日の進捗です。
agenda
- 新単語集 <%=, ERB , yield
- sqlインジェクション
- XSS
- CSRF
- まとめ
1.新単語
-
<%= Rubyの出力。
-
ERB
Rails の標準テンプレートエンジン。(他の種類にhamlとかもある)
-
yeild 特殊のページ。
使い方
出力がいらないコード
<% ~ %>
結果を出力
<%= ~ %>
結果をエスケープしてしないで出力
<%== ~ %>
後ろの改行を取り除く
<% ~ -%>
行頭までの空白を削除
<%- ~ %>
コメント
<%# ~ %>
2.SQLインジェクション
SQL文を使ってパスワードや個人情報を盗んだり、なりすましをしたりする。
攻撃の仕方
ログイン画面等の中に「’」を入力し、エラー文が出てくるか確認。
もしエラー文が出てきたら、PHPを使用でき、パスワードや不正アクセス等が可能になる。
ログイン画面でパスワードの欄に不正なデータベース命令を実行するための文字列を入力することで、パスワードを知らない攻撃者が正当な利用者としてログインし、クレジットカード番号などの個人情報を窃取したりすることがあります。
また、別の方法によって、データベースに保存されているデータを一括で取り出されてしまったり、データが不正に改ざんされたりすることもあります。最近は、このような手法による個人情報の漏洩(ろうえい)事件が相次いで発生しています。SQLインジェクションへの対策|情報管理担当者の情報セキュリティ対策|企業・組織の対策|国民のための情報セキュリティサイト
3.XSS
クロスサイトスクリプティング。管理人に URLを押させると別の悪質なサイトに飛ばされ利用者にも被害が出る。
偽サイト等を作り、改ざんをするのが一般的。
XSS攻撃
XSS(クロスサイトスクリプティング) 。JavaScriptを実行するコードを制作者の意図していない場所に埋め込む手法であって、PHPを使って実際にプログラミングをしていくうえで真っ先に考えなければいけないのがこの攻撃に対する対策です。
コメントにアラート等入れるとサイトを表示させるたび出したりして攻撃できる。
<script>alert(1234)</script>
4.CSRF
CSRFを「よそのサイトの機能を呼び出す攻撃」と表記
リクエスト強要(CSRF:Cross-site Request Forgery)とは、別のサイトに用意したコンテンツ上の罠のリンクを踏ませること等をきっかけとして、インターネットショッピングの最終決済や退会等Webアプリケーションの重要な処理を呼び出すようユーザを誘導する攻撃である。
URLをクリックしたり、メールを開いたりするだけで、感染させることができます。。
実行手順
- 攻撃用のコードを用意する
- URLをメッセージを書く。
5.まとめ
webに必須知識の内容を学びました。
1.sqlインジェクション 「'」で確認できる。SQL文を使ってデータを操作する。
2.XSS クロスサイトスクリプティング。訪問者に被害を出す攻撃
3.CSRF 管理者にURLを送りクリックさせ、データの改ざんを行う。
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
Railsの会10日目 3章 Railsの省略コマンド /HTTPメゾット
「祝」3章入りました✨✨
今回の進捗はこちらになります。
agenda
1章と2章で学んだところは省略しております٩(๑′∀ ‵๑)۶•*¨*•.¸¸♪
1.Railsの完全なコマンド・Railsの短縮系コマンドとは
Rails sが正式コマンドだと思っていました…( ;´Д`)
他にも!
2.キャメルケース・スネークケース
- キャラメルケース
単語の頭文字を文字にしてつなぎ合わせた名前。
- スネークケース
単語間にアンダースコアを加えてつなぎ合わせた名前。
3.HTTPメゾット
HTTPリクエスト (GET・POST・PATCH・DELETE)
-
GET
GET送信の特徴
- データをリクエストURLの後に付与して送信する。(Webサーバやプロキシサーバのアクセスログなどに残る)
- 他の人がURLを見ると、入力したデータが丸見えになってしまう。(ログイン画面などではIDやパスワードが他者から丸見えになるのでGET送信は使用するべきではない)
- URLの後に付与するのでデータ量(文字数)に制限が掛かる。(Internet Explorer のURLに使用できる最大文字数は最大2,048 文字)
- GETはHTTPヘッダ情報に含まれるため、簡単に取得することが可能。
- テキストデータのみ送信可能。
-
POST
POST送信の特徴
- PATCH
冪等でない処理に使われる。一部のみ更新する。
- DELETE
リソースを削除するメゾット
補足
rails generate controller StaticPages home help
home / help ページ のコントローラとviewを作成する。
be rails generate controller StaticPages
rails generate コマンドで生成されるファイル一覧表
おまけ
エラーの解決法
原因
・間違ったrailsのversionでインストールしたため。versionロックがかかっている。
Gemfile.lockとは??
Railsアプリケーションの依存関係を記述するファイル。
Railsアプリケーションごとにことなる依存関係やバージョンが記述されている。
管理人→Bundler
参考サイト
rm -rf Gemfile.lock
4.まとめ
- HTTP メゾット
- キャメルケース・スネースケース
- Rails省略形
新しい言葉
- 冪等性
変わらず数値が変わらない
- マイグレート
ソフトウェアやシステム、データなどを環境に
移転したり新しい環境に切り替えたりすること。
Railsの会 8日目「Microposts Railsのメリットデメリット」
久しぶりの投稿です。
今日の進捗です。
ーーーーーーーーーーーーーーーーーーーーー
今日のagenda。
- Microposts リソース
- Microposts をマイクロする
- has_manyに関連づける
- Railsの良い点・課題点
- まとめ
ーーーーーーーーーーーーーーーーーーーーーーーーー
1.Microposts リソース
rails generate scaffold
コマンドを使います。
データモデルを実装します。。
$ rails generate scaffold Micropost content:text user_id:integer
データベースの更新。
$ bundle exec rake db:migrate
class MicropostsController < ApplicationController
第2章 Toyアプリケーション | Rails チュートリアル
説明文が??だったので
わからない単語を調べてみました。。
RESTとは
アーキテクスチャとは
コンピュータの構造って具体的に何か??
ーーーーーーーーーーーーーーーーーーーーーー
2. micropostsをマイクロする
validates :content, length: { maximum: 140 }
ーーーーーーーーーーーーーーーーーーーーーーー
3.has_manyに関連づける
consoleとは
railsの環境を読み込んだ状態でrubyコードを実行できるツール。
これは便利!Ruby on RailsでConsoleを使う方法 | TechAcademy
使用例
- いろいろなメゾットを試しながら実装したいとき
ロジックを実装の処理を思考錯誤したいとき。
- エラーが起こったが原因がわからないとき
一行ずづ実行して結果を見ながらデバッグすることができる。
ーーーーーーーーーーーーーーーーーーーーーーー
4.Railsの良い点・課題点
良い点
課題点
- レイアウトスタイルも設定されていない
- home等の定番の静的ページがない
- ユーザがパスワー度を設定できない
- ログインの仕組みがない
- セキュリティのための仕組みがまったくない
- ユーザーとマイクロポストの自動関連付けが行われていない
- TwitterのようなFollowing、Followedがない
- フィード(コンテンツを配信用)にできない
- まともなテストがない ??
- 理解が困難
ーーーーーーーーーーーーーーーーーーーーー
5.まとめ
- Webのあらゆる部分からもモデルデータにアクセスしてやりとるができるようになる。
- てっとり早いのがとりえだが、Railを理解するのには向いていない。
- Railsではデータに制限をかけることができる。
- Railsコンソールを使用すると、コマンドラインからRailsアプリケーションとやりとりすることができる。
- Railsコンソールを使用すると、コマンドラインからRailsアプリケーションとやりとりすることができる。
おまけ
Ruby error
私自身が良くはいてたerror
- routing
- Undefined
- syntax
継承は「<」で表す。
次回は3章に入ります