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

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

【Ruby Gold3.1詰まったシリーズ】配列の添字演算子について

# はじめに
今回は配列に関する内容です。配列の添字演算子については、GoldではなくSilverの範囲だろうと油断していたら突然試験に出てきて理解があっているか不安になったのでまとめてみます。

# 確認してみた
環境はruby2.5.3です。
配列[1,2,3,4,5,6,7,8]から[4,5,6]のみを取得する方法として、下記を実行する。
~~~ruby
ary = [1,2,3,4,5,6,7,8]
ary[3..-3]
ary[3..5]
ary[3…6]
ary[3…-2]
ary[3,3]
~~~
すると、
~~~
irb(main):001:0> ary = [1,2,3,4,5,6,7,8]
=> [1, 2, 3, 4, 5, 6, 7, 8]
irb(main):002:0> ary[3..-3]
=> [4, 5, 6]
irb(main):003:0> ary[3..5]
=> [4, 5, 6]
irb(main):004:0> ary[3…6]
=> [4, 5, 6]
irb(main):005:0> ary[3…-2]
=> [4, 5

元記事を表示

Ruby芸160チャレンジ(#15)文章の大文字化・タイトルケース化

## この記事は何
[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/15.md

小問が2個あります。

“`bash
小問1$ echo I am a perfect

元記事を表示

【Rails7】Maps JavaScript APIを使って投稿を地図上にピンで表示する

## 自己紹介
はじめまして、はると申します。現在はスクールに通いながら学習をしています。
今回、[スクール内のアドベントカレンダー](https://qiita.com/advent-calendar/2023/runteq)に参加し、**『初めて学んだ技術』** というテーマで記事を書きました🐥

## 概要
Google MapのAPIを利用し、地図上に投稿の一覧をピンで表示させます。
(新規投稿を作成する機能の実装は含みません)
– Maps JavaScript API
– Geocoding API

### 環境
– Ruby: 3.2.2
– Rails: 7.0.8
– esbuild

:::note warn
初学者のため、間違っている箇所や、紹介した方法よりも良い方法があるかもしれませんので、その際は教えて頂けると嬉しいです🙇
:::

## APIキーの準備
初めてGoogle Cloud Platformを使う想定で記載します。すでに登録済みの方は[使用するAPIの有効化](#使用するapiの有効化)に進んでください。

### Google Cloud

元記事を表示

Rubyの型チェッカー「Sorbet」を導入した話

リンクアンドモチベーション [Advent Calendar 2023](https://qiita.com/advent-calendar/2023/lmi)の15日目の記事です:christmas_tree:

# はじめに
株式会社リンクアンドモチベーションの葛葉(くずば)です。
現在、新卒2年目で、[モチベーションクラウド](https://www.motivation-cloud.com/)のバックエンドエンジニアとして、新規機能の開発を担当しています。
複数の言語でもサーベイの回答、結果の確認ができるようにする開発をおこなっています。

本記事では、メイン業務と並行で進めていたプロジェクト **「Ruby(Ruby on Rails)における静的型付け」** について書きたいと思います。

同じように静的型付けを導入しようとしているプロダクトは少なくないと思います。
この記事を見ることで、

:::note info
– 静的型付けを導入するメリットが分かる
– 代表的なツールであるSorbetの使い方が分かる
:::

記事となっています。少しでも参考になれば幸いです。

元記事を表示

コードオーナーがよくレビューする事5選

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

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

Hubbleのバックエンドチームは[コードオーナー](https://docs.github.com/ja/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners)制度を導入しており、PRを出す際にコードオーナー1人以上のapproveがないとマージすることが出来ません。
その際にJoinしたての方によく自分がレビューする内容5選を紹介しようと思います:sunglasses:

## 1. ActiveRe

元記事を表示

【Rails】入社前にやった方が良かった教材まとめ 【React】

## はじめに
現在、現場でReactとRuby on Railsを使用して開発しています。

その上で入社前に自分で読んでもらいたい教材を
紹介していきます!

## [プロを目指す人のためのRuby入門\[改訂2版\] 言語仕様からテスト駆動開発・デバッグ技法まで](https://www.amazon.co.jp/dp/4297124378)
– Rubyを使う方、全員におすすめしたい本
– 呪文のような構文もこれを読めば理解できるようになる(はず)
– 初版を買わないように注意してください!

>本書は、プログラミング言語Rubyの言語仕様や開発の現場で役立つRubyの知識を説明した本です。豊富なサンプルコードで文法を学び、例題でプログラミングの流れを体験できます。第1版(2017年11月発行)は、初心者の目線

元記事を表示

【Rails】ビットマスクを活用した、Todoアプリを作ってみませんか?

# はじめに
DMM WEBCAMPのAdvent Calendarの **15** 日目の担当することになりました、@takakouと申します🏙️✨

今回は、「**ビットマスクを活用した、Todoアプリを作ってみませんか?**」というテーマで記事をシェアします!📝

記事執筆は未熟者で、至らない点もあるかと思いますが、皆さんのコメントやフィードバックをお待ちしています!🚀💬
# 目次

1. [目的 🎯](#1-目的)
1. [対象者 👨](#2-対象者)
1. [動作環境 🖥️](#3-動作環境)
1. [アプリ概要 🛠️](#4-アプリ概要)
1. [実装手順 🚀](#5-実装手順)
1. [参考文献 📚](#6-参考文献)
1. [おわりに 🎉](#7-おわりに)

# 1. 目的
最初に本記事の目的を説明しておきます。
– タスクを管理するアプリで設定する曜日指定の定業タスクの発生周期や、カレンダーアプリなどの予定の発生周期を設定するのって内部的にどんな動きをしているのか理解する。
– ビットマスク

元記事を表示

Railsで開発を行うときに考えていること

# はじめに

この記事は [VR法人HIKKY Advent Calendar 2023](https://qiita.com/advent-calendar/2023/hikky) の14日目の記事です。
前日は [VRイベントサイト制作の振り返り2023 Nuxt3対応とWebアニメーションに寄せて](https://qiita.com/rohitotsubakura/items/938ec3d6703b4656b500) でした。

# 書くこと
普段 Rails 開発で意識していることやコーディングの仕方について基本的なことから宗教的なことまでだらだらと書き出してみる。
普段意識していないことは書かないかもしれない。
フレームワークによらず考えていることも含む。

# controller / routing
## routes.rb
member, collection 等、見通しよく整理できるメソッドが意外とある。

## データの保存失敗処理
“`ruby
def update

save!

rescue A

元記事を表示

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

## はじめに
今回Rubyを学習する上で使用した参考書の
プロを目指す人のためのRuby入門の感想について書いていきます。

https://www.amazon.co.jp/%E3%83%97%E3%83%AD%E3%82%92%E7%9B%AE%E6%8C%87%E3%81%99%E4%BA%BA%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AERuby%E5%85%A5%E9%96%80-%E6%94%B9%E8%A8%822%E7%89%88-%E8%A8%80%E8%AA%9E%E4%BB%95%E6%A7%98%E3%81%8B%E3%82%89%E3%83%86%E3%82%B9%E3%83%88%E9%A7%86%E5%8B%95%E9%96%8B%E7%99%BA%E3%83%BB%E3%83%87%E3%83%90%E3%83%83%E3%82%B0%E6%8A%80%E6%B3%95%E3%81%BE%E3%81%A7-Software-Design/dp/4297124378/ref=sr_1_2_sspa?__mk_ja_JP=%E3%

元記事を表示

既存のモデルにあった画像を中間テーブルを挟んで別テーブルにしたい時のオーバーライド

# はじめに
既存の画像データを新しいテーブル構造に移行する際、あまり変更を加えずにメソッドを扱えるようにデータの整合性を保ちつつ効率的に移行する方法を考えました。CarrierWaveを使用した画像の管理を例に、中間テーブルを介して画像データを別テーブルに移行する際のオーバーライドについて説明します。

## 背景
既存の Product モデルに直接関連付けられていた画像データを、新しい ProductImage モデルに移行することを例にし、画像の参照は中間テーブル ProductImageReference を介して行われるとして進めていきます。

## 実装ステップ
ImageUploader というCarrierWaveのアップローダーを ProductImage モデルにマウントされている状態にします。
“` ruby
class ProductImage < ApplicationRecord mount_uploader :image, ImageUploader # その他の設定 end ``` - オーバーライドの実装 Product モデル内で、画像デ

元記事を表示

Ruby技術者認定試験【Silver】合格しました!勉強法やスケジュールを公開します!

## はじめに
つい一週間くらい前にRuby技術者認定試験を受験して、無事合格しました!
受験しようと思ったのが1ヶ月前くらいで、勉強期間は約1ヶ月。
勉強スケジュール等の見通しもない状態で、とりあえず先に試験に申し込んで日程を決める「テスト(日程先に決めちゃう)駆動開発(勉強法)」でなんとか合格しました。

これから受験を考えている方や、試験勉強を絶賛している方の参考になればと思い、テスト勉強でどんなことをしたのかまとめようと思います!

![study_night_boy.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/485238/ced2b49f-538d-0d72-3c18-893e658ce6e2.png)

## 前提
一旦ここで自分のスペックをご紹介しておきます。

“`
サーバーサイドエンジニア歴: 4年
Ruby歴: 1年半
業務でもRubyを使用している
好きな食べ物: オムライス
“`

## 結論
自分は下記の順番で勉強していきました!
不安だったので、ネット上に転がって

元記事を表示

ハッシュとは何か

# ハッシュとは
### ハッシュ
ハッシュはキーと値の組み合わせでデータを管理するオブジェクトのことです。
ハッシュを作成する場合は以下のような構文を使います。
“`.bash
#空のハッシュを作る
{}
#キーと値の組み合わせを3つ格納するハッシュ
{ ‘キー1’ => 値1, ‘キー2’ =>値2 , ‘キー3’ =>値3 }
“`
以下は国ごとの通貨の単位を格納したハッシュを作成する例です。
“`.rb
{ ‘japan’ => ‘yen’, ‘us’ => ‘dollar’, ‘india’ => ‘ruppe’ }
“`
ハッシュは、キーと値のペアを波カッコで囲んで表記します。キーと値のペアを持たない波カッコの組{}は空のハッシュです。

ここで重要なのはハッシュの波括弧がブロックの波括弧とは別という点です。

ハッシュは配列と似ているが、一つ重要な違いとして**ハッシュでは要素の並び順が保証されない**という点があります。**要素の順序が重要である場合は、配列を使う必要があります。**

ではどのような時にハッシュを使うのか。それは**データを効率的に検索する必要

元記事を表示

RailsのZeitwerk化でやったこと、見落としていたこと

Railsアプリケーションで、`classic`オートローダーを使っているものがあったのですが、Rails v7からはZeitwerkしか使えなくなってしまうのでZeitwerkへ移行しました。

手順は基本的にはRailsガイドに乗っているのですが、やりながら詰まったところ等もあったので記事にまとめました。

https://railsguides.jp/classic_to_zeitwerk_howto.html

## やったこと

やったことは大きく、以下3点です。

1. autoloaderを`:zeitwerk`に変更して、`bin/rails zeitwerk:check`でエラーが出た部分を修正
2. 不要な自動読み込みを削除
3. アプリケーション起動時の自動読み込みの修正

1つ目は比較的すぐ完了しましたが、2と3については少し時間がかかった部分もありました。

### 1. autoloaderを`:zeitwerk`に変更して、`bin/rails zeitwerk:check`でエラーが出た部分を修正

`bin/rails zeitwerk:check`で

元記事を表示

Multiscale 24f(数値計算におけるマルチスケール)

# name

ソフトウェア開発での必須スキルとなるTDD(test driven development, テスト駆動開発), class, refactoringを,Ruby言語で習得する

# [zoom link](https://kwansei-gakuin.zoom.us/j/82203994456?pwd=VUE1UjNCRXg1Y09XbjVPN1Vtb2hpdz09)

– ミーティングID: 822 0399 4456
– パスコード: 473581

# 最終課題

RubyでなんかCLA(自分の作業に便利な)を作って!

– その作ったexecutableなCLAをgithubにあげる
– README.mdで
– 使用前の問題点
– 使用法
– 使ったcodeの簡単な解説
– 使用後どれほど効率が上がったか
– を書く
– LUNAにpdfを提出
– A4, 1-2pagesにまとめて
– citationをちゃんとしてね
– githu

元記事を表示

数値が三桁区切りで表示される input タグをつくる

# `` では物足りない
`form.number_field`でレンダリングされる input タグでは次のような不満があります。
– 3桁区切りの表示をして欲しい(ことがある)
– うっかり全角数字で入力しても、入力がなかったことにしないで欲しい[^1]
[^1]:ウェブ入力欄で、「全角で(半角で)入力してください」とか、「ひらがなで(カタカナで)入力してください」とかに出会うが、お前が正規化しろよと思っている。

HTML の仕様(規格)の範疇だから自分でなんとかするしかない。なので設計方針はつぎのとおりです。

– input 欄に入力中 (focusin) は数値のみで、カンマは入力しない
– 入力は全角でも可能(使用者にできるだけ負担をかけない)
– 欄外に移ったら (focusout) 3桁区切りのカンマが入った表示にする
– POST(PATCH、PUT) の送信時 (submit) は数値を渡す

Stimulus についての概要は把握していることを前提としてます。
検証は、ruby 3.2、Rails 7.1 の環境です。

元記事を表示

【Ruby Gold3.1詰まったシリーズ】filter_mapメソッド確認してみた

# はじめに
今回はfilter_mapに関する内容です。Ruby3.1の新しい概念の一つにfilter_mapメソッドがあるので簡単にまとめてみます。

# 確認してみた
環境はruby 3.1.4です。
[こちら](https://qiita.com/heysan/items/82bdfb7af4325f05e0e5)によると、filter_mapメソッドは各要素に対してブロックを評価した値のうち、真であった値のみの配列を返すメソッドらしいです。
実際に配列に対してfilter_mapメソッドを実行
~~~ruby
fruits = [“banana”, “pineapple”, “grape”, “apple”, “grape”, “pineapple”, false, nil]
fruits.filter_map{|fruit| fruit}
~~~
すると、
~~~
irb(main):001> fruits = [“banana”, “pineapple”, “grape”, “apple”, “grape”, “pineapple”, false, nil]
irb(m

元記事を表示

Ruby芸160チャレンジ(#14)For文+変数+Sleep

## この記事は何
[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/14.md

“`bash
#!/bin/bash
n=1
while [ $n -le 100 ]

元記事を表示

Ruby で Property-Based Testing を試してみる

:::note info
この記事は、[LITALICO Engineers Advent Calender 2023](https://qiita.com/advent-calendar/2023/litalico) シリーズ2の14日目の記事です。前日は、@s_yk の[「中途入社者向け共通オンボーディングの感想」](https://qiita.com/s_yk/items/9ccddc747473f887cdde)でした。
:::

# はじめに

LITALICO プロダクトエンジニアリング(PE)部の片桐英人(かたぎり えいと)です。LITALICO EngineersAdvent Calendar 2023 に参加するのは2回目です。前回は、[Rails アプリケーションでパスキー認証を実装してみる](https://qiita.com/eito_katagiri-litalico/items/ce4be95cb27bc37044d3) という記事を書きました。

テストを書いていて悩むことがあります。例えば、「文字列を入力として受け取り、その文字列が4文字以上8文字以下で

元記事を表示

Darklaunch(ダークローンチ)を導入してチーム開発を進めやすくした

[GLOBIS Advent Calendar 2023](https://qiita.com/advent-calendar/2023/globis) 14日目の記事です。

こんにちは!GLOPLA LMS開発メンバーの太田です。

開発をしていると「大きな機能の開発」をすることがあると思います。

私たちが開発しているプロダクトの開発メンバーは比較的多く、スクラムチームとして3〜4人くらいのチーム構成になるよう分かれて開発をしているため、あるチームが「大きな機能の開発」を担当することがあるのですが、開発途中の機能をメインブランチに混ぜると他チームのリリースの妨げになってしまいます。[^1]

この記事では、この困りごとを解消するためにDarklaunchを導入した話について書きます。

## Darklaunch(ダークローンチ)とはなにか
ユーザーに気づかれないよう機能をリリースし、内部でパフォーマンスの測定をしたり、動作確認を行ったりできる手法のことです。
これはいわゆるFeature Toggles(Feature Flagsとも呼ばれる)と呼ばれる機構であり、「ON」にす

元記事を表示

rubyで配列から空(諸々)を除外するメソッド

# はじめに
この記事は2023年度の振り返りです。

これは自分が知らなかったメソッドなので、備忘録としてのメモです

# いままで
過去にこの記事を見ていたこともあり、基本的にこれを利用していました

https://qiita.com/ta1kt0me@github/items/33c4d37a65b69b75ee40

“`ruby
[1, 2, nil, 3, “”, []].compact
=> [1, 2, 3, “”, []]

[1, 2, nil, 3, “”, []].compact.reject(&:blank?)
=> [1, 2, 3]
“`

# こんな便利メソッドがあった!!
“`ruby
[1, 2, nil, 3, “”, []].compact_blank
=> [1, 2, 3]
“`

https://qiita.com/SoarTec-lab/items/0c19a4eb5e17c417d165

# さいごに
rails6.1から追加されていたのに、今まで知りませんでした。
ここ最近rubocopとバトルしていて気付いたのですが、r

元記事を表示

OTHERカテゴリの最新記事