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

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

初学者がオブジェクト指向について説明してみる。

# 前書き
プログラミングを学ぶ上で必ず通るであろう、オブジェクト指向について自分なりにまとめてみました。
間違っている部分もあるかもしれませんが、読んでいただけると幸いです。
# 目次
 ・オブジェクト指向が生まれた背景
 ・RPGを例にオブジェクト指向を説明
 ・まとめ

# オブジェクト指向が生まれた背景
まずは生まれた背景について説明します。テクノロジーの発展によりコンピューターの性能があがり、大規模な開発が可能になり大量のソースコードを書くことが増えました。大量のソースコードと扱う問題点として以下のようなものが挙げられました。

  ・プログラムを一箇所だけ変えたいのに他のコードも合わせて変えないといけない
  ・コードが長く新しいメンバーがわかりずらい
  ・テスト時間が増え開発にコストがかかる

このような問題を解決するために独立性、再利用性、拡張性を持ったオブジェクト指向という考えが広まった。

# RPGを例にオブジェクト指向を説明
オブジェクト指向を一言で表すと「情報空間の概念すべてをオブジェクトと捉え、管理すること」だと思っています。
これだと抽象的で分かりにく

元記事を表示

Railsでreadonly属性が設定されたinputにおいて、プルダウンが操作可能な問題への対処法

※この記事は僕がぶち当たった問題をとりあえずChatGPTくんに丸投げしてライティングしてもらったものです。

# はじめに
Railsアプリケーションでinput要素をreadonlyに設定することは、フォームの入力を無効にし、特定の値を表示する場合などに一般的です。しかし、readonly属性を持つinput要素にもかかわらず、プルダウンが選択できてしまうという問題が発生することがあります。

この記事では、そのような問題が発生した場合の対処法について解説します。

