fv17の日記

Webエンジニアの備忘用ブログです。主にWeb界隈の技術に関して書いています。

2018-01-01から1年間の記事一覧

RSpecを学ぶ時、書く時に参考になる記事一覧

随時更新中。「everyday Rails RSpecによるRailsテスト入門」を読了後に読むモノ。 初めてRSpecを学ぶ場合は、何も考えずに書籍の購入をやりこむのがオススメ。 公式 - 基本的なマッチャ一覧 https://www.rubydoc.info/gems/rspec-expectations/frames#Built…

RSpec - コントローラスペックでは何をテストすべきか

前提 Rails5からは request spec で記述することが推奨され、公式から controller spec を書くことは非推奨とされている。 参考にした記事 RailsのController Spec | 酒と涙とRubyとRailsと Rails テスティングガイド | Rails ガイド テストすべき内容 Webリ…

【パーシャル】インスタンス変数の直接参照ではなく、localsで値を渡す

なぜlocalsで渡す必要があるのか インスタンス変数を直接使うと、Viewと特定のControllerとの依存が強まり、別の箇所で再利用しにくくなるため。 悪い例 Controller (良い例と同じ) class UsersController < ApplicationController def show @user = User.fi…

JavaScriptのファイルを読み込む位置はどこにすべきか?

回答 bodyタグの終端、すなわち </body> の直前。 理由 表示速度を速くするため javascriptファイルを読み込んでいる間は、HTMLファイルを読み込まない。そのため、ページのレンダリングを行わせてからjavascriptファイルを読み込むことで表示速度を早くする。その…

【各章まとめ】Everyday Rails - RSpecによるRailsテスト入門 - 第8章 スペックをDRYに保つ

復習用まとめ 本章で学ぶこと ワークフローをサポートモジュールに切り出す テスト内でインスタンス変数を再利用するかわりにletを使う shared_contextに共通のセットアップを移動する カスタムマッチャの作成 テストを集約して、複数のスペックを一つにする…

【各章まとめ】Everyday Rails - RSpecによるRailsテスト入門 - 第7章 リクエストスペック

Everyday Rails 「RSpecによるRailsテスト入門 - 第7章 リクエストスペック」の復習用まとめ。 letなどは第7章でまだ出てきていないため、DRYではない箇所多数。 目次 (APIの)GETリクエストのテスト (APIの)POSTリクエストのテスト コントローラスペックをリ…

RSpecでフィーチャースペックを行う

事前準備 gemのインストール group:test do gem 'capybara', '~> 2.15.2' end spec/rails_helper.rbにCapybaraの設定を追加 # This file is copied to spec/ when you run 'rails generate rspec:install' require 'spec_helper' ENV['RAILS_ENV'] ||= 'test…

Linux - 権限設定の確認や変更方法

下記のQiitaqiita.com

忘却曲線に基づいた効率の良い復習方法

忘却曲線とは? ある事柄を記憶した後、時間をおいたらどの程度思い出せるか(厳密には思い出すのに必要な時間)、についての実験結果を図示したもの 出典: 忘却曲線 - Wikipedia上記の図を見ると、1度も復習しない場合はわずか6日で学んだことの大部分を忘れ…

【レビュー・体験談】【TechAcademy】2ヶ月間、Webアプリケーションコースを学んでみて

少し前ですが2017年の終わりから2018年のはじめに、TechacademyのWebアプリケーションコースで2ヶ月間学びました。コースで学んだ内容や個人的感想を書いたので、プログラミングスクール選びの参考にしていただければ。 受講したコース TechAcademyの Webア…

RailsにRSpecを導入する手順

everyday Rails の第2章より必要な要素だけ抽出 目次 RSpecの導入 出力フォーマットを読みやすくする binstubを使い、起動時間を短くする テスト用のファイルを自動生成する設定 RSpecの導入 Gemfile group :development, :test do # ... gem 'rspec-rails',…

Git - ブランチとマージ関連のコマンド一覧

Git

ブランチを新規追加する # ブランチは切り替わらないので注意 git branch <ブランチ名> ブランチを切り替える git checkout <既存ブランチ名> # ブランチを新規作成して切り替える git checkout -b <新ブランチ名> ブランチの一覧表示 git branch # リモート…

【各章まとめ】Everyday Rails - RSpecによるRailsテスト入門 - 第1章 イントロダクション

「Everyday Rails - RSpecによるRailsテスト入門 - 第1章 イントロダクション 」の復習用まとめ。leanpub.com 本書の目的 一貫したテスト戦略を学び、自信を持って開発、機能追加、リファクタリングを行う。 テストコードがアプリケーションを守り、変更に対…

Solidus - Productsまわりの概念まとめ

Solidus、Spreeにおける、Productsに関するまとめ。SpreeのDevelopers Guideの意訳を元に、SolidusのDevelopers Guideや自分で実装して確認した内容を備忘用にまとめています。 最初にお詫び 手探りで読みながら試しているため、誤った記述の可能性がありま…

Git - 直前のコミットメッセージを修正する

Git

コミットメッセージを間違えた場合の修正方法 # 間違えた! git commit -m 'Wrong message!' 修正手順は下記 【方法1】ターミナル上で簡単に修正する方法 git commit --amend -m 'Correct message!' 【方法2】エディタを起動して修正する方法 (エディタがvim…

Rails - DBをリセットし、全データを削除する方法

