Ruby関連のことを調べてみた

Ruby関連のことを調べてみた

Rubyのモジュールとクラスの違いを徹底解説!実例で学ぶ使い分け

# はじめに
Rubyでプログラミングをしていると、「クラス」と「モジュール」という2つの構造に出会うことが多いです。どちらもコードの整理や再利用に役立つものですが、それぞれ異なる役割を持っています。本記事では、クラスとモジュールの違いを実例を通して解説し、それらの使い分けについて学んでいきます。

# クラスとは?
クラスは、オブジェクト指向プログラミングにおいて「物(オブジェクト)」を作り出すための設計図です。クラスを使ってオブジェクト(インスタンス)を生成し、そのオブジェクトに対して振る舞い(メソッド)を持たせることができます。

### クラスの基本的な例
次に、クラスを使ったシンプルな例を見てみましょう。

“`ruby
class Animal
def initialize(name)
@name = name
end

def speak
“#{@name} says hello!”
end
end

dog = Animal.new(“Dog”)
puts dog.speak # => “Dog says hello!”
“`

#

元記事を表示

エラー発生時にAIが分析・改善提案・issue作成をしてくれるAissue gemを作りました

## この記事はなに?

先日、以下の記事を投稿しました。

https://qiita.com/ysk91_engineer/items/b047c879602d4fb8e62d

公開後、沢山のいいねやストックを頂いてとても嬉しかったです。

僕は普段Rubyで開発しているので、記事で紹介した機能の中から

– エラー発生時にエラー分析と改善コードを生成してGitHub issueに出力する
– 要件を元にコードを生成し、GitHub issueに出力する

をRuby gemにしました。

## 作ったもの

GitHubリポジトリ

https://github.com/ysk91/aissue

Ruby Gem

https://rubygems.org/gems/aissue

## README和訳

機能についてはREADMEが分かりやすいと思うので、和訳をそのまま載せます。
(記事公開当時のREADMEです。)

:::note

# Aissue

Aissueは、生成AIを利用してコード作成のCLIを提供したり、エラーの原因と解決策をissueに記録する機能を持

元記事を表示

Rails の新しいメンテナンスポリシーについて (2024/10/15 (火) 時点)

## この記事は?