# 問題の再現
まず、問題を再現してみましょう。以下は、readonly属性を持つinput要素とプルダウンが含まれる簡単なフォームの例です。
“`erb
<%= form_for @model do |f| %>

<%= f.label :name %>
<%= f.text_field :name, readonly: true %>
<%= f.label :status %>

元記事を表示

Ruby芸160チャレンジ(#22)配列同士を組み合わせた要素生成とランダムシャッフル

## この記事は何
[shellgei160を通じて言語習得 Advent Calendar 2023](https://qiita.com/advent-calendar/2023/learning-via-shellgei160)に参加しています。

書籍「シェル芸ワンライナー160本ノック」の例題をRubyで解いてみて、Rubyの学習に役立てようとするものです。

例題はこちらのリポジトリで公開されているものに限ります。
https://github.com/shellgei/shellgei160

## 実行環境など
– Docker image: ruby:3.0.2
– 上記リポジトリをクローンした上で、リポジトリのルートディレクトリ直下に`answer-ruby`ディレクトリを作り、その中に解答となるファイルを作成していきます。

## 今回のテーマ
https://github.com/shellgei/shellgei160/blob/master/answer/22.md

“`bash
$ echo {mail,blog,eng,www,help,sub,ns

元記事を表示

Ruby芸160チャレンジ(#21)再帰探査&ディレクトリを含めない

## この記事は何
[shellgei160を通じて言語習得 Advent Calendar 2023](https://qiita.com/advent-calendar/2023/learning-via-shellgei160)に参加しています。

書籍「シェル芸ワンライナー160本ノック」の例題をRubyで解いてみて、Rubyの学習に役立てようとするものです。

例題はこちらのリポジトリで公開されているものに限ります。
https://github.com/shellgei/shellgei160

## 実行環境など
– Docker image: ruby:3.0.2
– 上記リポジトリをクローンした上で、リポジトリのルートディレクトリ直下に`answer-ruby`ディレクトリを作り、その中に解答となるファイルを作成していきます。

## 今回のテーマ
https://github.com/shellgei/shellgei160/blob/master/answer/21.md

“`bash
$ find -type f | grep -v “\./dir_b/d”

元記事を表示

Ruby芸160チャレンジ(#20)ファイル名の一覧表示

## この記事は何
[shellgei160を通じて言語習得 Advent Calendar 2023](https://qiita.com/advent-calendar/2023/learning-via-shellgei160)に参加しています。

書籍「シェル芸ワンライナー160本ノック」の例題をRubyで解いてみて、Rubyの学習に役立てようとするものです。

例題はこちらのリポジトリで公開されているものに限ります。
https://github.com/shellgei/shellgei160

## 実行環境など
– Docker image: ruby:3.0.2
– 上記リポジトリをクローンした上で、リポジトリのルートディレクトリ直下に`answer-ruby`ディレクトリを作り、その中に解答となるファイルを作成していきます。

## 今回のテーマ
https://github.com/shellgei/shellgei160/blob/master/answer/20.md

“`bash
$ for i in $(cd /usr;echo *); do echo

元記事を表示

Ruby芸160チャレンジ(#19)部分マッチの置換

## この記事は何
[shellgei160を通じて言語習得 Advent Calendar 2023](https://qiita.com/advent-calendar/2023/learning-via-shellgei160)に参加しています。

書籍「シェル芸ワンライナー160本ノック」の例題をRubyで解いてみて、Rubyの学習に役立てようとするものです。

例題はこちらのリポジトリで公開されているものに限ります。
https://github.com/shellgei/shellgei160

## 実行環境など
– Docker image: ruby:3.0.2
– 上記リポジトリをクローンした上で、リポジトリのルートディレクトリ直下に`answer-ruby`ディレクトリを作り、その中に解答となるファイルを作成していきます。

## 今回のテーマ
https://github.com/shellgei/shellgei160/blob/master/answer/19.md

“`bash
別解1 $ IFS=-;a=($(

元記事を表示

Ruby芸160チャレンジ(#18)group_byからのcount

## この記事は何
[shellgei160を通じて言語習得 Advent Calendar 2023](https://qiita.com/advent-calendar/2023/learning-via-shellgei160)に参加しています。

書籍「シェル芸ワンライナー160本ノック」の例題をRubyで解いてみて、Rubyの学習に役立てようとするものです。

例題はこちらのリポジトリで公開されているものに限ります。
https://github.com/shellgei/shellgei160

## 実行環境など
– Docker image: ruby:3.0.2
– 上記リポジトリをクローンした上で、リポジトリのルートディレクトリ直下に`answer-ruby`ディレクトリを作り、その中に解答となるファイルを作成していきます。

## 今回のテーマ
https://github.com/shellgei/shellgei160/blob/master/answer/18.md

“`bash
$ declare -A x ; IFS=: ; while read {

元記事を表示

【Ruby Gold3.1詰まったシリーズ】instance_variableメソッドについて

# はじめに
今回はinstance_variableに関する内容です。Ruby Goldの試験でinstance_variableに関して自信を持って回答できなかったため、簡単にまとめてみます。

# irbで確認してみた
環境はruby 3.1.4です。
[こちら](https://docs.ruby-lang.org/ja/latest/method/Object/i/instance_variables.html)によると、オブジェクトのインスタンス変数名をシンボルの配列として返すメソッドらしいです。
実際に、インスタンスを作成し、instance_variablesメソッドを実行
~~~ruby
class Book
def initialize(title, author)
@title = title
@author = author
end
end

ruby = Book.new(‘Ruby’, ‘taro’)
ruby.instance_variables
~~~
~~~
irb(main):001* class Bo

元記事を表示

Ruby芸160チャレンジ(#23)プロセスを扱う

## この記事は何
[shellgei160を通じて言語習得 Advent Calendar 2023](https://qiita.com/advent-calendar/2023/learning-via-shellgei160)に参加しています。

書籍「シェル芸ワンライナー160本ノック」の例題をRubyで解いてみて、Rubyの学習に役立てようとするものです。

例題はこちらのリポジトリで公開されているものに限ります。
https://github.com/shellgei/shellgei160

## 実行環境など
– Docker image: ruby:3.0.2
– 上記リポジトリをクローンした上で、リポジトリのルートディレクトリ直下に`answer-ruby`ディレクトリを作り、その中に解答となるファイルを作成していきます。

## 今回のテーマ
https://github.com/shellgei/shellgei160/blob/master/answer/23.md

“`bash
$ kill -s SIGCONT 5249
“`

一時停止してあるプ

元記事を表示

Cryptocurrency exchange development setup guide

![Cryptocurrency Exchange Setup Guide.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3629382/1d958be1-ce1c-3ad3-5b0b-9488dee137b2.png)

Cryptocurrency exchange is the first entrypoint for users to buy cryptocurrencies. Then the users trade those cryptocurrencies with NFTs like in-game assets, lands, avatars in exchange to get participated inside web3 ecosystem.

This is why setting up the crypto exchange seems to be a promising idea for entrepreneurs because of the mass adoptio

元記事を表示

Railsでinputにdisabled属性を指定した場合のパラメータ送信に関する注意点

※この記事は僕がぶち当たった問題をとりあえずChatGPTくんに丸投げしてライティングしてもらったものです。

# はじめに
Railsアプリケーションを開発する際、フォームのinput要素にdisabled属性を指定すると、そのinputからの値はサーバーに正しく送信されないという現象があります。本記事では、この問題に対する対策と回避策について説明します。

# 問題の概要
disabled属性が指定されたinput要素は、ユーザーからの入力を受け付けないようになりますが、それによってその値がフォームからサーバーに正しく送信されなくなります。これは、セキュリティ上の理由からブラウザがこのような挙動を示すためです。

# 対策方法
## readonly属性の利用
disabled属性と同様に、readonly属性もinput要素を読み取り専用にしますが、異なる点としてreadonly属性を指定したinputはフォームから値を正常に送信できます。そのため、readonly属性を使用することで、ユーザーが値を変更できないようにしつつ、値を正しく送信することができます。
“`erb
<%

元記事を表示

【Ruby Gold3.1詰まったシリーズ】includedメソッドについて

# はじめに
今回はincludedに関する内容です。Ruby Goldの試験でincludedに関して自信を持って回答できなかったため、簡単にまとめてみます。

# irbで確認してみた
環境はruby 3.1.4です。
[こちら](https://pikawaka.com/ruby/include)によると、クラスでモジュールがincludeされた際に呼び出されるメソッドらしいです。
実際に、クラスに対してモジュールをincludeし実行
~~~ruby
module Mod
def self.included(base)
p “#{base} include #{self}”
end
end

class Hoge
include Mod
end
~~~
~~~
irb(main):001* module Mod
irb(main):002* def self.included(base)
irb(main):003* p “#{base} include #{self}”
irb(main):004* end

元記事を表示

run_callbacks に翻弄された話

## これは何
Active Record のコールバックに関するテストのレビューをお願いされた時に、見慣れないメソッド にやや翻弄された話をまとめました。

## きっかけとなったテストコード

Userモデルに定義してある、`after_create_commit_test` メソッドがレコード生成時に正しく呼ばれているかをテストするために作られたものです。

“`ruby
describe ‘.create’ do
subject { user.save! }

let(:user) { FactoryBot.create(‘user’) }

before do
allow(user).to receive(:after_create_commit_test)
user.run_callbacks(:commit)
end

it ‘calls after_create_commit_test’ do
subject
expect(user).to have_received(:after_create_commit_

元記事を表示

社内勉強会開催したった

# はじめに
[Hubble Advent Calendar 2023](https://qiita.com/advent-calendar/2023/hubble)の16日目[^1]です!
[^1]:平日のみの投稿なので22日ですが16日目の記事としています。

Hubbleでバックエンドエンジニアをしている @power3812 です。オブジェクト指向大好きマンで、神クラスを作れないかと模索の日々です:innocent:

[前回はコードレビューの観点](https://qiita.com/power3812/items/5556f5381b5e6de3565a)について投稿しました。

Hubbleのバックエンドチームはありがたいことに業務委託の方を含めて11人います。しかし、大人数になってくると同じ仕様でも各人によってロジックが変わったり変数名が違ったりという課題が出てきます。また、それらを毎回レビューするのは、レビューワーの負担が大きくなります。
そのため、どうにかコードの書き方をある程度統一化できないかと勉強会を開催しました!

## 開催方法
勉強会は、発表者が一方的に話

元記事を表示

Ruby 3.0.6+Rails 7.1.2で「Learn Hotwire and Turbo with a free Rails 7 tutorial」をやってみた

この記事は、[Ruby Advent Calendar 2023 シリーズ1](https://qiita.com/advent-calendar/2023/ruby) の20日目です

昨日は、 @HAZI さんで [「現在開発中の『SpeedLimiter』Gemの紹介」](https://zenn.dev/seibii/articles/20231219_speed_limiter) でした

【本コラムは、30分で読めて、60分くらいでお試しいただけます】

[piacere](https://twitter.com/piacere_ex) です、ご覧いただいてありがとございます :bow:

普段は、[Elixir/Phoenix/LiveView](https://qiita.com/advent-calendar/2023/elixir)メインで開発してますが、Ruby/Railsも年2本くらい、既存システムのバージョンアップ案件やリプレイス案件をこなしている(実はRails 1系からの付き合いで結構古い)ので、何かと触ってはいるものの、そこまで新しいフィーチャ

元記事を表示

【初学者】環境構築備忘録【Docker + Ruby 3.2.2 + Rails 7.0.8 + TypeScript 5.3.3 + React 18.2.0 + Node.js 21.5.0 + TailwindCSS + daisyUI + PostgreSQL】

# はじめに

お疲れさまです!
おおくまです!

今回は、**Docker + Ruby 3.2.2 + Rails 7.0.8 + React 18.2.0 + Node.js 21.5.0 + TailwindCSS + daisyUI + PostgreSQL**で環境構築してみました!

個人的に苦戦したので、備忘録として残したいと思います!

# 注意点

:::note warn
内容に誤りがある場合があります!
コメント等で教えていただけると幸甚です!
:::

# 環境

:::note
– Docker
– Ruby3.2.2
– Rails7.0.8
– React18.2.0
– Node.js21.5.0
– TailwindCSS
– daisyUI
– PostgreSQL
:::

# 手順

まずは作業フォルダやファイルを作っていきます!

“`:ターミナル
mkdir test_app

cd test_app

mkdir back front

touch back/Dockerfile back/Gemfile back/Gemfile.lo

元記事を表示

【Rails】whereとscopeの苦手意識を克服するためにまとめてみた

# はじめに

お疲れさまです!
おおくまです!

今回は、“Ruby on Rails“の“whereメソッド“と“scope“についてです!

特に理由があるわけではないですが、なんとなく苦手意識がありました。笑
そんな苦手意識を克服するためにまとめてみました!

# 注意点

:::note warn
内容に誤りがある場合があります!
コメント等で教えていただけると幸甚です!
:::

# 環境

:::note
Ruby 3.2.2
Rails 7.0.6
:::

# 前提条件

前提条件として、このような“テーブル“と“レコード“があるとします!

# whereメソッドとは

https://railsguides.jp/active_record_querying.html

“Ruby

元記事を表示

Ruby on Railsのnew()メソッドについての詳細解説

#### はじめに

Ruby on Railsでの`new()`メソッドはオブジェクトのインスタンス化に中心的な役割を果たします。この記事では、`new()`メソッドの基本から応用まで、その使い方と重要性を深く掘り下げます。

#### new()メソッドの基本

– **機能**:

– `new()`はRailsのモデルや他のオブジェクトに対して、新しいインスタンスを作成するために使います。
– 例:`User.new(name: “Alice”, email: “alice@example.com”)`は、名前とメールアドレスを持つ新しい`User`インスタンスを生成します。
– **重要性**:

– `new()`によって生成されたインスタンスは、データベースに保存される前にメモリ上に存在します。
– これにより、データベースに保存する前にバリデーションを実行でき、データ整合性を保つことが可能になります。

#### new()メソッドの応用

– **複雑なデータ構造**:

– `new()`は、ネストされ

元記事を表示

Ruby on Railsのnew()メソッドの基礎解説

#### はじめに

Ruby on Railsにおける`new()`メソッドは、オブジェクトのインスタンス化に不可欠なメソッドです。この記事では、`new()`メソッドの基本的な使い方、重要性、および応用例について詳しく解説します。

#### new()メソッドの基本

– **概要**:

– `new()`メソッドは、Railsのモデルや他のオブジェクトを初期化するために使用されます。
– このメソッドは新しいインスタンスを生成し、オプションで属性を初期化することができます。
– **使用法**:

– 例えば、`User`モデルの新しいインスタンスを作成する場合、`User.new(name: “Alice”, email: “alice@example.com”)`のように記述します。
– これにより、名前とメールアドレスが設定された`User`オブジェクトの新しいインスタンスが作成されます。

#### new()メソッドの重要性

– **データ整合性の保持**:

– `new()`メソッドは、データベー

元記事を表示

ActionDispatch等をスタンドアローンで動かしてミニマムなRailsのような何かをDIYしたらRailsともっと仲良くなれた話

# 前置き
Webアプリケーションエンジニアとして働き始めて4年といくらか、そこそこの浮気期間は挟みつつも長らく付き合い続けているRuby on Railsだが、たまに必要に迫られてコードを見るくらいでその中身に関しては正直まるで知らない。

Railsのことをもっと知りたい。いったいどうすれば良いだろう…

![o0300022814160302731.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283780/c4e26d6a-6a27-207b-1687-7679b2c6767e.jpeg)

![スクリーンショット 2023-12-17 11.51.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283780/7e4c2f25-909d-5447-8de2-1b79dcf7a457.png)

もちろんRailsになっちまうのはDHHでもなければ無理なので、Railsのコンポーネント、今回の場合は特にA

元記事を表示

OTHERカテゴリの最新記事