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

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

元記事を表示

【Ruby】処理の実行時間を知りたい

## 背景
・leetCodeをやっていると処理時間が表示されるので、パフォーマンス改善を意識することができる。
・ただし、submitした状況によって処理時間にブレが発生する。
・難易度が簡単なやつほど、処理が単純なのでほどブレが大きい。
→ ローカルでやってみるか。

## 実装(サンプル)
“`ruby: sample.rb
require ‘active_support’
require ‘active_support/core_ext/benchmark’
result = Benchmark.ms do
# 処理
end
puts “処理概要 #{result.ceil(5)}s”

“`
## 解説
・Rubyには標準でBenchmarkというモジュールがある。
・msメソッド(ミリ秒で表示する機能)を使うには、active_supportでenchmark.rbが拡張されているものを使う必要がある。
・小数点以下がすごく長いので、適当な位置でceilメソッドを使用してみた。

## 参考
https://spirits.appirits.com/doruby/

元記事を表示

IRB: Let’s Use Autocomplete

IRBの最新の自動補完機能を誰よりも使ってるぺん(@tompng)です。
IRBの補完についてGoogleで検索すると `disable` `turn off` などと書かれた記事ばかりが出てくるのですが、今のIRBは自動補完の問題点がかなり解消しています。
無効化設定している人はいますぐ `~/.irbrc` を開いて `IRB.conf[:USE_AUTOCOMPLETE] = false` と書かれている行を消しましょう。

## 自動補完の問題点とどう解消されたか

### 補完ダイアログが大きくて邪魔・入力行が上にずれる
ターミナルの高さとカーソルの位置に応じて、補完ダイアログの表示サイズを調整するようになりました。
https://github.com/ruby/reline/pull/542
![dialog_height.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/16596/82a95e27-b8d6-a730-23ce-a82eaf7d6d3c.png)

### 色が見づらい

元記事を表示

4メソッド(puts・print・p・pp)の出力結果の微妙な違い

## はじめに
今回、Rubyでプログラム問題を解いていた際、
“`
$ ruby random.rb
[“A”, “B”]
[“C”, “D”, “E”, “F”]
“`
の2行の配列の形で出力したいところを、
“`
$ ruby random.rb
A
B
C
D
E
F
“`
でしか出力できず、その理由が
puts, print, p, ppで微妙に挙動が異なることを学んだので、
アウトプットとしてまとめてみたいと思います。

### puts
– オブジェクト出力後の末尾に、`改行を加えて`出力する
– putsメソッド自身の戻り値は、nil
“`
puts 12345
puts ‘abcde’
12345
abcde
=> nil

# 改行文字\nで改行される
puts “abc\nde”
abc
de
=> nil
“`

### print
– putsとは反対に、`改行を加えない`で出力する
– putsメソッドと同じく、printメソッド自身の戻り値もnil

“`
print 12345
print ‘abcde’
12345abcde=> nil

元記事を表示

文系大人初心者プログラミングするよ🔰start

38歳にして、急にプログラミングをはじめることに。
急に?というか、元々やってみたいなと思っていました。

仕事で必要とか、何かの理由がはっきりあるわけではなく
目標が明確にあるわけでもない。

ただ、なんとなく
今はITとは違う業界で働いているけど、
ITに関わることができるようになるといいなぁ とか
プログラミングとか出来たら素敵そう とか:upside_down:
そんなことはずっと思っていて

まあでも?
仕事しながらだし、文系ですし
38歳他にやることあるやんとか笑
もにょもにょ考えてたら何年か経っており、、
思い切ってプログラミングスクールを申し込みました

さらっと学習をしてみたけど
とにかく卒業優先で進めてきたので
復習と今後使えるように学習してきたことをまとめたいなと思って
自分の忘備録用に記事書いていきます:hugging:!

元記事を表示

【Rails】gem configで定数管理を行う手順

# はじめに
`CORS`の設定でこのようにドメインをベタ書きしている点が気になったので、gem `config`を用いて定数管理する方法をまとめました。
“`ruby:config/initializers/cors.rb
Rails.application.config.middleware.insert_before 0, Rack::Cors do
allow do
origins ‘http://localhost:8000’

resource “*”,
headers: :any,
methods: [:get, :post, :put, :patch, :delete, :options, :head]
end
end
“`

# 導入手順
https://github.com/rubyconfig/config

“`ruby:Gemfile
gem ‘config’
“`
“`ruby
bundle install
“`

`generate` コマンドを実行すると、`confi

元記事を表示

JqueryでRedmineの「wikiページ」をもっと便利に(フィルタリング機能と移動機能)

