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

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

【超簡単!】RailsアプリでOGPを動的に変更する方法

# はじめに
こんにちは、プログラミングスクールRUNTEQにて、未経験からエンジニア転職を目指して学習中の[すずゆー](https://twitter.com/suzuyu_0115)と申します。

今回はRailsでのWebアプリ開発において、OGPをページ毎に変化させる方法について説明していきます!
「SNSシェアする時に、投稿やページに応じて画像が変化するようなアプリを作りたい」「でもやり方がわからない…」
そんな方に初心者目線で分かりやすく伝わるように書かせていただきました。

今回は解説にあたって、私の作成したWebアプリをベースに説明させていただきます。

https://meshitelog.com

[GitHubはこっち](https://github.com/suzuyu0115/meshitelog)

また、上記のサービスについて詳しくまとめている記事もございますので、お暇な方は拝見していただけると大変嬉しいです✨

https://qiita.com/suzuyu0115/items/6ca6ce071d0379467459

# OGPとは
###

元記事を表示

コメントを投稿機能の流れと注意点

“`ruby
def show
@prototype = Prototype.find(params[:id])
@comment = Comment.new
@comments = @prototype.comments.includes(:prototype)
end
“`

①まず初めにshowアクションにて@commentに空のインスタンスを生成

※ @prototypeは詳細画面を表示する情報があらかじめ入っていってshowのviewファイルに渡されるている。

②@commentsに@prototypeに結びついた全てのコメント情報とそれに結びつくユーザー情報を代入しshowのviewファイルに送る。

“`ruby

<%= @prototype.title %>

元記事を表示

ぼっち演算子について(&.)【self, レシーバについても触れてみる】

## はじめに
現在、プログラミングスクールにて、主にRubyやRuby on Railsを勉強している者です。
Railsのコードの中で、ぼっち演算子を見かけた際に、調べれば調べるほどRubyへの理解が乏しいと感じたため、記事にさせていただきました。

## ぼっち演算子とは
ぼっち演算子(セーフナビゲーション演算子とも呼ばれる)とは、「&.」という記号で表されるRubyの演算子となります。この演算子を使用することで、オブジェクトがnilの場合にメソッド呼び出しを安全にスキップすることができます。
ちなみに、ぼっち演算子はRubyの2.3から実装された機能です。

## 安全にスキップできるとは?
Rubyでは、オブジェクトに紐づいたメソッドを呼び出そうとしたとき、そのオブジェクトがnilだった場合にNoMethodErrorという名前のエラーが発生します。
ぼっち演算子を使用することで、そのオブジェクトがnilだった場合に、紐づいたメソッドを実行することなく、nilを返すことができ、NoMethodError になることを防いでくれます。

### NoMethodErrorの例(

元記事を表示

Railsを使ったファイルアップロード処理方法

### Rails Active Storageの使い方ガイド

Ruby on Railsには、ファイルアップロードを簡単に扱うためのモジュールとして`Active Storage`が提供されています。この記事では、`Active Storage`を使ってファイルアップロード機能をRailsアプリケーションに組み込む方法を解説します。

#### 1. 必要なGemのインストール

まず、`Gemfile`に`active_storage`を追加します。Rails 5.2以降であれば、デフォルトで`active_storage`はGemfileに含まれていますが、それ以前のバージョンや特定の理由で含まれていない場合は以下のように追加します。

“`ruby
gem ‘activestorage’, ‘~> 5.2’
“`

追加したら、以下のコマンドを実行してgemをインストールします。

“`bash
bundle install
“`

#### 2. Active Storageのインストール

次に、以下のコマンドを実行してActive Storageの必要なファイル

元記事を表示

Scaffoldを複数使ってみた

# はじめに
はじめまして。今回初めて記事を書きます。にゃこすと申します。よろしくお願いいたします。
今回のテーマは「Scaffoldを複数使ってみた」です。
Scaffoldはプログラミング学習を始めてかなり序盤に学習したので、現役エンジニアの方が思いつかない発想かもしれないなと思い、記事を書いてみます。
※初学者による記事のため正確性に欠ける場合があります。記事についてお気づきの点がございましたらご指摘いただけますと幸いです。

# scaffoldって?
“アプリケーションの基本的な機能の一覧(index)、詳細(show)、新規作成(new/create)、編集(edit/update)、削除(destroy)するために必要なコントローラ、モデル、ビューをまとめて生成”できる便利なコマンドです。
–引用元 [Railsドキュメント](https://railsdoc.com/page/rails_scaffold)

# なんでScaffoldを複数使おうと思ったの?
Webアプリを作成している際に、タスク管理アプリも掲示板アプリも欲しい!!となった

元記事を表示

【Rails】OGPを設定したのにX(旧Twitter)で反映されない時に試すといいかもしれないこと!

# はじめに
お疲れさまです!
おおくまです!

“Rails“で実装した“Webアプリ“に“OGP“を設定したのですが、“X(旧Twitter)“でなかなか反映されず、「設定が間違っているのかな?」と、とても試行錯誤しました!
~~気付けば2日ほど溶かしました。笑~~
しかし、**あること**を試すと解決しました!
その際の備忘録になります!

# 環境
:::note
Ruby 3.2.2
Rails 7.0.8
gem meta-tegs を用いてOGP設定済み
:::

# 注意点
:::note warn
私はプログラミング学習中で、初学者です!
内容に誤りがある場合があります!
コメント等で教えていただけると幸甚です!
:::

# 試してもダメだったこと

・“キャッシュ“を削除する
・“OGP“を何度も設定し直す
・[OGP確認ツール](https://rakko.tools/tools/9/)で確認する(こちらできちんと表示されていれば、いずれ反映されると思います!)

# クロール
皆さんは、“クロール“をご存知でしょうか!
“クロール

元記事を表示

RUNTEQに入って5ヶ月で1500時間学習してみた【学習記録のまとめ】

# はじめに
はじめまして!
`RUNTEQ`に入学してから**5ヶ月**が経過しました。
**5ヶ月で1500時間**学習したので、改めて学習内容をまとめていきたいと思います。

1000時間までのまとめに関してはこちらをご覧ください。

https://qiita.com/keisuke_sakuma/items/57ac6d1a41e537f76180

# 学習分野

1500時間の中で以下のような分野を学習しました。
– Ruby
– Ruby on Rails
– JavaScript
– GitHub
– SQL
– DB設計
– Linux
– Docker
– React
– TypeScript
– Next.js

# 内訳
学習分野のそれぞれの内訳は以下のようになります。
理由については後述します。
![スクリーンショット 2023-10-11 20.50.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2517817/094dd787-2fc0-6d23-4cd6-58d8

元記事を表示

【Ruby on Rails】ルーティングの:asについて

## 自己紹介
はじめまして、はると申します。現在はスクールに通いながら学習をしています。
今回、スクール内の企画で[技術記事を書いてみんなでアドベントカレンダーを完成させよう!Advent Calendar Challenge](https://advent-calendar-challenge.onrender.com/)という、
初めての方も技術記事を書いてみよう!という趣旨の企画に参加させていただきました。
この機会に、苦手なまま放置していたところを理解しようと思い、記事にまとめました。
(他の方の記事も上記リンク先から見れるようになっているようです?)
 
## 概要
Ruby on Railsのルーティングで出てくる`:as`について、何の必要があってどういう時に使うのか?
ルーティングを学習する中で、オプションが沢山出てきてごちゃ混ぜになっていたので、
整理しながら学習しまとめてみました。
初学者のため、間違っている箇所もあるかもしれませんのでその際は教えて頂けると嬉しいです?
(一部GPTからの情報もあります)
 
## ルーティングに関する用語
ルーティングに関する用

元記事を表示

Rspec ざっくりチートシート

# Rspec チートシート

## 0. 前提要件
テストを始める前に、以下の要件が満たされていることを確認しましょう。

– **Railsプロジェクト**: Rspec-railsはRailsのプロジェクト専用のgemです。新しいRailsプロジェクトは`rails new [プロジェクト名]`で作成できます。
– **Bundler**: Rubyの依存関係管理ツール。`Gemfile`に記述されたgemをインストールする際に使用します。Railsをインストールすると、Bundlerも一緒にインストールされます。

次に、RSpecのインストールや基本的なコマンドなどの情報をチートシートとしてまとめます。

## 1. セットアップ

“`ruby
# Gemfileに追加
gem ‘rspec-rails’, group: :development, :test

# Rspecをインストール
$ bundle install
$ rails generate rspec:install
“`

## 2. Userモデルのテスト
expect文でuserがvalid?メ

元記事を表示

Railsを避けていた私がRails神じゃんとなったワケ

![bandicam 2023-10-09 19-35-46-799.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/810513/be8a5af6-5fc3-7521-24ff-72f63e7a5001.jpeg)

# はじめに

こんにちは!!@Sicut_studyです!

いきなりですが、、、

### つい先日まで私はRailsと距離をおいていました

そんな私が、最近とあることをきっかけに

### Railsで久しぶりに何かサービスを作りたい!!!!!

と改心する瞬間があったのでその時のお話をしたいと思います。
人生を変える瞬間は記事として残しておくと誰かの考えを変えるきっかけになるかもしれません

この記事では、Railsがよい悪い、使いやすい使いやすくないという話ではなく、心変わりする瞬間はいきなりくるというのを趣旨に書きました。
また、私自身まだまだ学習段階なので、内容が正しくないこともあるかと思いますのでご了承

元記事を表示

jemallocでSidekiqのメモリリークを止める

この記事は
===

* SidekiqをDocker環境で安定稼働させるためのメモです

困っていたこと
===

* [Sidekiq](https://github.com/sidekiq/sidekiq)は便利なワーカサーバなのですが、長時間起動しているとメモリリークしていく特性があります
* [sidekiq-worker-killer](https://github.com/klaxit/sidekiq-worker-killer)など、無理やり再起動をかますライブラリも存在するのですが、Dockerとの相性が悪くコンテナが終了してしまうので、今っぽい環境ではうまく使えません

原因
===

* そもそもメモリの断片化が原因らしく、Sidekiqの問題というかRuby自体の問題のようです
* pumaも放っておくとどんどんリークするから、[puma-worker-killer](https://github.com/zombocom/puma_worker_killer)は必須ですもんね・・・

jemalloc
===

* これを解決できるのが[jemalloc](h

元記事を表示

transactionの処理の流れについて調べてみた!

# Transactionとは
ChatGPT
>トランザクション(Transaction)は、データベースにおける一連の操作をまとめて、それらがすべて成功することを保証するための仕組みです。トランザクションは、データベースの整合性を保つために非常に重要な役割を果たします。

# railsにおけるTransactionについて調べてみた!

Railsでトランザクションを使用する場合は、トランザクションの範囲を
ActiveRecord::Base.transactionブロックで囲む必要がある。

“`ruby
ActiveRecord::Base.transaction do
# ここに処理を書く
end
“`

transactionブロック内で例外が発生した場合、ブロック内で行われたデータベース更新処理が全てロールバックされる。

# 注意点

transaction内でrescue句を書くとロールバックされない。
理由は、Railsに実装されているtransactionメソッドで、transactionブロックに対して例外が発生した場合に、rescueしてロールバ

元記事を表示

【Rails7】seedファイルへ画像を追加(ActiveStorage使用)

タイトル通り、ActiveStorageを使用してseedファイルへ画像の追加を行っていきます。

記事を書いている私の状況としては

ECサイトをbootstrapのテンプレートを使用して開発中。

データベースへ反映(追加)したデータをrailsのviewで確認が取れるまで行えました。

# 環境

Dockerで作成したコンテナの内部でRailsを動かしていきます。

基本的にコンテナ内部でrails cを使用してデータの中身を確認しつつ進めていきます。

# 細分化して考える

ペアプロしていただいたHCメンバーの方から「何事も細かく切り分けて行う」癖をついてた方がいいとアドバイスをいただきました。

特に初めて触るorあまりよくわかっていないもので「〇〇をする」というのはハードルが高い。

高いハードルはまずは細かく切り分けてアプローチのかけ方を変えた方が実践的かつ良質な経験値と時間を得られることを教えていただきました。

## 画像の表示に係るプロセス

今回は「画像を表示させる」のがゴールです。

そこで、漠然としてしまっている途中のプロセスを明確にして作業を進めます。

元記事を表示

【Ruby on Rails】rails-erdでテーブル構造をER図で見れるようにしたい

# はじめに
どうしてもテーブルが多くなってくると`schema.rb`だと見づらくなり、テーブルの関連性を理解するのに時間がかかってしまいます。
そこで`rails-erd`という`gem`を使うと**ER図**を出力できるそうなので、試してみました!
# 実装環境
– Ruby 3.2.2
– Ruby on Rails 7.0.7
– Homebrew

# 導入手順

“`terminal
brew install svn
“`

“`terminal
brew install graphviz
“`
::: note warn
“`
brew install graphviz
“`
実行時に下記のエラーが出たので、`svn`も同時に読み込んでいます。
“`ruby
You must: brew install svn
Error: graphviz: Failed to download resource “netpbm”
Failure while executing; `/usr/bin/env svn checkout https://svn.cod

元記事を表示

M1 Macでpsychがインストールできない問題と解消法

## 私のOS状況
– M1Macを使用
– CPUアーキテクチャはarm64
“`zsh
$ uname -m
arm64
“`
## エラー状況
RailsをAPIモードで作成しようと以下のコマンドを実行
“`zsh
rails new uber-eats-like –api
“`
すると
“`zsh
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

checking for yaml.h… yes
checking for yaml_get_version() in -lyaml… no
libyaml not found
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
ne

元記事を表示

erbファイルでTailwind CSS IntelliSenseのコード補完機能を使えるようにする

初めまして。RUNTEQというスクールで学習をしている、たかぎと申します。

Tailwind CSS IntelliSenseというvscodeの拡張機能をインストールすることで、htmlファイルではTailwindCSSのクラスの自動補完をすぐに使えたのですが、erbファイルだと設定をしないと使えないようです。
これについての記事があまりなかったので、説明しようと思います(私も教えていただいたものですが)。

設定は簡単です。
以下のコードをsetting.jsonに追加するだけです。

“`setting.json
“tailwindCSS.includeLanguages”: {
“erb”: “html”
}
“`

公式に載っていたのですが、私はqiitaの記事ばかり探してしまいました。なっさけない。
https://marketplace.visualstudio.com/items?itemName=bradlc.vscode-tailwindcss

以上です。あざした。

元記事を表示

Railsのローカル環境にHTTPSとカスタムドメインを導入!10分でOK!

## はじめに
ローカル認証局(CA)の機能を提供する**mkcert**を使用して、MacOSのローカル環境でHTTPSとカスタムドメインを導入してみましょう!

## mkcertの設置
**brew**を利用してパソコンに**mkcert**を設置します。
“`shell
brew install mkcert
“`

## 認証局(CA)の設置
**mkcert**のコマンドを利用してMacOSにローカル認証局(CA)のルート証明書を設置します。
“`shell
mkcert -install
“`

## SSL証明書
**`config/ssl`** ディレクトリにSSL証明書とプライベートキーを生成します。
“`shell
# Railsプロジェクトのルートディレクトリで実行
mkdir -p config/ssl && cd $_ && mkcert “*.custom_domain.localhost”
“`

## Rails環境構成の変更
**`config/environments/development.rb`** ファイルにカスタムドメインを追加

元記事を表示

【WIP】Rails7.1での変更点

こんにちは。プログラミングスクール[Happiness Chain](https://happiness-chain.com/)でメンターをしているryoです。
今回は、最近リリースされたRails7.1の変更点に関して、記載していきます。

※以下公式リリースノートの和訳と、個人的な感想を少し記載しています。

https://rubyonrails.org/2023/10/5/Rails-7-1-0-has-been-released

※ こちら執筆途中になりますので、ご了承ください。

## Railsアプリ新規作成時に、Dockerfileの自動生成

`rails new sample-project`をすると以下のDockerfileが自動生成される。

“`Dockerfile
# syntax = docker/dockerfile:1

# Make sure RUBY_VERSION matches the Ruby version in .ruby-version and Gemfile
ARG RUBY_VERSION=3.2.2
FROM registr

元記事を表示

オブジェクト指向とは(初心者向け)

転職活動中にオブジェクト指向について聞かれ、
うまく答えることができなかったので、理解を深めるための記録です!

オブジェクト指向とは
=
「属性(構成するデータ)」と「メソッド(指示に対する振る舞い)」を1つにまとめた「オブジェクト」の定義ごとに「クラス」を分類し、そのクラス同士を組み合わせてシステムを組み立てる考え方のこと。

、、、???
という感じだと思います笑(何を隠そう私がそうです)

この考え方を車に例えて説明をすると、

属性とは、モノ(オブジェクト)が持っているデータのことで、「色」、「メーカー」、「車種」など
メソッドとは、モノ(オブジェクト)が持っている処理のことで、「前進する」「止まる」「バックする」などのこと

次に「クラス」について説明していきます。

クラスとは
=

データと処理をひとつにまとめたもの。
オブジェクトのもつ性質ごとに分類したものとも言い換えることができます。
モノ(オブジェクト)の設計書のようなモノです。

今回の車で例えると、下記のようになります。
「」に入っているものは全てオブジェクトです。
ーーーーーーーーーーーーーーーーーーーーー

元記事を表示

《No Ransack::Search object was provided to search_form_for!》の対処方法

# はじめに
皆さん、お疲れ様です。
今回、”Ransack” Gem を用いた検索機能の実装を行なっている際にとあるエラーが発生し、数時間溶かしてしまったので、備忘録として技術記事を作成しました。
もし同じエラー内容が発生している方は、是非今回の記事内容を解決の糸口として活用していただければと思います…!

# 概要
今回、《Ruby on Rails》を用いた投稿掲示板アプリにて、検索機能を”Ransack” Gem を用いて実装していました。
検索機能の実装内容としては、 **『ヘッダー部分に投稿に関する検索フォームを実装、検索を行うと投稿一覧画面に検索フォームに入力したワードに関する投稿のみを表示する。』** と言うシンプルな検索機能です。

しかし、この検索機能を実装後に実際に検索を掛けて投稿を絞った後、各投稿の詳細画面にアクセスしようとしたところ…
**《ArgumentError in Posts#index No Ransack::Search object was provided to search_form_for!》**
と言うエラーが発生してしまいまし

元記事を表示

OTHERカテゴリの最新記事