– [Ruby on Rails — New Rails maintenance policy and end of maintenance announcements](https://rubyonrails.org/2024/10/15/new-maintenance-policy-and-eol-annouments)

上記の記事の内容を拙訳し、備忘録として残します。

## 最初にまとめ

– 新しいメンテナンスポリシーではリリースのメンテナンス期間が具体的に定められた
– (2024/10/15 (火) 時点で) Rails 7.0.x 以前のバージョンを使用している場合は、なるべく早く Rails 7.1.x 以降のバージョンに更新すること

## 新しいメンテナンスポリシー

### メンテナンスポリシーの概要

Rails のサポートは、現在 3 つのカテゴリーに分かれている。

– 新機能
– Rails は 6 ヶ月ごとに新機能を含むバージョンをリリースすることを目指している
– バグ修正
– マイナーリリースはそのシリーズの最初のリ

元記事を表示

初心者でもわかる!Ruby言語の5つの特徴と魅力

# はじめに
Rubyは、使いやすさとシンプルさを兼ね備えたプログラミング言語で、特にWebアプリケーション開発で人気があります。Rubyを選ぶ理由は数多くありますが、その中でも最も特徴的なポイントを5つに絞って解説します。これからRubyを学びたい方、他の言語と比較したい方に向けて、Rubyの魅力を紹介していきます。

# 1. 人間が読みやすいコードを書くためにデザインされた言語
Rubyの最も大きな特徴は、「プログラマの幸福」を重視して設計されたことです。Rubyのコードは、まるで自然言語のように読みやすく、書きやすいことを目指しています。以下に、簡単なRubyのコードを示します。

“`ruby
# 配列の各要素に1を足す例
numbers = [1, 2, 3, 4, 5]
numbers.each do |number|
puts number + 1
end
“`
このように、複雑な構文がなく、初心者でも直感的に理解できるのがRubyの魅力です。Rubyの文法は非常に柔軟で、余分なカッコやセミコロンが不要なため、読みやすさが向上します。

例えば、同じ操作をJav

元記事を表示

Ruby Silver(Ruby技術者認定試験)合格体験記

## はじめに
Ruby Silverを取得し、それについて記事としてまとめておきたいなと思っていたのですが、ずっとできていなかったのでこのタイミングで記事化しようと思います。
ちなみに取得したのは2023年8月なので1年くらい前になりますが、受験したのはversion 3(Ruby 3)なので、現在受験できるものと同じになります。

## どんな資格?
正式名称は「[Ruby技術者認定試験](https://www.ruby.or.jp/ja/certification/examination/)」です。
その中で、以下の2つがあります。どちらも対象バージョンは`Ruby 3.1.x`です。
– Ruby Association Certified Ruby Programmer Silver(通称、Ruby Silver)
– Ruby Association Certified Ruby Programmer Gold version(通称、Ruby Gold)

そして、Ruby Silverでは以下の内容を問われます。
> Rubyの文法知識、Rubyのクラスとオブジェクト、

元記事を表示

アクセス範囲の制限【備忘録】

今日も今日とて誰の為でもない自分の為だけの記事を書く。

投稿者、ログイン者の見れるサイトを限定する場合
該当するコントローラーの最初に書く(今回はitems)
“`
before_action :authenticate_user!, except: [:index, :show]
#トップページと詳細ページ以外はログインしている人だけしか見れない
“`

ログイン以外の人はトップと詳細ページ以外を見ようとするとコントローラー内の最後に飛んで

“`
def move_to_index
@item = Item.find(params[:id])
unless @item.user == current_user
redirect_to action: :index
end
“`
unlessは投稿者と今のログイン者が同じじゃなかったらトップページに飛ぶ、の意味。

同じコントローラー内でここ大事!
“`
def item_params
params.require(:item).permit(:title, :catch_copy, :im

元記事を表示

link_toでpostメソットがきかなくてなぜかgetメソットになってしまう方への解決策(Rails7)

# Rails7でpostメソットと定義してもなぜかgetメソットとなってしまう!!!!

“`
<%= link_to("ログアウト", "/logout", {method: "post"}) %>
“`
このようにviewのファイルでpostメソットに行くようにを書いて、
下のように、routes.rbでpostメソットと定義して
“`
post “logout” => “users#logout”
“`
実行しても
“`
Routing Error
No route matches [GET] “/logout”
“`
というエラーがでて、なぜかgetメソットとして扱われる!!
progateではこのように教わったのに(クソーーー)!!

# 解決策
turboパッケージをインストールするために、まずGemfileに
“`
gem “turbo-rails”
“`
と書いて、ターミナル上で
“`
bundle install
“`
と書いて、パッケージをインストールする。
(すでに、”turbo-rails”がインストールされている人はスキップ)

次に、v

元記事を表示

【Ruby】初学者向け-メソッドの基本について②

本記事ではメソッド周辺・オブジェクト周辺の文法についてまとめていきます。

まずメソッドについておさらいをします。

**メソッド**
…Rubyにおけるメソッドとは、特定の動作や処理を定義した一連のコードをまとめたもの。
 メソッドを使用することで、コードの再利用ができ、可読性・保守性を向上させることができる。
(→使いたい処理を部品化して簡単に使いまわしができるようにするよ。)

**メソッドの特徴**
・定義
 …defを使用してメソッドを定義する

・呼び出し
 …定義したメソッド名をコード内で記載して呼び出す

・引数
 …メソッドとその呼び出し元の間でやり取りされる、処理に必要な値
      仮引数:メソッド内で定義する仮の引数
          (→数学でいうところのx、yとかのイメージ)
      実引数:メソッドの呼び出しもとで設定する引数
          (→数学でいうところの「代入する値」のイメージ)

・戻り値
…メソッド内の最後の処理によって

元記事を表示

【Ruby】継承とmoduleの使い分け

# はじめに
こんにちは、progateでRubyを勉強したのち「ゼロからわかるRuby超入門」を勉強しています。
その中でもスーパークラスの要素を子クラスに引き継ぐ継承と、`module`の両方を勉強すると、「`module`なくても継承だけでよくない?」と思うようになったのでその違いや使い分けについて本日は解説していきたいと思います

# 継承とは
継承は、あるクラスが他のクラスの属性やメソッドを「引き継ぐ」仕組みです。
サブクラス (子クラス) がスーパークラス (親クラス) のすべてのメソッドや変数を継承し、必要に応じてオーバーライドすることができます。
継承の特徴は以下の通りです
* Rubyでは1つのクラスしか継承できない
* クラス間に明確な親子関係があり、サブクラスはスーパークラスのすべての機能を継承する
* サブクラスで親クラスのメソッドを上書きできる(オーバーライド)
* スーパークラスのインスタンス変数や状態も引き継がれる

では、継承はどのような場合に使うのでしょうか
* 自然な親子関係があるとき
たとえば、「犬」や「猫」などの動物が「動物」という概念に含まれる

元記事を表示

【Ruby】初学者向け-メソッドの基本について①

本記事ではメソッドの基本的な文法と使用方法をまとめています。

目次
・メソッドの定義方法
・キーワード引数

メソッドについて

**メソッドの定義方法**

“`ruby:example_1.rb
def <メソッド> <引数リスト>
# ここに処理を記述
end
“`

引数リストは「()かっこ」をつけることも、省略することもできる

“`ruby:example_2.rb
a = 1
b = 2
def test a,b
a + b
=> 3
end
“`
一番最後に行われた処理が結果(返り値)となる
上記のように定義したメソッドは、メソッド名を記述して呼び出すことができる。

def式で指定する引数は「仮引数」と呼ぶ

メソッドに引数が設定されている場合は、メソッド名に続いて引数を設定して呼び出す。
メソッドを実行する際に記述する引数を「実引数」と呼ぶ。

“`ruby:example_3.rb

# メソッドの呼び出しと実引数の設定
test(3,4)

# 呼び出されたメソッドにて、設定された実引数をもとに処理を行う。

元記事を表示

Rubyメタプログラミング入門:Railsでの活用例とともに解説

# はじめに
Rubyを使った開発を行っていると、「メタプログラミング」という言葉を耳にすることがあるかもしれません。Rubyのメタプログラミングは、非常に強力で柔軟な機能を提供しますが、最初は理解しづらいこともあります。本記事では、Rubyのメタプログラミングについて、コード例を交えながら解説し、さらにRailsでの具体的な使用例を紹介します。

# メタプログラミングとは?
メタプログラミングとは、プログラムが他のプログラムや自身を動的に変更・生成する技術を指します。Rubyは動的な言語であるため、実行時にメソッドを生成したり、クラスの振る舞いを変更することが可能です。これにより、冗長なコードを削減し、開発をより効率的に行えるようになります。

# 1. 基本的なメタプログラミングの例
### “`define_method“`を使った動的メソッド生成
“`define_method“`を使うと、メソッドを実行時に動的に定義することができます。以下は、複数のメソッドを一度に動的に生成する例です。

“`ruby
class Greeting
[:hello, :goo

元記事を表示

エラー発生→解決済【備忘録】

今日困ってやっと解決した件

”’class PrototypesController < ApplicationController before_action :authenticate_user!, except: [:index, :show] #トップページと詳細以外はログインしている人だけ before_action :move_to_index, only: [:edit] def index @prototypes = Prototype.includes(:user).order("created_at DESC") end 省略 def prototype_params params.require(:prototype).permit(:title, :catch_copy, :image, :concept).merge(user_id: current_user.id)♯prototypeはid要らない。userだけmergeする。 end def move_to_index @prototype = Prototype.

元記事を表示

【Ruby】初学者向け-言語基礎②

今回は汎用性の高い文法についてまとめていきます。

目次
・三項演算子について
・擬似変数について
・case文について
・ヒアドキュメントについて
・Rangeオブジェクトについて

【三項演算子について】

三項演算子とは「条件式?式1:式2」という記述で表される演算子のこと

条件式に一致する場合は「式1」、条件式に一致しない場合は「式2」を結果とします

“`ruby:example_1.rb
a = true

# aがtrueである場合は1、そうでない場合は2を結果とする
a = true ? 1 : 2

# aを出力
p a

# aはtrueであるため1が出力される
=> 1
“`

【擬似変数について】

**擬似変数**
…特定の状況で特別な意味を持つ変数のこと。
| 変数名 | 内容 |
|:———–|:————|
| true | TrueClassのインスタンス |
| false | FalseClassのインスタンス |

元記事を表示

Ruby Silver 試験対策メモ

Ruby Silver (正式名称:Ruby Association Certified Ruby Programmer Silver version 3) の試験に向けた勉強メモです。

Ruby Silver受験を考えている方の参考になれば幸いです🤗

## 試験の概要

– 試験時間:90 分
– 試験方法:コンピュータ試験(CBT:Computer Based Testing)
– 問題数(方式):50 問(選択式)
– 合格ライン:75 %
– 対象バージョン:Ruby 3.1.x
– 出題範囲
– 文法
– コメント
– リテラル(数値、真偽値、文字列、文字、配列、ハッシュ等)
– 変数/定数とスコープ
– 演算子
– 条件分岐
– ループ
– 例外処理
– メソッド呼び出し
– ブロック
– メソッド定義
– クラス定義
– モジュール定義
– キーワード引数

元記事を表示

mysql2 (0.5.3) がインストールできなかった時の対処法

##### 下記のコマンドで解決しなかった人受けの記事です
“`
$ bundle config –local build.mysql2 “–with-ldflags=-L/usr/local/opt/openssl@3/lib –with-opt-dir=/usr/local/opt/zstd
$ bundle install
“`

この方法で解決することも多いですが、私の場合は解決しませんでした。

## 最終的な解決方法

##### 最終的には Ruby の再インストールを行うことで問題が解決しました。

この方法で解決できたので、同じような問題に遭遇した方は試してみてください。

## まとめ

Ruby 2.7.3 で `mysql2` (0.5.3) のインストールに失敗した場合、まずは以下のコマンドを試してみましょう。

“`
$ bundle config –local build.mysql2 “–with-ldflags=-L/usr/local/opt/openssl@3/lib –with-opt-dir=/usr/local/opt/

元記事を表示

[Rails] Active Recordの関連付け

## はじめに

Ruby on Rails における Active Record の関連付けは、データベース内のテーブル間の関係を簡単に表現する方法です。この記事では、Rails の主要な関連付けタイプについて解説します。

## なぜ関連付けを使うのか?

関連付けを使用する主な理由は以下の通りです:

1. コードをシンプルに保つ
2. データベースの操作を簡単にする
3. モデル間のつながりを分かりやすくする
4. 共通の操作を一貫して行える

## Rails の主要な関連付けタイプ

Rails では以下の 6 種類の関連付けがあります。それぞれを日常生活の例を使って説明していきます。

### 1. `belongs_to`(〜に属する)

`belongs_to` は、「このモデルは他のモデルに属している」という関係を表します。

例:生徒は学級に属している

“`ruby
class Student < ApplicationRecord belongs_to :classroom end class Classroom < ApplicationRecord

元記事を表示

エラー発生→解決

備忘録として、こんな事で悩んでたなーと将来見返すときの為に記述します。

エラーコード
ActiveModel::UnknownAttributeError in PrototypesController#create
unknown attribute ‘prototype_id’ for Prototype.

今までできていた新規投稿が出来なくなった。
createアクションの記述が間違い?

訂正前
def prototype_params
params.require(:prototype).permit(:title, :catch_copy, :image, :concept).merge(user_id: current_user.id, prototype_id: params[:prototype_id])
end

訂正後
def prototype_params
params.require(:prototype).permit(:title, :catch_copy, :image, :concept).merge(user_id: current_u

元記事を表示

Ruby sort_by でソートの基準を設定

# はじめに
本記事はRuby初心者が備忘録として作成したものとなっております。間違い等ありましたら、指摘していただけると幸いです。

## sort_byメソッドとは?
ソートの基準を自由に設定するができ、より複雑なコレクションの並び替えが可能になる。
sort、sort_byはどちらも配列をソートするメソッドですがsort_byのほうが処理が速いそうです。

“`:Ruby
books = [
{name: “Book2”,price:1000},
{name: “Book1”,price:500},
{name: “Book3″,price:2000}
]

sort_book = books.sort_by{ |book| [book[:price],book[:name]] }

puts sort_book

【実行結果】

{:name=>”Book1″, :price=>500}
{:name=>”Book2″, :price=>1000}
{:name=>”Book3”, :price=>2000}
“`

降順ソートをしたい場合は `-` を

元記事を表示

【Ruby】初学者向け-言語基礎①

Stringについて学んだことを整理しました。

Stringに使用するメソッド一覧

**upcase**
…小文字の文字列を大文字にする
<使用例>

test = 'test'
test.upcase
    =>TEST

—————————-
**downcase**
…大文字の文字列を小文字にする
<使用例>

test = 'TEST'
test.downcase
    =>test

—————————-
**slice**
…文字の切り分けを行う
<使用例>

test = 'あいうえお'
 test.slice(1,2)
  => "いう"

—————————-
**size**
…文字の大きさを確認する
<使用例>

test = 'あいうえお'
 test.size
  => "5"

—————————-
**to_i**
…文

元記事を表示

Vimerの開発スピードに勝つ為のVSCode拡張機能開発

結論から言うと勝てはしないと思う。
しかし、私は自作のVSCode拡張機能を開発して実際に今の開発チームに使用してもらって、開発効率をかなり上げた。

今回は開発した拡張機能の紹介と簡単に作り方を紹介します。
見ていただけた方達の開発効率の助けになれば思います。
実務でRailsを使用しているのでRuby寄りの機能もありますが、考え方は他の言語でも同じだと思います。

まずgenerator-codeをグローバルインストールします。これをYoemanで使用するとVS Code拡張のプロジェクトの雛形を生成できます。
“`bash
npm install -g yo generator-code

“`

“`bash
yo code

_—–_ ╭──────────────────────────╮
| | │ Welcome to the Visual │
|–(o)–| │ Studio Code Extension │
`———´ │ generator!

元記事を表示

OTHERカテゴリの最新記事