ポケモンのデータをDBで表現する

こんにちは!kossyです! 昨日、「ポケモンのデータをDBに保存する」 というブログを書いたのですが、肝心のDB定義を忘れていました。 class CreatePokemons < ActiveRecord::Migration[5.2] def change create_table :pokemons do |t| t.integer :number, n…

ポケモンのデータをDBに突っ込んでみた

こんにちは!kossyです! さて、今回はRailsとAngularの練習用に作ろうと模索しているポケモン図鑑APIの基になる、 ポケモンのマスタデータをDBにimportした時の備忘録をブログに残してみたいと思います。 環境 Rails 5.2.3 Ruby 2.5.1 MacOS Mojave マスタ…

RubyのRangeオブジェクトを使って、数値が指定した範囲内にあるかを調べる

こんにちは!kossyです! さて、今回はRubyでRangeオブジェクトを使って、ある数値がRangeオブジェクトの範囲内に含まれているかどうかを チェックするやり方をブログに残してみたいと思います。 環境 Ruby 2.5.1 実装先に実装を晒します。 # number は Poke…

Vue.js 用語まとめ1

データ(UIの状態) イベントリスナー テンプレート記法(状態とDOMのマッピングの定義) フィルタ 算出プロパティ ディレクティブ メソッド ライフサイクルハック イベントハンドリングjQueryでのUI実装はイベントや要素が増えると複雑になりがちVue.jsはイベン…

rubyのextendについて

こんにちは!kossyです! 昨日は終日外出していたため、連続更新記録が途絶えてしまいました、、、 残念ですが、気持ちを切り替えて粛々と更新を続けます。 さて、今回はRubyのextendについてブログに残したいと思います。 モジュールとは そもそも、モジュ…

RspecでAPIが正しく動作するかテストする

こんにちは!kossyです! さて、今回は、RspecのRequestSpecでAPIが正しく値を返すかどうかをテストする方法を ブログに残してみたいと思います。 環境 Rails 5.2.3 Ruby 2.5.1 devise_token_auth factorybot rspec rack_cors jbuilder 参考実装(Spec以外)コ…

map(&:id)とpluck(:id)はどちらが速いのか

