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

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

Ruby未経験でもできる!Jekyllで転職活動用の自己紹介サイトを作成する

# はじめに
11月末で現職を退職するので転職活動を始めたんですが、忙しくて時間が取れないので少しでもオートマチックに活動ができるようにパブリックな自己紹介サイトを作りました。
あわよくばRubyの勉強になればと思い、Jekyllを使いました。
結果的にRubyの勉強には全くならなかったのですが、デザインセンスがなくても簡単にそれっぽく作れたので記事にします。

作った自己紹介サイト

https://pokeyama.github.io/portfolio-jekyll/

とても長い記事になってしまったのですが、この記事の順を追ってコマンドを実行していけばほぼ同等のものが作れます。

# 環境
Mac M2
Ruby
“`sh
$ ruby -v
ruby 3.3.5 (2024-09-03 revision ef084cc8f4) [arm64-darwin23]
“`

# Jekyllとは
1. Rubyで開発された静的サイトジェネレーター
2. **Markdownで書ける**
3. GitHub Pagesに割と簡単にデプロイできる。

Jekyllは、ブログやポート

元記事を表示

Ruby 3.4 ではデフォルトのブロックパラメータとして it が使える

## この記事は?

Ruby 3.4 で導入される it について説明します。

## it とは?

来たる Ruby 3.4 ではデフォルトのブロックパラメータとして it が使えるようになります (まるで [Kotlin の it](https://kotlinlang.org/docs/lambdas.html#it-implicit-name-of-a-single-parameter) みたいですね) 。it は暗黙的にブロックに渡された 1 番目のパラメータを参照します。この場合、配列の各要素です。ブロックパラメータを明示的に指定する必要がなく、ブロックをよりシンプルに書けるようになります。

“`rb
# 通常のブロックパラメータ
[2, 4, 1, 3].sort_by { |n| n }
#=> [1, 2, 3, 4]

# it
[2, 4, 1, 3].sort_by { it }
#=> [1, 2, 3, 4]
“`

既存の[番号指定パラメータ](https://docs.ruby-lang.org/ja/latest/doc/spec=2fcal

元記事を表示

【Ruby】ifとcaseの使い分けについて

# はじめに
progateで`Ruby`を勉強したのち「ゼロからわかるRuby超入門」を勉強しています。
本書では`if`と`case`の使い分けについて「3つ以上の分岐の場合は`case`を使う」と記載がありました。
ですが`if`にも`elsif`があるので`case`を使用しなくても可読性落ちることがないのでは?と思い記事にしてみようと思いました。
# caseとは
`case`は特定の変数や値に対して、複数の候補の中から一致するものを見つけるために使います。
`case`を使うことで、同じ値に対して複数のパターンを簡潔に記述でき、コードが読みやすくなります。
基本構文は以下の通りです
“`ruby:case1.rb
case 変数
when 値1
# 値1と一致した場合に実行されるコード
when 値2
# 値2と一致した場合に実行されるコード
else
# どれにも一致しない場合に実行されるコード
end
“`
## ifとcaseの違いは
`if`は、複雑な条件式や比較演算、範囲指定が必要な場合に向いています。
一方`case`は、特定の値やパターンに基づ

元記事を表示

ruby eachとmapの違い

mapは既存の配列に情報を加工したいとき、eachは計算如何によっては新しい配列に情報を格納することがある場合とで使い分けられる

def validEmailList(emailList)
arr=[]
def isEmailValid(email)
count = email.count(“@”)
strIndex = email.index(“@”)
slice = email.slice(strIndex..-1)
if email.include?(” “) || count > 1 || strIndex == 0 || !slice.include?(“.”)
return false
else
return true
end
end

emailList.each{ |email|
if isEmailValid(emai

元記事を表示

【PHPからRuby学習】nilってnullと違うんですか?と思ったので備忘録

PHP4年生からRubyを学び始めた初心者です。

PHPと似ているところがあるよ〜ってインターネットで見たので学んでみるか(^o^)
という安易な気持ちで学び始めたが、なんかちょこちょこ違うぞ…となっている。

今回はnilについて学んだのでメモとしてアウトプット。

## 結論
nullと同じか?と思って調べてみた

**ほぼ同じっぽい。**
でも、nilはNilClassというクラスのオブジェクトらしい。
Rubyではすべての値をオブジェクトとしているからnilもオブジェクトになる。

オブジェクトが所属しているクラスのメソッドでnil判定ができる。

### 判定できるメソッドについて
### `nil?`
対象のオブジェクトが`nil`だったらtrueを返す。
それ以外であればfalseを返す。

### `empty?`
対象のオブジェクトが空文字と空配列の時にtrueを返す。
値が存在している場合はfalseを返す。

また、nilで使用するとエラーが発生する。(NoMethodError)

“`

nil.empty? => undefined met

元記事を表示

[備忘録]RailsでWebAPIをつくるときに抑えておくとよさそうなこと

転職をして、Railsを触り始めました。

慣れるまでに時間はかかりそうですが、慣れるとスピーディに機能追加できそうでいいなと思いました。

業務では今WebAPIを触ることがメインで、それに関することをざっくりとまとめました。

どの処理のときに何を使えばいいかをまとめています。

* リクエストを受け取れるようにする→ルーティング
* https://railsguides.jp/routing.html
* リクエストを受け付けるとき
* リクエストを受け付けたときの全体の処理の流れを定義する→Controller
* https://railsguides.jp/action_controller_overview.html
* リクエストパラメータで許可したものだけ受け付けるようにする→Strong Parameters
* https://railsguides.jp/action_controller_overview.html#strong-parameters
* リクエストを一度格納する→Active Model(フォームオブジェクト

元記事を表示

Railsでモデルのバリデーションを回避するためのhidden_fieldの使い方

# はじめに
ユーザー登録画面を作成する際、presence: trueバリデーションを設定しているフィールドがフォームに含まれていない場合、バリデーションエラーが発生します。今回は、モデルを変更したくないけど、登録機能だけは完成させるためにバリデーションエラーを回避するために、hidden_fieldを使う方法を紹介します。

# 問題
以下のように、presence: trueのバリデーションが設定されたモデルを使っているとします。

“`
class User < ApplicationRecord validates :username, :email, :password, :phone_number, :address, :gender, presence: true, on: :create validates :email, length: { maximum: 255 }, format: EMAIL_FORMAT, uniqueness: { case_sensitive: false }, allow_blank: true validates

元記事を表示

『リファクタリング:Rubyエディション』より、つい忘れてしまう書き方

## はじめに

『[リファクタリング:Rubyエディション](https://www.amazon.co.jp/dp/4048678841)』という本を読んでます。

業務でよく出てくる&すぐ使えるのについ自分が忘れてしまいがちな書き方を備忘録としてまとめます。

第6章と第9章で紹介されていた内容です。

## ループからコレクションクロージャメソッドへ

配列から特定の条件を満たす値を抽出する際は、`each`メソッドでループを回さず`select`や`reject`といったメソッドを使うことで、よりシンプルに記述できます。

いくつかのサンプルをまとめます。

### 配列から奇数だけを抽出する

#### before

“`ruby
irb(main):001> odd = []
=> []
irb(main):002> [1,2,3,4,5,6,7,8,9].each { |i| odd << i if i % 2 != 0 } => [1, 2, 3, 4, 5, 6, 7, 8, 9]
irb(main):003> odd
=> [1, 3, 5, 7,

元記事を表示

macOSでのrubyバージョンアップ備忘

# 経緯
bundlerバージョンアップ時に、rubyのバージョンの問題で失敗したことでrubyのバージョンアップを行おうとしたのですが、少しハマってしまったので備忘として手順を残しておこうと思います。

“`
% sudo gem update –system
Password:
Updating rubygems-update
Fetching rubygems-update-3.5.21.gem
ERROR: Error installing rubygems-update:
There are no versions of rubygems-update (= 3.5.21) compatible with your Ruby & RubyGems
rubygems-update requires Ruby version >= 3.0.0. The current ruby version is 2.6.10.210.
ERROR: While executing gem … (NoMethodError)
undefine

元記事を表示

【Rails】typeという名前のカラムがあるとエラーが出る

## はじめに
DBにtypeという名前のカラムがある時にエラーが出たので、その対応をまとめます。

## 問題
エラー文
“`ruby
ActiveRecord::SubclassNotFound (Invalid single-table inheritance type: xxx is not a subclass of yyy):
“`

## 解決方法
typeカラムの名前を変更することでも対応できますが、それが難しい場合は以下のようにすることで対応できます。
“`ruby
class User < ApplicationRecord self.inheritance_column = :_type_disabled # この行を追加 end ``` ## 参考 https://qiita.com/ryonext/items/1a813639ab2a2a00058e

元記事を表示

【Ruby】unlessは簡単な構文の時に使おう

# はじめに
本日はunlessの使い方について記事にしていこうと思います。
余談ですが、10月中にやっとGitやLinuxなどの勉強がひと段落しました(まだ基礎レベル)。今月からRubyの勉強を始めましたので、Rubyに関する記事が増えるかもしれません。では、さっそく本題に入りましょう。

# unlessとは
`unless`は、`if`の逆の条件を扱う構文です。具体的には「条件が`false`のときに実行する」ために使われます。
`if`は条件がtrueの場合に実行されるのに対し、`unless`は条件が`false`の場合に実行されます。
`unless`は読みやすさやコードの意図を明確にするために便利で、特にシンプルな否定条件に対して効果的です。
基本構文は以下の通りです。
“`ruby:unless1.rb
unless 条件式
# 条件が false の場合に実行されるコード
end
“`
もちろんif文と`!`を用いて同様に表すことができます。
“`ruby:if1.rb
if !条件式
# 条件が false の場合に実行されるコード
end
“`

元記事を表示

Rails7 リロードしないとフォームのsubmitボタンが反応しなかった話

お久しぶりです。9月にニートから業務委託に昇格し、将来はドローンパイロットになりたいとよくわからないことを思い始めている変人です。

今回は、業務委託中で起こった、`formをリロードしないと送信できない!Turbo.falseにしたい!(発狂)`事件についてお話しようと思います。

#### 現象
– 新規投稿・編集画面に遷移後、入力欄に記入はできる。
– `でも、submitボタンが効かない!!`
– rails consoleで保存はできている。
– ブラウザでリロードしたら、submitできる。

#### 原因
`

`のそれぞれの個数が合っておりませんでした(笑)「死にそうです、Turbo切りたいです」とほざいておきながら、divタグをまともに閉じれていませんでした(ポンコツ超えてアホですね笑)

大まかには下記のようになっていました。

“`ruby:_form.html.erb

<%= form_with model: @hamster, local: true do |f| %>

元記事を表示

【個人開発】ペットのぶさかわを投稿するアプリ「ぶさかわフォト」をリリースしました。

## はじめに
プログラミングスクール「RUNTEQ」を卒業し、Webエンジニアとして転職活動をしているにしかわです。
今回、「ぶさかわフォト」をリリースしました。
読みづらい箇所もあるかと存じますが、ぜひご覧いただけると幸いです。

## 開発した理由
ペットで可愛いといえば、小さくて目がクリクリしている、モフモフしているイメージが浮かびませんか?
確かに可愛いですが、別の可愛さもあります。
私は、22kgのピットブルを飼っており、世間での可愛いイメージとは正反対の犬を飼っていますが、可愛いシーンがたくさんあります。 それが「ぶさかわ」です。
この「ぶさかわ」を共有したく今回サービスを開発しました。

## どんなサービスか
[![Image from Gyazo](https://i.gyazo.com/8d39b43ae264f8ffb80ec5586e174be6.png)](https://gyazo.com/8d39b43ae264f8ffb80ec5586e174be6)

サービス [ぶさかわフォト](https://busakawa.com/)
Github [Git

元記事を表示

【初学者用】RailsにおけるSQLアンチパターンの解説と対応策

## はじめに
今までNext.jsやTypeScriptでフロントからバックまで触っていたのですが、Rails1年生となって開発に携わっている中で、遭遇する可能性のある主要なSQLアンチパターンとその解決方法をまとめました。

初めてRailsを通してDB設計をする方の参考になれば幸いです。

## 目次
1. [文字列連結によるSQLインジェクション](#1-文字列連結によるsqlインジェクション)
2. [N+1クエリ問題](#2-n1クエリ問題)
3. [大量データの一括読み込み](#3-大量データの一括読み込み)
4. [不適切なインデックス設計](#4-不適切なインデックス設計)
5. [過度の正規化](#5-過度の正規化)
6. [単一テーブル継承(STI)の過剰使用](#6-単一テーブル継承stiの過剰使用)
7. [貪欲なフェッチ](#7-貪欲なフェッチ)
8. [不要なカラムの取得](#8-不要なカラムの取得)

## 1. 文字列連結によるSQLインジェクション

### 問題点
ユーザー入力を直接SQLクエリに組み込むと、SQLインジェクション攻撃の危険性があり

元記事を表示

Ruby勉強メモ:Ruby の エイリアスメソッド一覧

## エイリアスメソッド一覧

| メソッド 1 | メソッド 2 | クラス | 説明 |
|—————————|—————————|———————-|—————————————————————————————-|
| **`map`** | **`collect`** | `Array`, `Enumerable`    | 各要素にブロックを適用し、結果の配列を返す(要素の変換)

元記事を表示

rails newコマンドでのエラー対処

# 背景

初めてローカル環境で、Rails アプリケーションをつくろうとして、“Rails new“ コマンドを叩いたらいきなり躓いたので、メモ。

OS:Windows
使用しているアプリケーション:VSCode

# 1. “’: No such file or directory

“` :出現したエラー
(略)“’: No such file or directory – git config init.defaultbranch (Errno::ENOENT)
“`
### 解決策

特定のファイル内に存在する「“ ` “」が、原因で発生していることが分かった。エラー文から、ファイルを特定できたため、当該ファイルの「“ ` “」をすべて「’」に変更した。

https://qiita.com/TK_WebSE/items/f0a9cbd6e2b3431694bc

# 2. invalid byte sequence in UTF-8

“` :出現したエラー
Failed to load C:/Users/ユーザー名/.gemrc, invalid

元記事を表示

環境構築で苦戦

# calender-app.setting
#### bash
“`
$ touch {docker-compose.yml,Dockerfile,Gemfile,Gemfile.lock,entrypoint.sh}
“`
#### Dockerfile
“`
# Rubyのバージョンを指定した公式イメージをベースに使用
FROM ruby:3.2.2

# 必要なパッケージのインストール
RUN apt-get update -qq \
&& apt-get install -y nodejs postgresql-client npm vim \
&& rm -rf /var/lib/apt/lists/* \
&& npm install –global yarn

# コンテナの作業ディレクトリを指定
RUN mkdir /myapp
WORKDIR /myapp

# ホストのGemfileとGemfile.lockをコンテナにコピー
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.l

元記事を表示

【Rails】rake taskの使い方

## rake taskとは?
実行したい処理を記述しておき、`rake task`コマンドを利用して実行できます。
複雑な処理をタスク化しておくことで、簡潔なコマンドで実行できるため便利です。

## rake taskの作成方法

以下のコマンドを実行して、taskファイルを生成します。
“`terminal
$ rails g task
“`

“`ruby

namespace :test_task do
desc ‘テストタスク’ # 実行したいタスクの説明
task :nothing do
end
end

“`

DBにデータを登録するなどの場合は、`:environment`と記述します。

“`ruby
namespace :insert_user do
desc ‘ユーザー登録タスク’
task aaa :environment do
User.create(name: ‘花子’, age: 18)
end
“`

## 参考文献

https://guides.rubyonrails.org/

元記事を表示

【Ruby】array.map(&:method)の記法の仕組みメモ

## 概要
`array.map { |a| a.method }` を `array.map(&:method)` と略記できるやつの仕組みを何度調べても忘れるのでメモ。
これに関する記事は他にも多くありますが、自分の中で咀嚼したつもりのものを書き残します。

## 本文
### 前提
`to_proc` を持つオブジェクトの頭に `&` をつけてメソッドの引数として渡すと、 `to_proc` が実行されProcオブジェクトとなり、メソッドにブロックとして渡される。

https://docs.ruby-lang.org/ja/latest/doc/spec=2fcall.html#block

また、Symbolクラスのインスタンスメソッド `to_proc` は、シンボルと同名のメソッドを呼び出し、第1引数をそのメソッドのレシーバとする。

https://docs.ruby-lang.org/ja/latest/class/Symbol.html#I_TO_PROC

### つまり

“`ruby
# これの &:upcase 部分は
[‘hoge’, ‘fuga’].m

元記事を表示

🐈画面上で猫が邪魔してくださる Rails gem を作って世界を平和にする

こんにちは、とまだです。

**猫ってかわいいですよね🐈**

私は猫を飼っています。

猫を飼っていると、目の前に猫が出てきて作業の邪魔をされることがありますが、それはそれでご褒美なのです。

ただ、猫アレルギーの人や、猫を飼うことができない環境にいる人にとっては、猫と触れ合う機会がなかなかありません。

そこで私は考えました。

> **誰もが猫に邪魔される幸せを味わえる世界を作りたい!**

この Gem は、そんな世界征服を目指す Ruby on Rails アプリ用の Gem です。

何を言っているか分からないかもしれませんが、**こういうこと**です👇

![画面収録-2024-10-04-19.45.20.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/364501/3ea1765e-93f2-9c3c-a9ec-26572e9bc655.gif)

これであなたの作業も捗ること間違いなしですね!!!!

休日に暇すぎてこの gem をご存知 [RubyGems.org](https:/

元記事を表示

OTHERカテゴリの最新記事