Rails関連のことを調べてみた2023年09月23日

Rails関連のことを調べてみた2023年09月23日

個人的メモ

# Git

バージョン管理を行う為トピックブランチ(別ブランチ)を作成する
-cはcheckoutの略

“`terminal
# XXXは新規作成したい任意のブランチ名
$ git switch -c XXX
“`

mainブランチにマージする

“`terminal
$ git add -A
$ git commit -m “hogehoge”
$ git switch main
# ここで$ git statusでmainブランチに切り替わっているか確認した方がいいかも
$ git merge modeling-users
$ git push
“`

困ったら → 助かる[サイト](https://dev.classmethod.jp/articles/git-move-change-to-another-branch/)

#

今後このメモに追加予定

元記事を表示

AWS, Terraform, Next.js(Typescript), Rails, Docker, Vercel, Github Actions, Firebaseを使用してポートフォリオを作成しました。

# 概要
同棲しているカップル専用の家計簿アプリを作りました。
レスポンシブ対応です。
現在開発中で全然完成していませんが、完成時期が見えないので一旦就職活動用にまとめました。

開発者のプロフィール情報、お問い合わせは[こちら](https://codeto.jp)からお願いします。

# サイト
こちらが開発したWebアプリのリンクです。
[Pairly(ペアリー) – 同棲カップル専用の家計簿アプリ](https://app.pairly.life/)

:::note alert
**注意**
現在開発中のためパートナー招待が使用できません。
投稿データの同期を確認されたい方は下記のテストアカウントをご利用ください。
:::

### テストユーザー1
【メールアドレス】tarou@test.com
【パスワード】123456

### テストユーザー2
【メールアドレス】hanako@test.com
【パスワード】123456

:::note info
テストユーザー1で投稿すると、テストユーザー2に同期されてデータを閲覧

元記事を表示

RailsのRubyライブラリ自動読み込みについて | なぜrequireしなくても動くのか?

Railsでアプリを開発中、外部APIを叩く処理で[URIライブラリ](https://docs.ruby-lang.org/ja/latest/library/uri.html)を使用する場面がありました。

URIライブラリは[組み込みライブラリ](https://docs.ruby-lang.org/ja/3.1/library/_builtin.html)ではないので、コード内に`require ‘uri’`が必ず必要だと思っていたのですが、require無しでも動いたため、その理由について調べたことをまとめます。

## Rubyライブラリの種類

本題に入る前にRubyライブラリの種類について簡単に。

#### ①組み込み標準ライブラリ
– Ruby本体に組み込まれている。
– require を書かなくても使うことができる。
– 例)Array, Hash, String, Integer

#### ②組み込みではない標準ライブラリ(この記事で扱います)
– Ruby本体に付属している。
– インストール不要でコード内でrequireして使う。
– 例)Date,

元記事を表示

Rails7のActive Recordを利用したデータの暗号化について

# 基本的な導入例
給与などを決定する評価テーブル(MySQL)を暗号化することを仮定します。

## テーブル設計
一旦暗号化のことを考えず以下のように作成したいテーブルの定義を考えます。
“`sql
CREATE TABLE `staff_evaluations`
(
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT ‘評価ID’,
`evaluation_rank` char(1) COMMENT ‘評価ランク(A,B,C,D)’,
`evaluation_reason` varchar(5000) COMMENT ‘評価理由’,
`monthly_income_up_amount` int(11) COMMENT ‘月収アップ額’,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
“`
上記において暗号化

元記事を表示

rails-erd でテーブル名と関連だけのシンプルなER図を作る設定 #3452

# .erdconfig の 例

– テーブルのカラムを表示しない
– アプリケーションに関係ない Rails のデフォルトのテーブルは除外する
– 横方向のPDRだと見づらかったので縦方向の設定にした

“`
attributes:
– inheritance
exclude: ActiveRecord::SchemaMigration,ActiveRecord::InternalMetadata
filename: erd-simple
orientation: vertical

“`

# 公式

https://voormedia.github.io/rails-erd/customise.html

# チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

# Twitter

元記事を表示

ApacheにRailsの動作環境を作る

## 環境
– Ubuntu20.4 + vagrant
– Apache2.4.41 + Passenger
– Ruby2.6
– Rails5.2

## はじめに
ApacheにRailsを動作させる環境を設定します。

## 設定

ApacheでRailsのプロジェクトを動かす元となるディレクトリを決める必要があります。Apacheではデフォルトで、Webアプリを/var/www配下に置くことになっています。しかし、必ずしもそこに置かないといけないといった決まりはありません。しかし、事実上、/var/www配下に置くことが暗黙の了解になっているようです。Railsのプロジェクトは任意のディレクトリで動作させることができます。/var/www配下で動かしたい場合は、/var/www配下にRailsのプロジェクトのシンボリックリンクを配置することで実現することができます。

– #### Railsのプロジェクトをルートにする場合

仮想ホストを設定するファイルを新規に作成した後、DocumentRootディレクティブで、Railsのプロジェクトのpublicのパスを指定します

元記事を表示

[Hotwire] 数字を自動フォーマット

# はじめに

桁数が多い数字は桁数が合っているか判断しづらいです。判断しやすくするために、3桁区切りでカンマを入れます。自ら3桁区切りでカンマを入れることも可能ですが、それはやりたくないでしょう。

そこで、HotwireのStimulusを使って、数字が自動フォーマットされるようにしました。

![Sep-18-2023 22-34-39.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3472392/ed28fa26-b220-9704-2373-6079432bf2e5.gif)

## 環境

– Rails 7.0.7
– Ruby 3.2.2

# 実装

ただ、数字をフォーマットすればいいだけに思いますが、実際は違います。データベースに保存する時にはカンマを取り除く必要があります。カンマがついた状態では、データベースで数値として扱えないからです。数値として扱えないと、年収が1,000,000円以上のユーザーを検索するのも難しくなります。数値として扱うために、データベースに保存する前に、数

元記事を表示

deviseを使用した退会機能

# 初学者の備忘録
初学者の備忘録です。今回は前に投稿した[devise](https://qiita.com/Kooszs12/items/4bf3e25c4d3deda8b309)を使用した退会機能編
*論理的削除の退会機能です。(参考URL:https://zenn.dev/goldsaya/articles/ee812461bbea6b)

## 実装
【1】 カラム追加
退会機能には退会フラグカラムが必要になります。まずはカラムの追加からになりますが、すでに追加している場合はスキップして大丈夫です。
退会フラグには退会済みと退会していない状態の2つの状態が存在しています。なのでデータ型はboolean型を使用して、default: falseと記述することでデフォルトでユーザーが登録した時に自動で退会前という状態のデータが保存されます。
“`ruby:db/migrate/(年月日時分秒)_devise_create_users.rb
t.boolean “is_deleted”, default: false, null: false
“`
マイグレーションファイルを

元記事を表示

Ruby on Rails5速習実践ガイドの感想

[Ruby on Rails5速習実践ガイド](https://www.amazon.co.jp/%E7%8F%BE%E5%A0%B4%E3%81%A7%E4%BD%BF%E3%81%88%E3%82%8B-Ruby-Rails-5%E9%80%9F%E7%BF%92%E5%AE%9F%E8%B7%B5%E3%82%AC%E3%82%A4%E3%83%89-%E5%A4%A7%E5%A0%B4%E5%AF%A7%E5%AD%90/dp/4839962227/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=1GBXVR6FTZEZZ&keywords=ruby+on+rails+5%E9%80%9F%E7%BF%92%E5%AE%9F%E8%B7%B5%E3%82%AC%E3%82%A4%E3%83%89&qid=1695165969&sprefix=ruby+on+rails5%E9%80%9F%E7%BF%92%E5%AE%9F%E8%B7%B5%E3%82%AC%E3%82%A4%E3%83%89%

元記事を表示

has_secure_password の 72 文字制限にご用心

Rails にはパスワードフィールドを管理する方法として `has_secure_password` という機能がある。機能自体については[公式のドキュメント](https://guides.rubyonrails.org/active_model_basics.html#securepassword)を参照してほしい。

本題はこの機能の 72 文字制限についてである。公式のドキュメントにもある通り、この機能が作るパスワードフィールドには最大 72 文字のバリデーションが自動的にかかる。

“`irb
irb> user.password = user.password_confirmation = ‘a’ * 73
irb> user.valid?
=> false
irb> user.errors
=> #72}>]>
“`
[ソースコード]( https://github.com/rai

元記事を表示

位置情報SNSをハッカソンで作った話

# 記事概要
ハッカソンに初めて参加した専門学校生の体験記です。
作ったアプリの内容や、開発の流れ、もっとこうすればよかったと思っている点などまとめました。
自分の技術力でも足りるかな?という不安があり今まで参加していませんでしたが、学ぶことが山ほどあって、もっと早くに参加すればよかったと思っています!

# 完成した開発物
**通りすがりメモリー**
位置情報付きの投稿文を地図上に表示するSNS

**スクリーンショット**

ファイル名
ファイル名Railsで静的データのモデルの実装

## 最初に

本記事でやりたかったことは [active_hash](https://github.com/active-hash/active_hash) を使ってもできるので、その前提でお読みいただけると。

記事を書いたときは `active_hash` を知らず、コメントで教えていただきました。

## 背景
Ruby on Railsで開発をしていて、
更新性の低いデータ、DB管理する必要ないであろうデータの扱い方に迷ったので、
対応方法を残します。

## 対象データ
Webサービスのプラン情報についてです。
基本的にリリース後に追加はあっても変更する可能性は低いです。
追加に関してもあっても2年に一度とかとかになるかな..と考えています。

ですので、管理画面作って変更するまでもないし、
DBに入れるまでもないデータだなと思ってどのように実装するかを迷っていました。

## 対処方法
Modelとしては実装しつつも、
DBには保存せず静的なデータで定義をしました。

## 実際のコード

以下のModelクラスを実装です。

“`models/plan.rb
clas

元記事を表示

rails 通知機能

**はじめに**

今回は、投稿のいいね機能についての通知機能を実装します。

バージョン
rails 6.1.7.4
ruby 3.1.2
通知する機能いいね機能作成済みとします
________

### モデル作成
“`
rails g modle Notification
“`
“`notification.rb
class Notification < ApplicationRecord # デフォルトの並び順を「作成日時の降順」で指定、に新しい通知からデータを取得することができる default_scope -> { order(created_at: :desc) }
belongs_to :visitor, class_name: ‘User’, optional: true
belongs_to :visited, class_name: ‘User’, optional: true
# optional: trueは、nilを許可するもの
belongs_to :post, optional: true
belongs_to :c

元記事を表示

Rubocop

# 初学者の備忘録
初学者の備忘録です。今回はRubocop編

## Rubocopとは
プロジェクトに記述されているRuby(Rails)のコードがコーディング規約に遵守されているかチェックを行う、静的コード解析ツールです。

コーディング規約とは?
開発をする際にコードをどのように書くのかを規約として設けることで、コードに統一性を持たせることを目的とします。
規約の一例としては命名規則や禁止事項などが挙げられます。

らしいのですが難しいので私はインデントや全角などを検出してくれるものだと認識してます。そのためにはルールを変えなければいけないのですが、チャットGDPとかに聞くとルールのコードを教えてくれます。

## 導入
「Gemfile」のdevelopmentグループに以下の記述を追記します。
“`diff_ruby:Gemfile

group :development do

:
:

+gem ‘rubocop’, require: false
+gem ‘rubocop-performance’, require: false
+gem ‘rubo

元記事を表示

ゲストログイン機能

# 初学者の備忘録
初学者の備忘録です。今回はdeviseを使用したゲストログイン機能編

## ゲストログイン
ゲストログインとはユーザーログインのようにメールアドレスやパスワード登録などをしなくても、ある程度制限のある中で気軽に会員と同じ機能を使えるログイン方法のことです。実務ではあまり使用しない機能らしいのですが、PFなど自分の作品を誰かに発表するときなどはある方が便利らしいです。

今回はそんなゲストログイン機能をdeviseを使用して作成したいと思います。

## 実装
【1】 コントローラー
deviseでサインイン機能はできているので、あとはどのユーザーをログイン状態にするか指定してあげればいいです。
“`ruby:app/controllers/users/sessions_controller.rb
class Users::SessionsController < Devise::SessionsController def guest_sign_in user = User.guest sign_in user redirect

元記事を表示

俺流Request specのフォーマット

## 背景

最近、個人でRuby on Railsを使ってWebサービスのAPIを開発しています。
その際にRSpecを使って主にRequest specを書きました。
spec形式の書き方で試行錯誤したので公開してみます。

## 俺流Request spec

まずは、コードを共有させていただきます。

組織のCRADを実装したOrganization APIのrequest specです。
rails_helperやメソッドに処理をさせているところもあって、
わかりづらいかもしれませんが動いているコードの一部をほぼそのまま持ってきました。

“`organizations_request_spec.rb
RSpec.describe ‘Organizations’, type: :request do
# 共通のデータ
let!(:user) { create(:user) }
let!(:uneditable_user) { create(:user) }
let!(:organization) { create(:organization) }

le

元記事を表示

開発におけるDB設計について

何かを開発するにあたり、DB設計についてのインプットが甘かったためここに再度メモ書きとして残しておく。

この記事は開発する前に行なっておくべきことを備忘録としてまとめ、初学者である自分や周りの方の助けになることが目的です。

# 開発(コード書く)前にDB設計しろ

**「〇〇が作りたい」**

**「これを開発してみたい」**

と思わず手を動かしてしまうんですが、まずはDB設計をした方がいい。

なぜかというと、

進めていくうちに沼にハマるから。

「あれ、ここはどうしよう?」

「いまどこのエンティティに対しての実装を行なってるの?」

と迷子になってしまって僕はコードを書き進められませんでした。

まずはDB設計を行いましょう。

DB設計は家を建てる時の設計図に他なりません。

図面がないとプロの職人でも、

「これはどこの柱だっけ?」

と一々思案する必要がでて時間を消費します。

## どういう順番がいいのか

1. **エンティティの抽出と定義**
2. **正規化**
3. **ER図の作成**

細かく行うと、仕様書の作成から要件定義と行なっていく必要があり、R

元記事を表示

【Heroku】デプロイエラー Cannot find package ‘@babel/plugin-proposal-private-methods’ 解決策を探る

プログラミング初心者です。
Herokuへのデプロイで詰まった部分を、勉強のためまとめてみようと思います。

# 環境
Ruby on Rails (6.1.7.6)
Heroku (7.47.7)
MySQL(8.1.0)

# エラー内容

“`heroku.logs

Compiling…
Compilation failed:
Hash: 0995169381fdf04c2e5d
Version: webpack 4.47.0
Time: 598ms
Built at: 09/19/2023 9:01:59 AM
2 assets
Entrypoint application = js/application-d6bd20caf583a9f90502.js js/application-d6bd20caf583a9f90502.js.map
[0] ./app/javascript/packs/application.js 4.54 KiB {0} [bu

元記事を表示

【Rails6】 既存AppにTailwindCSSを導入しよう!

# はじめに
?こんにちは!Web系の企業に勤務し、地方からフルリモート勤務をしている@takakouと申します?️✨

今回は、「**【Rails6】 既存AppにTailwindCSSを導入しよう!**」というテーマで記事をシェアします!?

この記事を執筆しようと思った経緯としては、私自身が **既存のRails6のアプリケーション**に**TailwindCSS**を導入する記事があまり見つからなかったからです 。?

そこで、同じ疑問を持つ方の解消ができればと思い執筆しました?

記事執筆は未熟者で、至らない点もあるかと思いますが、皆さんのコメントやフィードバックをお待ちしています!??
# 目次

1. [対象者 ?](#1-対象者)
1. [動作環境 ?️](#2-動作環境)
1. [導入手順 ?](#4-導入手順)
1. [参考文献 ?](#5-参考文献)
1. [おわりに ?](#6-おわりに)

# 1. 対象者

* **Rails6**の既存AppにTailwindCSSを導入したい方

元記事を表示

Railsのコードを綺麗にしたくてRuboCopを導入したのでメモメモ

どうもこんにちは。

RSpecテストのことをメモしてたら、RuboCopのことも書きたくなったのでメモします。

# RuboCopとは?

RuboCopとは、Rubyのコードをチェックして、そのコードがRubyの良い書き方かどうかを確認するツールです。簡単に言うと、Rubyの「 **文法チェッカー&アドバイザー** 」のようなものです。

# RuboCopを導入するメリット

– 導入が簡単
– 開発チーム全体でコードスタイルを統一することができる
– バグを防ぐことができる
– 良いコードスタイルを学ぶことができる

# デメリット

特にない。。。

# RoboCopとRSpec何が違うの?

一言で言うと、「 **静的チェックか動的チェックか** 」です。

RuboCopはコードの外見を見ます。(スタイルなど)

それに対して、RSpecはコードの内面を見ます。(動作、行動)

https://qiita.com/PDC-Kurashinak/items/a3ec3d693a70540aa4da

# 導入方法

ここでは、最低限のRailsアプリケーションが構築され

元記事を表示

OTHERカテゴリの最新記事