2021-09-03から1日間の記事一覧

rakeタスクをcron実行する

cron: 定期的に何かのプログラムを実行するためのLinuxの機能。 既存のrakeタスクをcronで一定間隔で実行するため、gem 'whenever'を用いる。 whenever インストール gem 'whenever', require: false $ bundle install $ bundle exec wheneverize . # config…

rakeタスク

rake: rubyで処理内容を定義できるビルドツール。アプリを起動せずCUIから処理を行える。 rakeタスクの作成 rakeタスクのファイルを作成 $ rails g task student_grade lib/tasks配下に作成されたファイルにタスクを記述する。 # lib/tasks/student_grade.ra…

パンくず

gem 'gretel'でパンくずを実装する。 gretel gem 'gretel'をインストール。 gem "gretel" $ bundle install $ rails generate gretel:install パンくずの設定 設定ファイルconfig/bradcrumbs.rbに記述する。 # config/bradcrumbs.rb # 例 # crumb :クラム名 …

【RSpec】リクエストスペック~APIのテスト~

リクエストのテスト spec/requests配下にAPIのディレクトリをつくり、そこに各エンドポイントのファイルを作る。 # spec/requests/api/v1/articles_spec.rb RSpec.describe 'Api::V1::Articles', type: :request do describe 'GET /articles' do let(:articl…

【RSpec】ファクトリの作成

factoriesファイルを編集 以下のようにデフォルト値を設定する # spec/factories/students.rb FactoryBot.define do factory :student do sequence(:name) { |n| "Student#{n}" } sequence(:email) { |n| "student#{n}@test.com" } password { '12345678' } …

【RSpec】モデルスペック ~バリデーションのテスト~

バリデーションに関するテストを書く。 require 'rails_helper' RSpec.describe User, type: :model do it 'メールアドレスは必須項目であること' do user = build(:user) user.email = nil user.valid? expect(user.errors[:email]).to include("can't be b…

【RSpec】モジュールを読み込む

テスト全体の中で何回も繰り返し行われるような処理(ログインなど)はモジュールとして切り出すことでdryになる。 モジュール 'LoginMacros' を作成 ファイルはspec/support内に作る。 # spec/support/login_macros.rb module LoginMacros def login(user) …

【RSpec】セットアップ

RSpecのセットアップ 以下のgemを追加 group :development, :test do gem 'rspec-rails' gem 'factory_bot_rails' $ bundle install テストデータベースの追加 # config/database.yml # SQLite test: <

enumのプルダウン

f.selectとenumの組み合わせでプルダウンが作れる。 <%= f.select (:role, [[:general, 0],[:admin, 1]]) %> => <select name="role" id="role"> <option value="0">general</option> <option value="1">admin</option> </select> adminを選ぶと、params[:role] = 1が送られる。 ransack検索 + enum + i18n + プルダウン <%= f.select :role_eq, User.roles_…

enum

enumの定義 カラム(Integer型)に入る整数値と変数名を紐付ける(例:管理者権限)。 class User enum role: { general: 0, admin: 1 } enumを定義するとできること # インスタンスの値を変数名で取得 @user.role => "general" # インスタンスに変数名で値…