Railsで検索を実装するとき、どのように実装しますか? ransack などのGemを使っていますか? 今回は、Gemを使わずにFinderオブジェクトを使って検索を実装してみます。 Finderオブジェクトを使うと、モデルとコントローラーから検索のロジックを切り離すこ…
HPでもWebサービスでもお問い合わせフォームは必須な機能だと思います。 今回はお問い合わせフォームからのお問い合わせ内容をGitHubのissueにする方法を紹介します。 事前準備 Gemをインストールする Gemfile gem 'octokit' GitHubでアクセストークンを作成…
DBに保存するほどでもないマスターデータをどのように管理するか悩んだことはありませんか? 今回は、そんな時に便利かも!?な ActiveHash を使ってモデルライクにマスターデータを管理します。 github.com 事前準備 Gemをインストールする Gemfile gem 'ac…
Railsで多言語化する時、yamlファイルに日本語訳や英語訳を追加していくと思います。 そのyamlファイルに追加した訳文で式展開ができることをご存知ですか? 事前準備 config/application.rb に以下の設定を追加します。 config.i18n.default_locale = :ja c…
アクセスしたURLによってlocaleを切り替える機能を意外と実装したことがなかったので、今回は3つの方法でlocaleを切り替えてみたいと思います。 事前準備 複数の言語を使用できるように設定する config/application.rb に以下の設定を追加します。 config.i1…
はじめに 今回は、Railsの基本スタックのインフラ構築をAWSで行うことに挑戦しました。アプリをAWS上でデプロイするにあたり、ECS(Elastic Container Service)を初めて利用してみました。Railsの基本スタックをAWSで簡単に構築すること、特にDockerとECSを…
どうも、量子の人を目指して頑張ってます原田です。 普段は量子の理論の方を学習しているので、コードを書くのは初だったのですが、予想以上に難しかった。というか、コードを書く=アプリケーションを開発するという認識しかなかったので、ビットを直接いじ…
今回はよく使う・知っていると便利なmigrateコマンドを紹介します! マイグレートする rails db:migrate 特定の環境のみマイグレートする 開発環境の場合(デフォルトなので明示的に指定することはあまりないと思います) rails db:migrate RAILS_ENV=develo…
こんにちは。出口です。 今回は、はてなブログのSEO効果を高めるための施策を行ったので、その辺りの話です。 大きく分けて2つの対応を行いました。 記事下への著者情報の追加 JSON-LDへの著者情報等の追加 どちらもJavaScriptでの対応になります。 記事下へ…
Railsで日本語化をするとき、「あれどうやるんだっけ」と意外と忘れてしまうこともあると思います。 今回はそんな日本語化の話をしたいと思います! 事前準備 config/application.rb に以下の設定を追加します。 config.i18n.default_locale = :ja config.i1…
ユーザーの権限を管理する際などに、enumを使うことがあると思います。 今回はenumの使い方をまとめてみます。 下準備 1. Gemをインストールする 日本語対応のためのGemです。 gem "enum_help" 2. モデルを作る $ rails g model user 202401001000000_users.…
以前Rails7でTailwind CSSの導入をしましたが、今回はBootstrapを導入してみます。 esbuildを使用します。 プロジェクト作成時に導入する場合 1. rails new mofmof -j esbuild --css bootstrap でプロジェクトを作成する 2. 以下を package.json に追加する …
Stripe決済第四弾です。 今回はいままで実装したサブスクの解約を実装します。 サブスクの実装は以下の記事を参考にしてみてください。 www.mof-mof.co.jp 実装 ルーティングを追加します。 config/routes.rb resources :cancel, only: [:create] viewsに追…
Stripe決済第三弾です。 今回は前々回実装したサブスクと、前回実装した買い切りを組み合わせて複数のプランをユーザーが選択できるようにしてみます。 下準備は以下の記事を参考にしてみてください。 www.mof-mof.co.jp 決済を実装する 今回用意するプラン …
Stripe決済第二弾です。 今回は前回サブスクで実装したプレミアムプランを買い切りで実装してみます。 下準備は前回の記事を参考にしてみてください。 www.mof-mof.co.jp 決済を実装する 料金を作成する こちら で料金を作成します。 前回作成したプレミアム…
近年、サブスクのサービスが増えましたね。 今回はユーザーの上位プランをサブスクで決済できるようにしたいと思います。 プレミアム会員を月額100円で実装してみます! 下準備 Gemをインストールします。 Gemfile gem "stripe" Stripeのアカウントを作成し…
PSMとは なぜ受験しようと思ったか よかったこと スクラムの基本が身につけられた スクラムガイド最新版のキャッチアップができた 複数スクラムチームの運用について知ることができた PSM Ⅱに向けて 最後に PSMとは PSM (Professional Scrum Master)は、Sc…
Dockerの公式が出しているRubyのdocker imageではdebianやapline linuxが使用されています。mofmofではHerokuで本番環境を作っているアプリも多いのですが、HerokuではUbuntuが使われています。 そのため、ローカルで使用しているdockerでもUbuntuを使ってHe…
Hotwireを使ってみる第三弾です! 今回はJSを使わずに、Hotwireで無限スクロールを実装してみます。 下準備 1. Gemをインストールする gem "kaminari" 2. モデルを作る $ rails g model post 20240813000000_posts.rb class CreatePosts < ActiveRecord::Mig…
Hotwireを使ってみる第二弾です! 今回は、検索結果をHotwireで表示するようにしてみます。 画面の全てを再描画する必要がないので、速度が上がるかもしれませんね! 下準備 1. モデルを作る $ rails g model post 20240813000000_posts.rb class CreatePost…
Rails6までは「もっと見る」などの動的な機能を実装する場合はJSが必須でした。 しかし、Rails7から標準搭載されたHotwire(Turbo)を使用すると、JSを使わずに「もっと見る」を実装することができます。 今回はHotwireを使った「もっと見る」の実装方法を紹…
deviseを使わない自前のユーザー認証 の続きで、今回はパスワードリセット機能を実装します。 下準備 1. カラムを追加します $ rails g migration add_password_reset_to_users 20240726000000_add_password_reset_to_users.rb class CreateUsers < ActiveRe…
deviseを使ったユーザー認証はとても便利ですが、カスタマイズをしたいときや、APIモードで使う時には不便なことがあります。 そこで今回は、deviseを使わない自前のユーザー認証を実装します。 下準備 1. Gemfileに使用するGemを追加します (Gemfileの中で…
目標・目的 インフラ(今回はAWS)について学ぶことで今後の開発での視野を広げることが今回の目的です。 まずはその第一歩としてCloud Practitionerの取得を目標としました。 学習方法 主にAWS Skill Builderでの学習を主体とし、試験対策として無料の過去…
個人開発しているアプリのExpoバージョンを上げていったらビルドが通らなくなった。そこで、比較的新しいバージョンのExpoではビルドがどういう感じになっているのかキャッチアップしたい。 ひとまずブランクアプリケーションが起動するまで まずはブランク…
バリデーションでエラーになった際に、エラーメッセージを各テキストフィールド等の下部に表示したい時があると思います。 今回はそんな時に便利な各attributeごとにエラーメッセージを抜き出す方法を紹介します。 手順 例えば User の email のエラーは以下…
こんにちは。豊泉です。 データベースはPostgreSQLを使うことが多いのですが、最近実行計画をあまり見ていないなと思ったので、PostgreSQLでいくつかクエリを試しながら実行計画を見てみようと思います。 検証環境 検証データ クエリを試してみる Accountテ…
Biome v1.7からPrettierとESLintから移行するためのコマンドが追加されたので、既存のNext.jsプロジェクトで試しに移行コマンドを叩いてみました。 biomejs.dev Biomeのインストールと初期設定 ESLintからの移行コマンド Prettierからの移行コマンド package…
「ここのページだけReact使いたいんだよな〜」とか「ページのここの部分にReact入れ込みたいんだよな〜」ということはありませんか? 今回はそんなあなたにReactを部分的に使用する方法を紹介します。 こちらの記事を応用していきます。↓ www.mof-mof.co.jp …
こんにちは。豊泉です。 少し前に良い個人開発のアイデアが浮かんだので開発していたのですが、アプリのビルドやアップロードなどは少しややこしく以前から面倒に感じていたので、せっかくならビルドとアップロードを自動化しようと思いGithub Actionsを使っ…