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

Ruby関連のことを調べてみた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 %>

元記事を表示

フレームワーク「Spin」を簡単に触ってみた

# はじめに
以前、[こちらの記事](https://qiita.com/Takaharu_01/items/fac8829bebd59c441308)でruby.wasmを少し触っていたこともあり、wasm関係で「Spin」というフレームワークが存在することを教えていただいたので、どんなものなのか少し調べてみました!

# Spinって何?
[こちらの記事](https://dev.classmethod.jp/articles/wasm-spin/)から抜粋させていただきます。
SpinとはWebAssemblyを使用するイベント駆動型フレームワーク。
SpinはWebアプリ用のフレームワークで、
HTTPリクエストに対してレスポンスを返すWASMモジュールを
作成するためのインターフェイスを提供する。
とのことです。

# Spinを触ってみる
Spinのサポート言語の中にRubyがあったので、Spinを使用してRubyファイルの動かしてみようと思います。

## Spinのインストール
[こちらの記事](https://zenn.dev/shinyay/articles/hel

元記事を表示

ぼっち演算子について(&.)【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の必要なファイル

元記事を表示

Rubyのプログラムを実行する際にオプションを指定して引数を渡す方法。【optparseの使い方]

optparseの使い方について自分なりにまとめてみました。

## はじめに

Rubyで作成したプログラムを実行する際に引数を渡して実行したい場合

“$ sample.rb hello“

のような形で実行するとプログラム内で配列ARGVで引数を使うことができます。
## optparseでオプションを指定する
上記のようなやり方の他、optparseという標準ライブラリを使うことで引数の前にオプションを指定して実行する方法があります。
“$ sample.rb -m hello“
みたいな感じです。“-m“がオプションになります。

### この方法を使うメリットとして
– オプションによって引数が何を意味をするのかがわかりやすくなる。(バージョンを引数にしたい場合オプションを“-v“にするなど)
– 引数が複数ある場合、通常のやり方だと定義した順番に引数を記述しないといけないが、オプションで指定する場合、順番を気にしなくて良い。

### optparseの使用方法

以下利用方法になります。

#### 1. プログラム内にoptparseを読み込む
`

元記事を表示

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

元記事を表示

Rubyのeach文について

# はじめに

#### ※以下の内容には誤りが含まれる可能性があります

# each文とは何か

each文つまりeachメソッドは、配列またはハッシュの要素を1

つずつ取り出し、ブロック構文その要素を使った処理を記述できるメソッドです。

# eachメソッドの文法

“`
配列.each do |変数|
処理
end
“`

“`
array.rach do |element|
putus element
end
# eachメソッドの返り値
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
“`

配列の要素を順に||内で取り出し、続く処理で変数を用いたプログラムを記述します。

# まとめ

– eachメソッドは、配列の要素を1つずつ取り出してくれるメソッド
– 取り出した要素に対して処理をすることができる

元記事を表示

moduleのselfのclassの定数を外部から参照する

# これを参照したい
moduleのselfのclassの中にある定数を参照したい
“`ruby
module Service
class << self # バケット名 BUCKET_NAME = ENV['BUCKET_NAME'] || "bucket-dev" ``` # 結論 singleton_classを間に挟む。 ```ruby Service.singleton_class::BUCKET_NAME ``` # こんなことしなくても module直下に書けば`Serive::BUCEKT_NAME`で参照できます。 ```ruby module Service # バケット名 BUCKET_NAME = ENV['BUCKET_NAME'] || "bucket-dev" class << self ```

元記事を表示

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

元記事を表示

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

以上です。あざした。

元記事を表示

【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つにまとめた「オブジェクト」の定義ごとに「クラス」を分類し、そのクラス同士を組み合わせてシステムを組み立てる考え方のこと。

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

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

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

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

クラスとは
=

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

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

元記事を表示

OTHERカテゴリの最新記事