Rails

Vue.jsでリアルタイム検索機能をつくる

はじめに Vue.jsでリアルタイム検索機能をつくる方法について 設定方法 <template> <div class="container-fluid"> <div id="search-form" class="form-row p-3" > <div class="form-group col-lg-6 offset-lg-3"> <label for="search">絞り込み</label> </div></div></div></template>

VeeValidateを使ってバリデーションをつくる

はじめに VeeValidateを使ってバリデーションをつくる方法について VeeValidateをインストール $ yarn add vee-validate VeeValidateの設定ファイルを作成 $ touch app/javascript/plugins/veevalidate.js 上記のファイルをインクルードします。 javascript/…

JWTを使ってトークンベースの認証機能をつくる

はじめに JWTを使ってトークンベースの認証機能をつくる方法について JWTをインストール gem 'jwt' bundle install sessionsコントローラの設定 controllers/api/sessions_controller.rb class Api::SessionsController < ApplicationController def create …

railsアプリにCircleCIを導入する

はじめに railsアプリにCircleCIを導入してCI部分のRspecとRubocopを自動化してみました。 設定方法 まずはアプリのルートディレクトリに.circleciというディレクトリを作り、その配下にconfig.ymlというファイルを作ります。 そのファイルにcircleciの設定…

ActiveStorageを使ってS3に画像を保存する【rails】

はじめに ActiveStorageを使ってAWSのS3に画像を保存する方法について。 ActiveStorageの設定 まずはActiveStorageをインストールします。 $ rails active_storage:install $ rails db:migrate 続いて、該当のモデルと関連付けします。 class Article < Appl…

credentials.yml.encを使って環境変数を設定する【rails】

はじめに railsのcredentials.yml.encを使って環境変数を設定する方法 credentials.yml.enc とは? credentials.yml.encは環境変数をまとめておく場所です。 credentials.yml.enc自体は暗号化されていて、master.keyファイルによって復号化されます。 どちら…

railsアプリにGoogleFontsを導入する

はじめに railsアプリにGoogleFontsの日本語専用のフォントを導入する方法について 設定方法 まずはGoogleFontsの公式サイトに移動します。 googlefonts.github.io すると下記のようなトップページに遷移すると思います。 すこし下にスクロールすると、日本…

【jQuery】添付した画像をプレビュー表示する

はじめに jqueryを使って、添付した画像をプレビューとして表示する方法について。 画像アップロード画面 画像アップロード画面のビューは下記の通りです。 <%= form_with url: image_search_bugs_path, method: :post, local: true do |f| %> <div class="form-group mb-3"> <p style="color: red;">※ファイル形</p></div>…

AmazonRekognitionを使って画像検索機能を作る

はじめに はじめて外部APIを使ってみたのでその内容を書きます。 順序 1:画像を送信する。 2:送信された画像をawsのs3を使って、bucketを指定して保存する。 3:rubyからAmazon RekognitonのAPIを叩いて、先程保存した画像を画像認識して、ラベルを取得す…

【エラー】Your bundle is locked to mimemagic (0.3.4)....の対処法

はじめに bundle install実行時に下記のエラーに遭遇したのでその対処法。 Your bundle is locked to mimemagic (0.3.4), but that version could not be found in any of the sources listed in your Gemfile. If you haven't changed sources, that means …

トークンを使ってAPIの認証機能をつくる【rails】

はじめに トークンを発行してapiの認証機能を実装する方法について。 構成 userモデルに関連づけたApiKeyモデルを作成。 user登録時とログイン時に期限つきのトークンを作成。 (userがすでに有効なトークンを持っている場合はそれを使用) レスポンスヘッダー…

sorceryを使ってapiのユーザー認証をつくる【rails】

はじめに sorceryを使ってユーザー認証機能のapiを作る準備。 前提 fast_jsonapiというserializerを使用 class UserSerializer include FastJsonapi::ObjectSerializer has_many :articles attributes :name, :email end sorceryをインストール gem 'sorcery…

【rails】複数カラムでの複数フリーワード検索を実装する

はじめに railsで複数カラムに対して、検索されたワードが部分一致したレコードのみを取得する検索機能を実装する。 また、複数ワードで検索された場合は、そのワードが全てどこかのカラムに入っているレコードのみを取得する。 構成 機能の構成としては、 …

Rspecで画像を添付する方法

はじめに Rspecで画像を添付する方法と、その画像が添付されたかどうかを確認する方法について。 画像を添付する Rspecで画像を添付するには、attach_fileというメソッドを使います。 このメソッドは、第一引数にinputタグのname属性を指定し、第二引数に画…

railsでリロードしないとjQueryが動かない時の対処法

はじめに railsでjQueryを使ってタブメニューを実装した際に、リロードしないとjQueryが動かない現象が起きたのでその対処法について。 原因 原因はrailsにデフォルトでインストールされているturbolinksというgemです。 このgemはjavascriptなどの変換等を…

jQueryを使ってタブメニューを作る

