seedを使ってデータを自動で生成する

アプリを製作する時に、とりあえずデータベースにデータを保存して挙動を確認したい、ということがあると思います。 ビューできちんと表示されるかな、みたいな。 手動でデータを作成することももちろん可能ですが、seedを使うことで簡単に仮のデータを作成…

Railsアプリのエラーメッセージを日本語化する

Railsアプリのエラーメッセージを日本語にする方法をまとめていきます。 やることはざっくり二つです。 Railsの設定を日本語にする localeファイルに直接記述 設定を日本語にする まずはデフォルトの言語を日本語にするため、config/application.rbに以下の…

環境変数の設定!Railsアプリで使用

環境変数の設定の仕方やRailsアプリでの使い方です。 環境変数とは 簡単に言えばOSに保存しておく変数、ということでいいと思います。環境変数に値を設定すると、シェルが簡単にその値にアクセスすることができます。 環境変数を設定するメリット 秘密鍵やパ…

処理が速すぎてエラー?一時停止はsleepメソッド

フリマアプリ製作の中で一番詰まったところだったのと、原因がなかなかに予想外だったので、記録に残しておこうと思いました。 空のテストコードでMySQLエラー 下のようなテストコードを作成しました。DealShipmentはActiveModel::Modelを使って作成したフォ…

TurbolinksのせいでJSが発火しない問題

アプリ製作中にJavaScriptがうまく発火しなくて、うんうん唸りながら調べたところ、Turbolinksというやつが問題でした。 Turbolinksとは 簡単にいうと、リンクを押した時に読み込みをせずに素早く次のページを表示してくれるツールです。Rails6では標準で導…

ヘルパーメソッドを自作する方法

先日フリマアプリの製作中に、出品者以外に商品の購入ボタンを表示するという機能を実装しました。その時にヘルパーメソッドを自作してみたので、記録しておきます。 準備 今回は、商品の詳細ページに以下のような購入ボタンを表示したいです。 // 出品者以…

ActiveHashのデータをFactoryBotで使う方法

アクティブハッシュのデータをFactoryBotで使うのにてこずったので、記録に残しておこうかと思います。 事の発端 itemモデルの単体テストコードで使うため、以下のようなFactoryBotを記述しました。 categoryはアクティブハッシュで、itemテーブルと紐づいて…

Rubocopにダブルクォーテーションを指摘させない方法

Rubocopは、インデントや改行やスペースなどコードの書き方におかしいところがないかをチェックしてくれる便利なツールです。 課題のアプリ作成中に使っていて、「シングルクォーテーションにしなさい」という注意が100件以上きたので、クォーテーションにつ…

テストで使える!ランダムなデータを作るFakerとGimei

テストコードを書く際に、ユーザーネームやパスワードなどランダムなデータを作りたいときがあると思います。そんな時に便利なFakerとGimeiというgemについて紹介します。 Fakerの使い方 Fakerはランダムなデータを自動で生成してくれるgemです。名前、メー…

Railsでバリデーションを設定する方法

今回はRailsでバリデーションを設定する方法についてまとめます。 バリデーションの目的 バリデーションとは、データをデータベースに保存する際に、データが満たすべき制約を定めておくことです。 例えばユーザー登録をする時に、ユーザー名が空白のまま登…

UTF-8って何?文字コードをざっくり理解する

Railsアプリを作るときは必ず、database.ymlのencoding: utf8mb4をencoding: utf8に変更する指示があったり、HTMLファイルのheadには必ず<meta charset="UTF-8">と書いたり。 utf8ってなんなんだろうとずっと気になっていたので調べてみました。 UTF-8は世界で最もよく使われる文字</meta>…

GitHubでcommitを取り消す便利な機能!revertを使ってみた

Git

GitHubのrevertは、commitした内容を打ち消すようなcommitを重ねることでもともとのcommitを無かったことにしてくれる便利な機能です。 ただ使い方がいまいちピンとこなかったので、実際に使って試してみました。 解説というより、実験の記録という感じです…

Railsアプリでユーザー管理できるgem!deviseの使い方

deviseは、Railsで作成したアプリケーションにユーザー管理機能を実装することができるgemです。 今回はdeviseの使い方を簡単にまとめてみました。 deviseのインストール まずはgemfileにdeviseを追加します。 gem 'devise' そして、bundlerでインストールし…

URIって何?URLとは違う?

