6時だョ!!全員集合!!

Rails・JavaScrictを中心にアウトプットします。

現場で使えるRuby on Rails 5

2021年10月7日 現場Rails Chapter5-16 Specが失敗したときの調査方法

Specが失敗した時の調査手順 Specが失敗した時に、以下の手順でエラーの原因を特定します。 手順3に関しては、モデルが正常に動作しているかを確認したい時に実行します。 失敗場所とエラーメッセージを確認する。 失敗場所とエラーメッセージを手がかりに原…

2021年10月5日 現場Rails Chapter5-12 詳細表示機能のSpecを追加する

詳細表示機能Specを追加する 前回の一覧表示機能に続いて、詳細表示機能のテストコードを追記します。 describe 'タスク管理機能', type: :system do let!(:task_a) { FactoryBot.create(:task, name: '最初のタスク'), user: user_a)} ...省略 describe '詳…

2021年10月4日 現場Rails Chapter5-9 他のユーザーが作成したタスクが表示されないことの確認

前回はユーザーAが作成したタスクがページに表示されていることを確認するテストを書きました。 今回はユーザーBがログインした際にユーザーAのタスクは表示されていないことを確認するテストを書いていきます。 require 'rails_helper' describe 'タスク管…

2021年10月1日 現場Rails Chapter5-8 タスクの一覧表示機能のSystem Spec

タスクの一覧表示機能のSystem Spec タスク一覧表示機能をテストする場合、以下のようなSystem Specを書きます。 ここではファクトリーに定義したテストユーザーをそのまま使わずに、"ユーザーA"を定義しています。今後、ユーザーBなど別のユーザーを扱う際…

2021年9月30日 現場Rails Chapter5 Rspecの基本形

Spec(テスト)の書き方 Rspecでは、以下の基本フォーマットに従ってSpec(テスト)を書きます。 # テスト対象 describe '〜機能', type: :system do # 条件下で想定する動作 context '〇〇の場合' do before do # テストコード実行前に実行する処理(前提条件)…

2021年9月28日 現場Rails Chapter5 テストをはじめよう

テストについて 動作を確認する方法として、一般的には以下の3パターンが挙げられます。 1. コンソールでメソッドを呼び出す 2. Webサーバ起動後に、ブラウザを操作して確認する 3. 自動テストを書く この章では3つ目の「自動テストを書く」について深ぼっ…

2021年9月27日 現場Rails Chapter8 React

Reactとは Facebook社が開発しているJavaScriptのUIライブラリです。Reactは仮想DOMと呼ばれるデータ構造をメモリ上に持ち、ページ変化の差分のみをレンダリングすることで効率的にページを表示・更新する事ができるという特徴があります。 ※UIライブラリと…

2021年9月24日 現場Rails Chapter8 Webpacker

Webpackerとは? JavaScriptのビルドツールである「Webpack」のラッパーで、Webpackを使ってJavaScriptを管理することを簡単にしてくれるGemです。 Railsアプリケーションを新規作成する時にWebpackerを導入する方法 rails new コマンドのオプション「--webpa…

2021年9月23日 現場Rails Chapter8 npmについて深掘りしました

先日の続き ※先日学んだJavaScriptのパッケージマネージャーであるyarnとnpmで、yarnはアウトプットしたので今回はnpmについて学んでいきます。yarnはnpmを改造して作られたものなので根幹は同じという認識です。 npmとは? npmは、Node.js 関連のパッケージ…

2021年9月21日現場Rails Chapter8 Turbolinks

Turbolinksを無効化する Turbolinksには高速化できるというメリットがある反面、ブラウザのページ遷移が発生しないなどのデメリットもあります。そのため、Turbolinksの性質をよく調べてから、使うようにしましょう。 Turbolinksをよく知らない場合は、無効…

2021年9月20日現場Rails Chapter8 Turbolinks

Turbolinksとは? 全てのリンクに対するページ遷移を自動的にAjax化する事で、ページ遷移を高速化する仕組みです。Turbolinks自体はJavaScriptのライブラリとして提供されていますが、Railsでは利用しやすいようにGemとしてrals newすることでデフォルトで組…

2021年9月16日 現場Rails Chapter8-2-2 AjaxでRailsサーバーと通信する

前回はクライアント側でイベントハンドラとして用意してあったJavaScriptコードを実行してタスクを非表示にしていましたが、今回はAjax通信をした後にAjaxのリクエストボディにJavaScriptコードを返却してそれをブラウザ側で実行するという方法で削除機能の…

2021年9月15日 現場Rails Chapter8-1 JavaScriptでページに変化をつける

ページが読み込まれてからJavaScriptを実行する方法 ページが読み込まれてからJavaScriptを実行する方法は、2種類存在します。Turbolinks機能を有効にしていない場合と、有効にしている場合です。以下に、Turbolinks機能を有効にしていない場合のコードを記…

2021年9月14日 現場Rails Chapter7 非同期処理や定期実行を行う(Jobスケジューリング)

非同期処理とは? 非同期処理とは、あるタスクが実行している際に同時にバックグラウンドで他のタスクを実行できる方式です。 例えば、処理が重く時間が掛かるタスクを非同期処理として裏で動作させ、ユーザーに見える処理では処理の受付だけを行わせること…

2021年9月10日 現場Rails Chapter7-7 ページネーション

9/9朝会の続き 前回にモデルファイルで実装したimportメソッドを使用して CSVデータをインポート出来るボタンを実装していきます。 # app/controllers/tasks_controller.rb def import current_user.tasks.import(params[:file]) redirect_to tasks_url, not…