はじめに jQueyを使ってタブメニューを作る方法について HTML まずはhtmlを下記のように記述します。 <ul class="tab-title"> <li class="tab tab-active">タブタイトル1</li> <li class="tab">タブタイトル2</li> <li class="tab">タブタイトル3</li> </ul> <div class="tab-contents"> <div class="tab-body body-active"> <p>コンテンツ1</p> </div> <div class="tab-body"> <p>コンテンツ2</p></div></div>

railsで長い文章の最初の部分だけを表示する方法【truncate】

はじめに 掲示板のようなアプリの一覧画面などで、本文の最初の部分だけを表示させたい時の方法についてご紹介します。 こんな感じにするやつ↓ 掲示板のようなアプリの一覧画面などで、 本文の最初の部分だけを表示させたい時の方法について ご紹介します。…

railsでtextareaで入力した改行や空白をビューに反映させる方法【safe_join】

はじめに railsでtextareaを使って比較的長い文章を入力してもらったとき、 それをビューで表示しようとすると、改行も空白も無視されてすごく読みづらくなってしまったので、 その対処法についてご紹介します。 問題点 例えば、下記のようなtextareaがあっ…

【bootstrap5のエラー】Module not found: Error: Can't resolve '@popperjs/core' in.....

はじめに rails6系にwebpackerを使って、bootstrap5をインストールして使おうとしたときにclassで指定したデザインが反映されなかったので、 サーバーのログを確認してみたところ、下記のようなエラーが出ていました。 Module not found: Error: Can't resol…

rails6にbootstrapを導入する方法

はじめに Rails6系からは「yarn + webpacker」でBootstrapを導入するのが標準のようなので、こちらの方法で導入していいきます。 設定方法 まずはwebpackerをインストールします。 $ rails webpacker:install ... Webpacker successfully installed 続いて、…

【rails】mysql2をインストール時に遭遇したエラー

はじめに railsでgemmysql2をインストール時に遭遇したエラーの解決法。 エラー遭遇 railsでbundle installを実行したときに下記エラーに遭遇。 Gem::Ext::BuildError: ERROR: Failed to build gem native extension. current directory: /Users/name/worksp…

Punditを使ってユーザーの権限を管理する

はじめに PunditというGemを使ってユーザーの権限を管理する方法について。 前提 ユーザーの種類は、管理者(admin)、編集者(editor)、ライター(writer)の3種類があります。 そして、記事(article)を作成、更新、削除する際には、管理者か編集者でないとでき…

form objectを使って複数のActiveRecordを保存する【rails】

はじめに form objectを使って、一度に複数のActiveRecordを保存する方法について form objectとは form objectとはrailsのデザインパターンの一つで、もともとはバリデーションなどをformにまとめて、 複数のモデルから実行できるようにすることでコードを…

Gemの'whenever'を使ってcronをセットする方法【rails】

はじめに wheneverというGemを使ってcronをセットする方法について 設定方法 まずwheneverというGemをインストールします。 gem 'whenever', require: false $ bundle install 続いて、下記コマンドで設定ファイルを作成します。 $ wheneverize . するとconf…

rakeタスクを設定する【rails】

はじめに rakeタスクはアプリケーションを起動せずに、ターミナルなどから行いたい処理を実行できます。 rakeタスクの設定方法 まず、rakeタスクの処理を設定するためのファイルを作成します。 $ rails g task <タスクの名前> $ rails g task update_article…

gretelを使ってパンくずリストを作成する方法【rails】

はじめに railsアプリにgretelというGemを使ってパンくずリストを作成する方法について 設定方法 まずはGemをインストールします。 gem 'gretel' $ bundle install 続いてgretelをインストールします。 $ rails g gretel:install 上記のコマンドを実行すると…

reset_passwordモジュールを使ってパスワードリセット機能を実装【sorcery】

はじめに sorceryのreset_passwordモジュールを使って、パスワードリセット機能を実装します。 設定方法 まずは、sorceryのパスワードリセットモジュールを導入します。 $ rails g sorcery:install reset_password --only-submodules パスワードリセットに関…

ransackを使って検索機能を実装する【rails】

はじめに railsアプリにransackを導入して検索機能を実装する方法について 設定方法 まずはransackというGemをインストールします。 gem 'ransack' 今回は掲示板一覧ページに、タイトルと本文を部分一致検索できるような検索機能を作ります。 コントローラを…

【rails】掲示板にページネーションを実装

はじめに 掲示板にページネーションを実装する方法について 設定方法 まずはkaminariというGemをインストールします。 gem 'kaminari' $ bundle install 下記のコマンドで`kaminari`の設定ファイルを生成します。 $ rails g kaminari:config デフォルトでは2…

【rails】掲示板の編集・削除機能のポイント

はじめに 掲示板の編集・削除機能について 掲示板の編集・削除機能のポイント edit,update,destroyアクションでは、boardを取得するときには下記のようにcurrent_userを使う。 @board = current_user.boards.find(params[:id]) current_userと関連を使うこと…