はじめに 以前、【RSpec】Factory_botについてで基本的なFacotoryの使い方を説明しました。今回はさらに発展的なFactoryBotの使い方を紹介していきます。 基本的なファクトリー定義 直接値を入れる 値を動的に生成する シーケンスを使用する アソシエーショ…
はじめに RSpecを書き始めてから、describeとcontextに何を書いたらよいか迷うことがありました。なので、describe、context、itの使い分けについて紹介します。 テストの流れ テストの流れは、 テストの対象に対して 特定の条件において 期待するアウトプッ…
wheneverとは? cronの設定を、rubyの簡単な文法で扱えるようにしたライブラリ 【Linux】cronについて wheneverの実装 gemのインストール gem 'whenever', require: false $ bundle install 初期設定 $ bundle exec wheneverize . とコマンドを実行すること…
cronとは? cronとは、「○時になったら〇〇の処理を実行して」といった具合に、定期的にコマンドを実行するためにメモリ上に常に命令を待機しているプロセス(=デーモンプロセス) のことです。 「何を」「いつ(頻度)」実行するかを決めて、そのルールを…
rakeとは? Railsドキュメントでは下記のように記載されています。 Rubyで記述されたビルドツール Railsドキュメント buildツールとは? アプリを構築する上では、同じことを正しい手順で何度も行う場面が出てきます。これを解決するために誕生したのがbuild…
はじめに 今回はパンくずリストを作成するgretelというgemについて紹介します。 パンくずリストとは? こちらの記事がわかりやすかったので載せておきます。 【Webサイトの基本】パンくずリストについて知ろう gemの導入 gem 'gretel' $ bundle install 設定…
はじめに Rails+RSpec+Capybraの環境で開発、テストを行っているので、Capybaraについて整理しておきます。 Capybaraとは? Capybaraは、Webアプリケーションのインテグレーション・テストを補助する為のライブラリです。 Capybaraが提供する本質的な機能…
はじめに Railsでは、rails db:seedというコマンドがあり、db/seed.rbにシードデータを入れておけば、勝手にシードデータを作成してくれます。しかし、これは1度だけシードデータを作成する場合はよいのですが、シードデータを編集して再度実行すると、同じ…
はじめに Rspecモジュールの作成・使用方法について紹介します。 【RSpec】初期設定について 初期設定に加えて rails_helper # This file is copied to spec/ when you run 'rails generate rspec:install' require 'spec_helper' ENV['RAILS_ENV'] ||= 'tes…
はじめに Factory_Botの使用方法について説明します。(gemはインストール済とする) 【RSpec】初期設定について 初期設定 rails_helper.rb RSpec.configure do |config| config.include FactoryBot::Syntax::Methods end テストデータの作成方法 Userモデルが…
はじめに RailsでRSpecを導入するときに、初期設定を忘れがちなので備忘録として残しておきます。 gemの追加(rspec) Gemfile gem 'rspec-rails' $ bundle install これでgemを入れることができました。 設定ファイルを作成するコマンド $ rails g rspec:inst…
はじめに ransackのcustom predicateとは、name_eqやname_contのeqやcontなどのpredicate(述語)をカスタマイズして、自由に設定できるものです。 実装 まず、config/initializers下にransack.rbファイルを作成しましょう。 公式ドキュメントに下記の記載方…
はじめに 前回、enumについて記事【Rails】enumについてをあげたのですが、それをi18n化する便利なgemがありましたの紹介します。その名も、enum_helpです。 enumをi18n対応させよう!! まず、gemを入れます。 Gemfile gem 'enum_help' そして、 $ bundle i…
はじめに enumについて記述していきます。 enumとは? enumとは、1つのカラムに指定した複数個の定数を保存できる様にする為のモノです。 例 user.rb class User < ApplicationRecord enum role: { general: 0, admin: 1 } end このenumを使うと指定した複…
はじめに 管理画面を作るのが大変。そこで、管理画面作成に特化したCSSフレームワークAdminLTEについて記していきます。 インストール $ yarn add admin-lte@^3.0 このように様々なファイルが取り込まれます。 yarnでインストールしたので、ルートディレクト…
はじめに yarnとは何かについて分からなかったので、整理しました。 yarnとは? Node.jsで動作するパッケージマネージャーの一つです。 フロントエンド関連のパッケージ管理ツールは様々混在していますが、大枠 Bower → npm → yarn と言った流れを経てきてい…
はじめに アプリを開発していく中で本番環境と開発環境で値を変えたいといったケースが出てくると思います。たとえばホストの情報を管理したい時などに使えます。メールを送る下準備としてホスト情報を設定しておく必要があるのですが、ホスト情報って開発環…
はじめに Ruby on Railsで開発中に送ったメールを確認する Gem letter_opener_webの使用方法の紹介です。 このように、開発環境で簡単に送られたメールを確認することができます。 設定方法 Gemfile group :development do gem 'letter_opener_web' end 次に…
はじめに sorceryとは、Railsに認証機能の実装を行うためのライブラリです。 同じように認証機能を提供してくれているものとしてdeviseなどが挙げられますが、sorceryの方がよりシンプルで、カスタマイズ性に富んでいるという特徴を持ちます。今回はsorcery…
はじめに Viewにcreated_atのような日付を出力すると、 Tue, 30 Jul 2020 00:12:12 +0000 のような日本人には見慣れない表示がされます。この記事ではこれを日本人が見やすい表示に変更する流れを紹介します。 タイムゾーンを日本時間にする まず、タイムゾ…
はじめに ransackの実装の流れをメモしておきます。 gemのインストール Gemfile gem 'ransack' $ bundle install Controller def index @q = Board.ransack(params[:q]) @boards = @q.result(distinct: true).includes(:user).order(created_at: :desc).page…
はじめに ページネーションを実現させるgem(kaminari)の実装方法について書いていきます。 gemのインストール まず、今回使用するgem kaminariをインストールしましょう。 Gemfile gem 'kaminari' gemのインストール bundle install 基本的な使い方 コントロ…
はじめに 前回の「【Rails】ブックマーク機能の実装」の発展で、これをajax処理で実現していきます。 ajaxの実装 Railsにおいてajax通信を実装する場合、主に二つの方法があります。 remote: trueを指定する方法 JSファイルに任意のタイミングでajax処理を発…
はじめに 今回、Railsで初めてブックマーク機能を実装したので、ブログにまとめていきます。 今回したいこと 掲示板の⭐️マークをクリックすると、 ⭐️マークの色が変わって、ブックマーク登録されるという機能を実装していきます。 ER図 Bookmarkモデルを中間…
はじめに ルーティングがネストしている時の、form-withの書き方を備忘録として残しておきます。 ルーティング(ネスト) resources :boards do resources :comments end createアクション ネストしたモデルのコメントをcreateするとき 、 /boards/:board_id…
はじめに 日本とアメリカに時差があるように、国や地域ごとで基準時刻というものが違います。日本で使われている時間は「日本標準時(JST)」と呼ばれています。Railsでは、デフォルトで協定世界時(UTC)」の時間で設定されているので、日本で使用するアプリの…
はじめに Railsで開発するときに、処理が正しく動いているか確認するためにダミーのデータをデータベースに入れることが多くあります。そのようなデータを用意する仕組みとしてRailsではseeds.rbファイルを使用します。 seedファイル seeds.rbの場所はdb/see…
はじめに N+1問題とは、ループ処理などでデータベースからデータを取り出す際に、必要以上にSQLが発行され、動作が悪くなってしまう問題のことです。 例えば 例えば、掲示板の一覧を表示したいとします。 下記の設定でboardモデルから全てのレコードを取得し…
はじめに 画像アップロードのGem Carrierwaveの導入方法を記録しておきます。 手順 アップローダーを作成し、 それをモデルで使用するように宣言した上で、 実際にアップロード作業を行う Gemfileの設定 gem 'carrierwave' $ bundle install アップローダー…