2021年9月9日 現場Rails Chapter7-6-2 CSVデータを入力(インポート)する

CSVデータをインポートする際に使われるメソッド Csv.foreach 1行ずつ処理をするため、行数が多いCSVファイルを扱う場合でもメモリ使用量を気にしないで使えます。 slice 引数で指定されたキーとその値だけを含む Hash を返します。 to_hash to_hashメソッド…

2021年9月7日 現場Rails Chapter7-5-4 ファイルをアップロードしてモデルに添付する

Active Storageとは何? Railsガイド(Active Storageの概要)には以下のように書かれています。 Active StorageとはAmazon S3、Google Cloud Storage、Microsoft Azure Storageなどの クラウドストレージサービスへのファイルのアップロードや、ファイルをAct…

2021年9月7日 現場Rails Chapter7-5-4 ファイルをアップロードしてモデルに添付する

Active Storageとは何? Railsガイド(Active Storageの概要)には以下のように書かれています。 Active StorageとはAmazon S3、Google Cloud Storage、Microsoft Azure Storageなどの クラウドストレージサービスへのファイルのアップロードや、ファイルをAct…

2021年9月4日 現場Rails Chapter7 7-2一覧画面に検索機能を追加する

greater than or epual _gteqと略して書けます。 登録日時を指定検索した時に出力されたSQL SELECT DISTINCT "tasks".* FROM "tasks" WHERE "tasks"."user_id" = $1 AND "tasks"."created_at" >= '2018-07-19 15:00:00' ORDER BY "tasks"."created_at" DESC …

2021年9月3日 現場Rails Chapter7 7-2一覧画面に検索機能を追加する

7-2-1 Ransackのインストール Ransackとは? 検索機能を作成できるGemのことです。簡単な検索や複雑な検索のフォームを簡単に作成することができます。Gemfile内に以下のように記述します。 gem 'ransack' ターミナルでbundle installを実行してインストール…

2021年9月2日 現場Rails Chapter7(7-1-2 新規登録画面からの遷移先を変える)

form要素内のsubmitボタン form要素内のsubmitボタンを押すと、以下の挙動が実行されます。 現場Rails P.289 form要素内のsubmitボタンが押されると、パラメータに、押されたボタンのname属性の値をキーとしてキャプションが格納されます。 例) f.submit '戻…

2021年8月31日現場Rails Chapter7(7-1-1確認画面を表示するアクションを追加する)

f.hidden_field f.hidden_fieldとは、画面に表示されないinputタグを生成するメソッドです。このinputタグには値が保持されています。既に決まった値をユーザーから見えない形で送信する際に使います。f.hidden_fieldの代表的な使用例は、確認画面のフォーム…

2021年8月30日現場Rails Chapter6-9-2 静的ファイルのサーバーを設定する 秘密情報の管理

assets配下のファイルは動的ファイルとして扱われ、アセットパイプラインを通して静的なファイルへとコンパイルされ、publicディレクトリの配下に生成されます。 404や500のエラーページは、もともと静的ファイルとしてpublic配下に置かれています。アセット…

2021年8月28日 現場Rails Chapter6-9 production環境でアプリケーションを立ち上げる

プリコンパイルとは Railsにおけるプリコンパイルとは、あらかじめアセットパイプラインを実行して静的ファイルを生成しておくことを指します。 プリコンパイルされたファイルはpublic/assetsディレクトリの配下に配置されます。 上記における、「静的ファイ…

2021年8月27日 現場Rails Chapter6-8 アセットパイプライン(その②)

探索パスについて マニフェストファイルがファイルを探しに行くためのパスを探索パスと言います。 マニフェストファイルはデフォルトで以下のパスを探しに行きます。 app/assets/* lib/assets/* vendor/assets/* 上記以外のパスを参照したい場合、config/ini…

2021年8月26日 現場Rails Chapter6-8 アセットパイプライン(その①)

アセットパイプラインとは、gem sprockets-railsを活用して、アセット(CSS, JavaScript, 画像etc)を効率的にまとめた上で、軽量化・高速化・変更反映化を実現してくれます。流れとしては以下の順で行います。 高級言語(CoffeeScript,ERB,Slimなど)のコンパイ…

2021年8月25日 現場Rails Chapter6-7-3 インジェクションに注意する(その2)

Rubyコードインジェクション Rubyコードインジェクションとは、コードインジェクションのうちRubyのソースコードを対象とする攻撃のことを指します。 sendとevalってなに?? sendメソッドは、引数で渡された文字列のメソッドを呼び出して実行します。 しか…

2021年8月24日 現場Rails Chapter6-7-3 インジェクションに注意する(その1)

インジェクション インジェクションとは、Webアプリケーションに悪意のあるスクリプトやパラメータを入力し、それが評価される時の権限で実行させる攻撃です。ユーザーがデータを入力するところは注意が必要です。 XXS(クロスサイトスクリプティング) SOLイ…

2021年8月23日 現場Rails Chapter6-7 (p.253~258) セキュリティを強化する

Railsの代表的なセキュリティ機能 StrongParameters CSRF対策 インジェクション対策 Strong Prametersとは 想定通りのパラメータかどうかをホワイトリスト方式(リストにないアプリケーションやプログラムは起動しないよう制限を設け、リストにあるアプリケー…

2021年8月20日 現場Rails Chapter6-3 i18n国際化

国際化とは何か 国際化とは、さまざまな国ごとに最適な表示を行えるように基盤を整える事である。 ↓ ざっくり言うと、国によって自動でサイト内の言語を変えるように基盤を整える事である。 日本語を扱う方法 config.i18n.default_locale = :jaを設定(config…