URIという言葉が出てきて、なんだそれ?と思ったので、調べてみました。 結論「URI = URN + URL」 結論から言ってしまうとこれです。 URNとURLの総称がURIみたいです。 ちなみにURIはUniform Resource Identifierの略です。 URNとは? URN (Uniform Resource…

Railsで作成したアプリをHerokuでデプロイする手順

カリキュラムの指示に沿って、Herokuでアプリのデプロイをしたので、記録に残しておこうかと思います。 Herokuでデプロイする大まかな流れ アカウントを作成 ↓ Heroku CLIをインストール ↓ 必要なgemをインストール ↓ masterブランチにcommit ↓ Heroku上に新…

JavaScriptで複数の要素を取得!getElementsByClassName()とquerySelectorAll()の違い

JavaScriptで同じクラス名の要素をまとめて取ってくる方法としてgetElementsByClassName()とquerySelectorAll()がありますが、どういう違いがあるのか気になって調べてみたのでまとめておきます。 どちらも複数の要素を取得する これらのメソッドはそれぞれ…

JavaScriptにおける関数の作り方まとめ

JavaScriptの関数の作り方が、いろいろ用語が出てきてややこしかったのでまとめてみました。 関数の作り方自体は2パターンです。 関数宣言 関数式 それぞれについて説明する中で、「〜関数」って言う言葉がやたら出てくるのがややこしい原因ですね。 関数宣…

box-sizing: border-boxの使い方

box-sizingとは box-sizingは、CSSのプロパティのひとつです。要素の高さや幅を指定したときに、paddingとborderを含めるか否かを指定します。それだけではイメージがしづらいと思うので、具体的に説明していきます。 content-boxとborder-box content-box …

Railsにおける例外処理。例外とエラーは違う?

例外とは?エラーとは違う? 例外とは、ある処理を行った結果が期待したものと違い、異常なものであるような状況のことです。 例外とエラーは違うのか、気になって調べてみましたが、どうやら明確な共通認識はなさそうです。そもそもどういう文脈で使うのか…

FactoryBot使用でエラー。KeyError: Factory not registered:

先日FactoryBotを使用したらエラーが出てしばらく困ったので、その時のことを記録しておこうかと思います。 FactoryBot使用の準備 FactoryBotを使用するための準備をします。 まずはgemfileに必要なgemを記載していきます。 group :development, :test do # …

Railsで画像ファイルをアップロードするにはActive Storage

Active Storageとは railsにおいて、画像などのファイルのアップロード機能を実装するためのgemです。 画像のサイズなどを加工してからアップロードするためには、ImageMagickというツールと、image_processing、mini_magickというgemも必要になります。 Act…

中間テーブル、多対多の関係とは?

中間テーブルとは、多対多の関係にある二つのテーブルの間に入る、第三のテーブルのことです。なかなかイメージがつきづらいので、具体例を挙げて解説してみます。 一対多の関係 中間テーブルを考える前に、一対多の関係について考えます。 例えば、namesテ…

Macの便利なショートカットキー!初心者目線で使えそうなものをまとめてみた

ショートカットキーを使いこなしたらかっこいいいよなあ、作業効率も爆あがりしそうだよなあ、と思いつつマウスを握りしめている人は意外と多いのではないでしょうか。僕もいつかショートカットキーについて調べようと思いつつ後回しにしてしまっていたので…

flexbox応用編!要素の配置を自在に動かす

この記事では、flexboxのより便利な使い方についてまとめます。 flexboxについて flexboxは要素を横並びにしたいときに活躍する概念です。横並びにしたい要素の親要素のdisplayプロパティをflexにすることで、子要素が横並びになります。横並びになった要素…

flexbox基本編!要素を横並びにする方法

この記事では、要素を横並びにするための手法、flexboxについて書いています。 ブロックレベル要素とインライン要素 HTMLの要素はブロックレベル要素とインライン要素の二種類に分けられます。ブロックレベル要素は一つのかたまりとみなされ、縦に積み重なっ…

cssの基本。cssとは何か。

この記事ではcssの基本についてまとめていきます。 cssって何? cssの役割はHTMLを装飾し、webページの見た目を作ることです。HTMLでwebページに記載する情報を記述しただけでは、なんとも味気ないページになってしまいます。そこでcssを適用することで、見…

HTMLの基本的な要素まとめ

HTMLはいくつもの要素が積み重なって構成されています。今回は、よく使うHTMLの要素についてまとめます。 要素とは 要素は基本的に開始タグと終了タグで構成されます。入れ子構造を取ることができ、ある要素の中に別の要素を入れていきます。その場合、外側…

HTMLの基礎の基礎。HTMLとはなんなのか

この記事では、HTMLについてざっくり解説したいと思います。 HTMLって何? HTMLとはWebページに表示する情報を記述する言語のことです。データベースの処理などは行わないため、プログラミング言語ではなく、マークアップ言語に分類されます。 HTMLファイル…