## JqueryでRedmineの「wikiページ」をもっと便利に(フィルタリング機能と移動機能)

[Redmine Advent Calendar 2023](https://adventar.org/calendars/8974)の13日目の記事として作成しました。

[Redmine Advent Calendar 2023](https://adventar.org/calendars/8974)の11日目の記事として[JqueryでRedmineの「活動ページ」をもっと便利に②(フィルタリング機能と移動機能)](https://qiita.com/yam_asaki/items/2428610fd89bc73ce0ab)を作成しましたが、「活動ページ」だけではなく、「wikiページ」にも「フィルタリング機能と移動機能」を追加できそうな気がしてきましたので、試してみた結果を記事にまとめました。

* * *
### 既存のRedmineで不便なこと、改善したい点

Redmineのwikiページは、マークダウン形式でリッチなテキストを作成できる便利な機能です。ただし、か

元記事を表示

~memo~ Rspecでメソッドの呼び出し回数をテスト時に実際にメソッドも呼び出したい場合

メソッド呼び出し回数をテストしたいけど、モックにしてしまうのではなくて、実際にメソッドも呼び出してその結果も確認したいー!
ということがあり、色々調べたらブロックで呼び出しが出来ました。

“`ruby
before do
org_method = xxx_instance.method(:xxx_method)
allow(xxx_instance).to receive(:xxx_method) { |*args| org_method.call(*args) }
end

it “” do
subject
expect(xxx_instance).to have_received(:xxx_method).once
# expect ~
end
“`

ありがとうブロック

元記事を表示

Rails の状況について振り返り2023年

静岡でフリーランスでWeb開発をしているkazuomatzです。

[静岡 Advent Calendar 2019](https://qiita.com/advent-calendar/2019/shizuoka)の2日目に[「Rails10年選手がGoの勉強会に参戦してきた」](https://qiita.com/kazuomatz/items/ce44c92d2e90a96e9380)というエントリーを投稿して、あれから4年が過ぎました。

Goやるといいいつつ、この4年間でGoの成果物は全くなく、あいかわらずRailsを使っていろいろなWebサービスを開発しています。

当時、Ruby/Railsの状況については、このように書いていました。

## 2019年当時のRuby / Railsの状況

– 2〜3年前に開発したWebサービスがサポート外のRailsで動いている
– とはいえ、Railsのバージョンアップする時間・費用がない
– 慣れ親しんだライブラリーが更新されず、最新のRails環境で使えない

2019年といえば、当時の安定バージョンはRails 5.2系で、R

元記事を表示

あなたの知らないちょっと役に立つmrubyの話 2

こんにちわ軽量Rubyフォーラムの石井です。
みんなの知らないmrubyの話1に続いて2です。
## mrubyデバッガ

mrubyには2014.11に公開された1.1.0よりCUI debuggerが付属しています。
mrubyをビルドしたあとに作成されるmruby/bin/mrdbがそれです。
mrubyを説明した際に「えっ!?mrubyってデバッガないの?」とよく言われていました。
作ったことは作ったのですが告知が不十分でほとんどの人が知らないという・・・・。
(開発には当時三菱電機マイコン機器ソフトウェアに在籍されていたYuuuさんにもご協力いただきました)

スクリプトもバイナリファイルもデバッグ可能です。
コマンドラインで実行するブレークポイントや式評価などの出来るシンプルなものです。

マニュアル
https://drive.google.com/file/d/1YCaY96du6xTQ9oy4-JCYFrr9QhD9McYI/view?usp=sharing

デバッガのすべての機能はAPIとして利用可能です。機能拡張やIDEからの呼び出しなど出来るといいなぁと思って

元記事を表示

Ruby芸160チャレンジ(#13)ファイルがなければ作成する

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

“`bash
$ [ -e unfile ] || touch unfile
“`

元記事を表示

メール機能の実装 ( ruby on rails )

# まえがき
**[DMM WEBCAMP Advent Calendar 2023](https://qiita.com/advent-calendar/2023/infratop)** 13日目記事です。

DWCメンター・卒業生が記事を投稿しておりますので、是非他の記事もご確認ください!

# 初めに
ここでは,rubyのフレームワークである,ruby on railsを使用して,メールを送信する機能を実装します.

# 1. メイラーの作成
“`shell
$ rails g mailer GroupMailer
## 以下実行ログ
create app/mailers/group_mailer.rb # mailerのコントローラー
create app/mailers/application_mailer.rb # アプリケーションコントローラーと同じようなもの
invoke erb
create app/views/group_mailer # mailerのテンプレートのディレクトリ
create app

元記事を表示

OTHERカテゴリの最新記事