こんにちは!kossyです! さて今回は、rubyのメソッドであるmapと、Railsのメソッドであるpluckメソッドの速さの違いを ブログに残してみたいと思います。 実行結果 結論はpluckの方が速いです。```[12] pry(main)> Member.all.map(&:id) Member Load (1.4ms…

RspecのModelに定義されたメソッドの挙動をテストする

こんにちは!kossyです! 皆さんお気づきかと思いますが、ここ最近のエントリはだいぶ手抜きとなっております。 それでも毎日更新することに意味があると思って続けていく所存です。 さて、今回は、RspecでModelに定義したメソッドのテストを書いてみたので…

Railsのアソシエーションに設定できるオプション「dependent: :nullify」

こんにちは!kossyです! さて、今回は、Railsでアソシエーションを組むときに、オプションとして設定できる 「dependent: :nullify」の使い方をブログに残してみたいと思います。 定義は簡単User has_many Postsという関連があるとします。その時のアソシエ…

Railsでビューからモデルにロジックを移す

こんにちは!kossyです! さて、今回は、Railsでビューやコントローラに書きがちなロジックをモデルに移す方法について、 ブログに残してみたいと思います。 環境 Rails 5.2.3 Ruby 2.5.1 MacOS Mojave 値があったら表示するというロジックをモデルに移す例…

月単位での処理に使えるgem 「month」

こんにちは!kossyです! さて、今回は、年月を扱うクラスを定義してくれるgem「month」の使い方を ブログに残してみたいと思います。 環境 Rails 5.2.3 Ruby 2.5.1 MacOS Mojave 導入例によってgemをインストールするだけです。 ./Gemfile gem 'month' $ bu…

RspecでModelのバリデーションが正しく効いているかをテストする

こんにちは!kossyです! さて、今回はRspecでModelに書かれたバリデーションが正しく機能するかをテストしてみたいと思います。 Modelの実装内容 class Article < ApplicationRecord validates :title, :body, :released_at, presence: true validates :tit…

Railsでscopeを定義するときに登場するlambdaとは?

こんにちは!kossyです! さて、今回は、Railsでscopeを定義するときに使うことがある「lambda」に出会ってしまったので、 備忘録としてこいつは何者なのかをブログに残してみたいと思います。 正体は「無名関数」無名関数 = 名前のない関数 です。 で、話を…

RspecでModelに定義したScopeのテストを書いてみる

こんにちは!kossyです! さて、今回は、冗長なDB検索ロジックに名前をつけてひとまとめにできる機能であるscopeのテストを Rspecで書いてみたいと思います。 scopeの定義 class Article < ApplicationRecord scope :open_to_the_public, -> { where(member_…

Railsのenumで定義したシンボルは真偽値を返したり破壊的変更ができる

こんにちは!kossyです! かなり久々のブログの執筆です、、、 流石にアウトプットしなさすぎてまずいので、簡単なことでいいのでアウトプットをしてみます。 さて、今回は、Rails4系から使えるようになったenumのTips的なことを ブログに残してみたいと思い…

ActiveDecoratorのRspecの書き方

こんにちは!kossyです! さて、今回はDecoratorのRspecでのテストの書き方の例について、 ブログに残してみたいと思います。 環境 Rails 5.2.3 Ruby 2.6.3 draper 3.1.0 MacOS Mojave 書き方 とりあえずDecoratorのコードを載せます。 class MemberDecorato…

Railsのvalidation オプション「inclusion」の使い方

こんにちは!kossyです! さて、今回は、Railsのバリデーションオプションの一つである、 「inclusion」オプションの使い方について、ブログに残してみたいと思います。 環境 Rails 5.2.3 Ruby 2.6.3 MacOS Mojave 使い方その属性が持つ値がinclusion内で定…

特定のレコードを増加させるRailsのメソッド「increment」

こんにちは!kossyです! さて、今回は、Railsのメソッドであるincrementの使い方とユースケースについて、ブログに残してみたいと思います。 使い方基本的な使い方はこうです。 Model.increment(:attribute, value) モデル(本体でもレコードでもOK)の属性に…

JavaScriptの!!(エクスペラメーションマーク)2つはオブジェクトをBoolean化(真偽値化)できる

こんにちは!kossyです! アウトプット、意識しないと本当にサボりがちになってしまいますね、、、 しょーもない事でもいいから、何かしらブログに残していきたいと思います、、、 さて、今回は、JavaScriptのあまり見かけない文法をご紹介します。 !!でオブ…

Railsでlibディレクトリをautoload対象に含める方法

こんにちは!kossyです! さて、今回は、各種ライブラリやRakeタスクファイルを配置する用途でよく用いられる、 libディレクトリ内のファイルをautoload対象に含める方法について、 ブログに残してみたいと思います。 そもそもautoloadってなに? 「命名規則…

Railsアプリの本番環境における画像データの置き場所

こんにちは!kossyです! さて、今回は、Railsでアプリケーションを開発する際の、 本番環境における画像データの置き場所はどこがいいのか、について、 ブログに残してみたいと思います。 ロゴや固定のアイコンはassetへ、ユーザーがアップロードする画像は…

ActiveRecordのメソッドに「!」がついた時とそうでない時の挙動の違い

こんにちは!kossyです! さて、今回は、ActiveRecordのメソッド(create, update, destroy, save)に!が付いている時と そうでない時の挙動の違いについて、ブログに残してみたいと思います。 例外を起こすか否か端的にまとめると、上記になります。「!」を伴…

「overloaded POST」 ってなんぞや?

こんにちは!kossyです! めっきりアウトプットが減ってしまいました、、、 Ruby sliverの取得・基本情報技術者の取得・オリアプの開発など、 やりたいこと、やるべきことが湯水の如く湧いて出てくるので、 やらないことを決めることが困難な状況であります…

深いアソシエーションを組んだ時はdelegateを設定しよう

こんにちは!kossyです! さて、今回はメソッドの移譲を実現するメソッド、delegateメソッドの使い方を ブログに残してみたいと思います。 環境 Rails 5.2.2 Ruby 2.5.1 MacOS Mojave ユースケース例えば、 ・Userクラス(name, email, profile_photo, passwo…

deviseのエラーメッセージ にbootstrapを当てたい

こんにちは!kossyです! さて、今回はRailsの認証系機能を提供しているgem「devise」のエラーメッセージ に cssのフレームワークであるbootstrapを当てたい時の方法をブログに残してみたいと思います。 なお、devise及びbootstrapの導入方法については割愛…

Railsアプリにdevise-two-factorとrqrcodeを使って2段階認証を導入した

こんにちは!kossyです! 最近はオリジナルアプリの実装に熱を入れ過ぎてブログの更新が疎かになっておりました、、、 アウトプットが大事だと頭でわかってはいるものの、 実行に移すのは大変ですね、、、 さて、今回はRailsアプリに2段階認証を導入する手順…

bundle installした時のwith native extensionsってなんだ?

こんにちは!kossyです! さて、今回はbundle installした時のログに現れるwith native extensionsの意味について、 ブログに残してみたいと思います。 C言語やC++で書かれているライブラリが必要gemの中には、ruby以外の言語に依存しているものもあり、 そ…

冗長な検索ロジックはscopeにしちゃおう

こんにちは!kossyです! さて、今回はRailsで独自にモデルのデータの絞り込みを定義できるscopeについて、 ブログに残してみたいと思います。 環境 Rails 5.1.6 Ruby 2.5.1 MacOS Mojave 実装方法 例えば、「公開が終了した映画の中で原作が漫画でないデー…

bundle installする時はパスの指定をしよう

こんにちは!kossyです! さて、今回はbundle installする時の注意事項について、ブログに残してみたいと思います。 bundle installする時はpathを指定しよう普段Gemfileを編集すると、 bundle installを実行すると思うのですが、 path vendor/bundleでパス…

Rspec使う時のgenerator設定

こんにちは!kossyです! さて、今回はrspec導入の際のgeneratorの設定についてブログに残してみたいと思います。 個人的には以下のような設定にすることが多いです。 config/application.rb config.generators do |g| g.template_engine :haml g.test_frame…