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

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

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アプリケーションが構築され

元記事を表示

RailsのバージョンアップのためにRSpecテストを書いたのでメモメモ

どうもこんにちは。

今回は以前投稿した[こちら](https://qiita.com/PDC-Kurashinak/items/3e708bff8b5d07eedc02)の記事の派生で、RSpecテストについて記載します。

https://qiita.com/PDC-Kurashinak/items/3e708bff8b5d07eedc02

# RSpecってどんなやつ?

RSpecテストとは、Railsのモデル、ビュー、コントローラなどのコードを実際に動かしているかのように **動的なテスト** をしてくれるツールです。

(コーディング規約に反していないかチェックするツールとしてRuboCopというツールがありますが、別の記事でメモしました。)

https://qiita.com/PDC-Kurashinak/items/1de32b66d95c705f5b82

# RSpecのメリット

– 書いたコードのエラーを自動で発見することができる
– Railsをバージョンアップさせたときに実行すれば、修正の必要箇所がよくわかる

# RSpecのデメリット

– 自分でテ

元記事を表示

ブラウザ上のCloud9でrails newするときの注意点

ブラウザ上のCloud9でrails newするとき、ローカルの開発環境と違って、必要なプラグインをインストールしなければならない。また、アクセスを許可するホストの設定もしなければならない。

## 必要なプラグインをインストールする
“`command
$ yarn add @babel/plugin-proposal-private-methods @babel/plugin-proposal-private-property-in-object
“`

上記のコマンドでプラグインをインストールしないと、エラーが起きてしまう

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3470238/bb2bfef3-ac75-1b8b-2e0e-47b03dfb9e84.png)

## アクセスを許可するホストの設定
このまま、rails sでサーバーを起動してもエラーが起きる。
以下のエラー画面に出てきたconfig.hosts << ~~~とある部分をコピペし、deveropment

元記事を表示

Pumaについて深掘りしてみた

## Pumaとは
:::note
Railsを動かすためのアプリケーションサーバーのことで、Webサーバーの役割も兼ねることができブラウザからのリクエストを元にレスポンスも返す。Rails6はデフォルトでPumaが採用されている。
:::

##### その他のRails用のアプリケーションサーバー
* Unicorn
* Mongrel
* Thin
* Rainbows
など。それぞれに異なる長所があり、異なる設計思想を持っている。

## Pumaの仕組み
##### マルチスレッド
1プロセスの中で複数の処理を同時に扱うマルチスレッドで動作する。マルチスレッドによって大量のアクセスを効率的に処理することができる。

##### Ruby/Rackアプリケーション
>Puma is a simple, fast, multi-threaded, and highly parallel HTTP 1.1 server for Ruby/Rack applications.

Puma は、シンプル、高速、マルチスレッドで多数の並列処理を実現できる Ruby/Rack アプリケー

元記事を表示

FluxによるGitOpsの構築

# FluxによるGitOpsの構築

– [序章: はじめに](#序章-はじめに)
– [GitOpsとは?](#gitopsとは)
– [Fluxの概要](#fluxの概要)
– [第一章: チュートリアル](#第一章-チュートリアル)
– [前提条件](#前提条件)
– [1. Fluxのインストール](#1-fluxのインストール)
– [2. Fluxの設定](#2-fluxの設定)
– [3. Railsアプリケーションのデプロイ](#3-railsアプリケーションのデプロイ)
– [4. Fluxによる変更の検出とデプロイ](#4-fluxによる変更の検出とデプロイ)
– [第二章: トラブルシューティング](#第二章-トラブルシューティング)

## 序章: はじめに

### GitOpsとは?
GitOpsは、Gitリポジトリを真実の唯一の情報源として扱い、そのリポジトリ内のマニフェストに基づいてインフラやアプリケーションのデプロイメントを行う手法です。

### Fluxの概要
Fluxは、Kubernetesクラスタ内で動作するオープ

元記事を表示

docker-composeで開発環境を構築するやり方

本記事ではrails+postgreSQLを使用したアプリケーションをdocker-composeを使用してdocker化するやり方を記載する。

– 使用ファイル構成
![スクリーンショット 2023-09-18 20.21.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3510594/940a6555-c966-775d-a8aa-af72a55e522c.png)
このRailsのアプリケーションをdocker化する

– 作成するファイル
“`Dockerfile:Dockerfile
FROM ruby:3.2.2
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
RUN mkdir /myapp
WORKDIR /myapp
COPY Gemfile Gemfile.lock /myapp/
RUN bundle install

“`
`apt-get update`でパッケ

元記事を表示

OTHERカテゴリの最新記事