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

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

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`でパッケ

元記事を表示

【個人開発】世の中のWebサービスを探す手間が省けるアプリを、未経験者が開発してみた【Rails7】

# はじめに

はじめまして、[@takutaku_hiro](https://twitter.com/takutaku_hiro)です。
私は現在、スクールに通いプログラミングの勉強を行っています。その中で、初めての個人開発として『WebAppDiary』というWebアプリを作成しました。
まだまだプログラミング学習中の未経験エンジニアであり、技術的な内容などは誤りを含む可能性があります。
そのため、おかしな記述などがあればコメント等で教えていただけたら幸いです?

# 作成したアプリ:[WebAppDiary](https://www.webappdiary.com/)

![ogp_image](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3510937/a236be69-1c5c-93e6-cf85-a3e75e19f848.png)

サービス URL:[https://www.webappdiary.com/](https://www.webappdiary.com/)

GitHub URL:[h

元記事を表示

railsでのGraphQLサーバーの構築と周辺ツールのセットアップ手順

# やる事

`rails`アプリケーションで`GraphQL`を開発するための初期構築と周辺ツールのセットアップを行います。

1. `graphql` gem のインストール
1. `graphql-ruby`の初期化コマンド実行
1. `AppSchema`クラスの設定項目の変更
1. `rubocop-graphql`のセットアップ
1. スキーマ情報をファイル出力する`rake task`追加

## 1. `graphql` gem のインストール

`GraphQL`サーバーの構築に`graphql`gemを使います

https://github.com/rmosolgo/graphql-ruby

“`diff:Gemfile
+ gem ‘graphql’
“`

“`bash
bundle install
“`

## 2. `graphql`の初期化コマンド実行

`graphql`gemの機能で`GraphQL`開発のセットアップを行うコマンド`graphql:install`コマンドが`rails generator`として追加されているので使用しま

元記事を表示

Next.js 13 + Ruby on Rails + Dockerの開発環境を構築する

# はじめに

– エンジニア歴半年の備忘録
– いろんな記事を参考に作ってます(マジで感謝)

# やりたいこと

– Next.js 13 + Railsを使ったWebアプリを作りたい
– それをDockerの仮想環境で作りたい

# バージョン

– Ruby 3.2.2
– Rails 7.0.6
– node.js 18
– next.js 13

# 早速構築する

以下のディレクトリ構造をまずは作る。

(SuwaSystemsとは今回作ったアプリの固有名詞です。気にしないで)

“`
SuwaSystems
├── docker
│ ├── db // dbコンテナのマウント先
│ └── redis
│ └── data
├── suwasystems-backend
│   ├── // ここにRails
└── suwasystems-app
└── // ここにNext.js
“`

## Next.jsを入れる

フロントエンド(今回はapp)のディレクトリに移動して

“`jsx
> npx create-next-app –

元記事を表示

【DeviseTokenAuth】SNS認証時にomniauth_external_window.html.erbが表示されない場合の対処法

## 状況
DeviseToeknAuthを使用してSNS認証でログインしたところ`omniauth_external_window.html.erb`が表示されませんでした。

## 対処法

`OmniauthCallbacksController`に以下の記述を追記することで表示されるようになりました。

“`rb
include ActionView::Layouts
include ActionController::Rendering
“`

## 参考

https://github.com/lynndylanhurley/devise_token_auth/issues/1591

元記事を表示

Webアプリケーションとアプリケーションサーバーの比較 / PumaやRackの話も少し

### Webアプリケーションとは
:::note
インターネットなどのネットワークから利用するアプリケーションソフトウェア。Webサーバー上で動作し、ChromeなどのWebブラウザで操作する。
:::

##### ネイティブアプリとの比較
ネイティブアプリは手元の端末にインストールして利用するアプリケーションソフトウェアのこと。Webアプリはプログラム本体がネットワーク上のWebサーバーに保管されるのに対して、ネイティブアプリは手元の端末内で保管される。

### WebブラウザからWebサーバへの接続

:::note
URLは、Webサーバなどで公開されているリソースの場所を示す値。ブラウザにURLを入力すると、そのURLは実際にはWebサーバーのアドレス識別子。
:::

“`
https://example.com/book/text.html
“`
##### URLの解読
||名称|役割|
|:-|:-|:-|
|https|スキーム|利用するアプリケーションを指定する.**http,https**の場合はWebサーバにアクセスする|
|example.com|

元記事を表示

Kubernetesを統合して、Railsアプリケーションをデプロイするチュートリアル

# Docker Desktop for MacにKubernetesを統合して、Railsアプリケーションをデプロイするチュートリアル

Docker Desktop for Macを使用して、ローカルのKubernetes環境にRailsアプリケーションをデプロイする方法を紹介します。

## 目次

1. [環境の準備](#1-環境の準備)
2. [Railsアプリケーションの作成](#2-railsアプリケーションの作成)
3. [Docker化](#3-docker化)
4. [イメージのビルド](#4-イメージのビルド)
5. [Kubernetesのデプロイメントとサービスの作成](#5-kubernetesのデプロイメントとサービスの作成)
6. [アクセス](#6-アクセス)
7. [トラブルシューティング](#7-トラブルシューティング)

## 1. 環境の準備

1. Docker Desktop for Macを[公式サイト](https://www.docker.com/products/docker-desktop)からダウンロードしてインストー

元記事を表示

Rails7+Herokuで「ActiveRecord::ConnectionNotEstablished (connection to server on socket “/var/run/postgresql/.s.PGSQL.5432” 」

# はじめに
個人開発のアプリ制作を始めました。
調べながらの実装になるので、メモとして記載しています。

※注意※
プログラミング学習中の初心者です。
記述に間違いがあれば、ご指摘いただけますと幸いです。

# 環境
Mac M1
Rails 7.0.7.2
Ruby 3.2.0
Node.js 20.2.0
Yarn 1.22.19

# 発生事由
ユーザーの新規登録を実装し、Herokuへpushしたところ、 pushはできましたが、下記のエラー画面が出ました。
Image from Gyazo
Herokuのログ
“`
ActiveRecord::ConnectionNotEstablished (connection to server on socket “/var/ru

元記事を表示

OTHERカテゴリの最新記事