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

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

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と距離をおいた私が再び選択することに決めたワケ

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

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

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

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

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

クラスとは
=

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

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

元記事を表示

《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!》**
と言うエラーが発生してしまいまし

元記事を表示

「プロを目指す人のためのRuby入門」を読んでみた

## はじめに
今回Rubyの学習を進める上で「プロを目指す人のためのRuby入門」を読みました。
初学者が読んだ感想を書いていきたいと思います。

https://gihyo.jp/book/2021/978-4-297-12437-3

## 良かったところ
1. 充実した内容
 第1章から第13章までの537ページに渡りRubyの技術を豊富に学ぶことができます。
本書の全体や進め方についてしっかりと説明されています。

1. 例題の豊富さ
 各章で例題が用意されており実際に手を動かして学ぶことができます。

1. 現場で求められる書き方を学ぶことができる
 現場でよく使う書き方だけでなく、使われなくなった書き方などの細かい技術まで記載されています。

1. 最後まで読み切るコツがあること
 本書は初学者に向けて「頭の中にインデックスを作る」ことを目的に学習することを薦めています。初学者にとっては内容が複雑で、わからない事がたくさん増えることで学習から遠ざかってしまうことも想定されます。そのため学習のハードルを下げて進めて良しとしてくれているところがありがたいです。

## 学

元記事を表示

エラー:SyntaxError circular argument referenceの解決方法

## 【開発環境】
Ruby 2.7.5
Rails 6.1.7.6

### どういう時にエラーが発生したか
秀和システムの「Ruby on Rails 6 超入門」で学んでいます。
進めていく中、「2-6 メッセージボードを作ろう」で「circular argument reference」というエラーが発生。

![スクリーンショット 2023-10-08 19.23.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3568360/14982102-8a26-9d83-4214-849a9ee3a8ea.png)

### エラーの原因
以下のサイトによると、ruby2.2.0以降から、メソッドの引数のデフォルト値に同じ名前の変数を使おうとするとcircular argument referenceというエラーが発生するようです。
https://qiita.com/a_ishidaaa/items/47a8459aa5fe5512871a

### エラーの解決方法
こちらは、キーワード引数

元記事を表示

続・Crystal の小さな本

この本は[「Crystal の小さな本」](https://qiita.com/tadnakam/items/b1c2e32e86135db63c30) の続編で、主に HTTP やネットワーク関連について記載しています。

# Crystal: HTTP モジュール

HTTP モジュールは HTTP::Client, HTTP::Server, HTTP::WebSocket を含むモジュールであり、require “http” をソースに追加することにより、これらのクラスも同時に利用できるようになる。

HTTP モジュールにはそれ以外に若干のメソッドが含まれており、引用符のエスケープと逆エスケープに関するもの、時刻の文字列化とその逆変換および内部処理で使用されると思われるメソッドである。

HTTP モジュールに含まれるエスケープ処理に関するメソッドの使用例を示す。
“`ruby
# http module https://crystal-lang.org/api/1.9.2/HTTP.html
require “http”

qs = %q(\”foo\\bar\”)

元記事を表示

OTHERカテゴリの最新記事