全データを削除する方法は、下記の2つ 【方法1】全テーブルをdropし、db/schema.rbを元にテーブルを再作成 rails db:resetdb/schema.rbからテーブルを再作成するため、テーブル定義は変わらない。 【方法2】全テーブルをdropし、migrationを実行してテーブル…

jQuery - CSSを操作する方法一覧

CSSのclassを操作 ある要素にCSSのclassを追加 $('要素').addClass('class名') ある要素からCSSのclassを削除 $('要素').removeClass('class名') CSSのプロパティを操作 ある要素にCSSのプロパティを追加 $('要素').css('プロパティ名', '値') 複数設定した…

jQuery - セレクタ

下記HTMLの各要素を取得、操作することで、jQueryにはどのようなセレクタがあるかをまとめる。 <p>jQueryのセレクタ</p> <ul id="main"> <li class="item">1</li> <li>2 <ul id="sub"> <li class="item">2-1</li> <li class="item">2-2</li> </ul> </li> </ul> > 直下の子要素 $('#mail > .item').css('color', 'red') 「1」のみが赤文字になる 「2-1」「2-2」は赤文字にならない (空白…

ITエンジニアの効率の良い勉強方法(1) - 遅延評価勉強法

とあるエンジニアの方からアドバイスいただいたのでメモ。 問い エンジニアはどのように技術を学ぶべきか? 背景は、実務で高いパフォーマンスが出せるよう、適切な対象を高速に学びたい 回答 遅延評価勉強法で学ぶべし 遅延評価勉強法とは? 参考サイト(以…

Rails - Guardを使い、ファイル変更時にMinitestやRspecを自動実行する

やりたいこと ファイル更新時にテストを自動で行う 例えば、home.html.erbファイルが変更されたらstatic_pages_controller_test.rbを自動的に実行する Gemfileの設定 次の2行を追加 group :test do gem 'guard', '2.13.0' gem 'guard-minitest', '2.4.4' end…

Rails - 生成したコントローラやモデル、および実行したマイグレーションを元に戻す方法

コントローラ # 作成 rails generate controller StaticPages action1 action2 # 削除 reils destory controller StaticPages action1 action2 モデル # 作成 rails generate model User name:string email:string # 削除 rails destroy model User # モデル…

Rails Tutorial - 第3章 ほぼ静的なページの作成(備忘・復習用)

自分の備忘・復習用。 必要だと思った部分のみ抽出。 本章で学ぶこと 静的なページの作成 自動化テストの雰囲気 アプリ作成と開発準備 rails new Gemfileの更新 bundle install --without production git initコマンドでGitの初期化 README.mdの更新 Bitbuck…

HerokuにRailsをデプロイする方法

HerokuにRailsをデプロイする方法を備忘のためまとめる。 本番環境でPostgreSQLを使うように設定する HerokuのデータベースはPostgreSQLのため、 本番環境ではPostgreSQLを使う group :production do gem 'pg', '0.20.0' end 開発、テスト環境ではsqliteを使…

FactoryBot.create(:hoge) ではなく create(:hoge) と書く方法

やりたいこと Rspec において、FactoryBot.create(:hoge) の FactoryBot を毎度記述せずに create(:hoge) と書きたい。 結論 rails_helper.rb に下記を加えれば良い。 config.include FactoryBot::Syntax::Methods 参考 https://github.com/thoughtbot/facto…

Rails - Solidusを使う場合に参考になるサイトまとめ

書き途中 全般 Solidus Developers Guide https://guides.solidus.io/ Spree Developers Guide Solidus Developers Guideより、こちらの方が詳細に記述されており参考になる Spree Developer Documentation | Spree - Ruby on Rails e-commerce platform ク…

Capybara - Capybara::DriverNotFoundError:が出てRspecでエラーとなる場合の対処方法

Everyday rails Rspecの書籍(P106あたり)を写経してたらエラーで詰まった。 問題 Rspecにおいて、visit root_pathで下記エラー Capybara::DriverNotFoundError: no driver called :selenium_chrome was found, available drivers: :rack_test, :selenium 原…

RSpec - フィーチャスペックを導入する

everyday Rails の「第6章 フィーチャスペックでUIをテストする」の復習用まとめ。 書籍から内容の増減があります。 本章の前提 フィーチャースペックとは、モデルとコントローラが 他の モデルやコントローラとうまく一緒に動作することを確認するテ…

【各章まとめ】Everyday Rails - RSpecによるRailsテスト入門 - 第5章 コントローラスペック

自分の備忘用に記載。 そのため書籍から内容の増減があります。 本章の前提 コントローラのテストは削除、あるいは統合テスト等への移行が推奨 そのため、既存システムでコントローラのテストがある場合に備えて学ぶ 筆者は、コントローラのテストはアクセス…

factory_bot - create_listメソッドの使い方

使い方 create_list(<作成したいファクトリ名>, <作成するインスタンス数>, *<トレイトやオーバーライドしたい項目>) # 戻り値はArray 具体例 create_list(:user, 3, :admin, :male, name: "Jon Snow") adminとmaleはここではtrait nameはオーバーライドさせ…

RSpec - FactoryBotを導入し、効率良く意味のあるデータを作成する

「Everyday Rails - RSpecによるRailsテスト入門 - 第4章 意味のあるテストデータの作成 」の復習用まとめ。leanpub.com 本章のゴール Factory Botに焦点を当て、 ファクトリの利点と欠点 ファクトリを用いたテスト実装 その他、ファクトリのリファクタリ…