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

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

RSpecのパラレル実行:効率的なテストのための道

## はじめに
開発の現場では、テストの実行時間がプロジェクトの生産性に直接影響を与えます。特に大規模なプロジェクトでは、テストが肥大化し、時間がかかりがちです。ここ最近は私が普段使っているRSpecというRuby on Railsでよく使われるテストの実行時間を削減するためにも、パラレル実行(並列で実行するテストの方法)の導入の必要性を感じ始めました。
この記事は「テストをパラレル化してみたいよ」という計画についてまとめたものになります。

## パラレル実行の必要性
テストの実行時間を短縮することは、開発サイクルを加速し、より迅速なフィードバックを可能にします。これは、バグの早期発見や機能改善の迅速な実装につながり、結果として生産性が向上します。

## 実現方法の具体化(Myappの例)
例えば`Myapp`アプリというでRSpecのパラレル実行を設定するには、以下の手順に従います:

### Gemの導入
– `Gemfile`に`parallel_tests`を追加します。

“`ruby
gem ‘parallel_tests’
“`

– コマ

元記事を表示

一年を振り返りつつ Ruby コミュニティに関わっていくこころみ

# 一年の振り返りと Ruby コミュニティへの新たな歩み
– Ruby コミュニティに参加してみたら楽しかったので
– 2024年は関わっていこうかなと考えています。

# 1: 自己紹介
– 吉澤修(よしざわおさむ) [@pugiemonn](https://qiita.com/pugiemonn)
– 調布市飛田給
– 4月から駆け出し事業部長
– ![CleanShot 2023-12-17 at 15.32.50@2x.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1624/c28d0a20-a973-9053-e1e2-be2c5e98b16a.png)

# 2: JobQ Town について
– 人材匿名 Q&A サービス Rails 産
【Rails】バリデーションのuniqueness: trueについて

# はじめに

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

今回は、“Ruby on Rails“のバリデーションの“uniqueness: true“についてです!
基礎的なことなのですが、備忘録として残したいと思います!

# 注意点

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

# 環境

:::note
Ruby 3.2.2
Rails 7.0.6
:::

# バリデーションとは

https://railsguides.jp/active_record_validations.html

“バリデーション“とは、“Ruby on Rails“の“Active Record“に搭載されている**正しいデータだけをデータベースに保存するための機能**です!

一般に利用可能な“ビルトインヘルパー“が用意されており、
– “presnce“:指定された属性が空でないことをバリデーション
– “numericality“:指定された属性に数値のみが使われていることをバリデーション
– “l

元記事を表示

【Rails】外部APIを自社システムに連携するまでの流れを解説

## はじめに
どうもこんにちは、もきお([@mokio_50](https://twitter.com/mokio_50))です。
突然ですが上司から「このAPIうちのシステムで使えるよう実装しておいてもらえる?」と言われたら実装イメージは付きますでしょうか?

もちろんこんな雑なタスクの振り方はされないですが、当時の自分はさっぱりわけワカメ状態でした。なので今回はAPI連携には何が必要でどういうふうに実装したら良いのかを解説していきたいと思います。

あくまで実装の一例程度に見ていただけますと幸いです。

また実際に実装した一連の流れは以下の記事にまとめていますので合わせてご覧いただけますと幸いです。

https://qiita.com/mokio/items/6e65ff8572f303c18750

先日交流会でもLT登壇した際にこの話をしたので忙しければこちらでも!

https://docs.google.com/presentation/d/1ZqJGjvaKSLI-In6XAd_4fvknPLBzdOevkbR_XfJZFfU/edit#slide=id.g12adc

元記事を表示

なぜCrystalでは共有ライブラリを作成して他の言語から呼び出せないのか

## はじめに

こんにちは。
今日はこれまで暖めていて、やれてなかったネタをやります。
RubyのC拡張をCrystal言語で記述して、Rubyから呼び出したいと思ったことはないでしょうか?

Crystalを使い始めた頃、これを何度も想像しました。でも不思議なことに、Crystal言語で作られたRubyのGemはまず見かけませんよね。

それには理由があります。実は、Crystal公式は、Crystalを作って作成したライブラリを他の言語から呼び出すことを推奨してないのです。

いったいどうしてでしょうか。
また、本当にCrystalは他の言語から呼べないのでしょうか?

## 公式は他言語からのCrystalの利用を推奨していない

Crystal Forumのスレッド [Embeddable / Interoperable with ruby](https://forum.crystal-lang.org/t/4894/35) の asterite さんと beta-ziliani さんのやりとりから推測されるCrystal公式の見解は次のようになります。

1. Crysta

元記事を表示

【脱怠惰】振り返りの質を改善し、改善アクションの精度を高める

# 本記事の想定読者
以下に当てはまる方に役立つのではないか?と思っています。
– 作成するプルリクがなかなかマージされずに苦労している
– 自分が書いたコードを見直そうと考えているもののなかなか手をつけられていない
– 「全然上記に当てはまらないわ、自分対象者じゃないわ」と思った方

# レビューコメントにじっくり向き合う時間がない(のは僕の言い訳でした…)
エンジニアの仕事の中で、**プロダクトの品質を高める**ための仕事があります。

皆さんお察しの通り、**PRレビュー**です。

我々エンジニアは日々、プロダクト品質向上を目指し、レビューという行為をもってしてコードに向き合っているのではないかと思います。
僕が所属するチームも例外ではなく、僕自身日々多くのレビューコメントを頂いています。

そんなレビューコメントですが、かくいう私は現在新卒一年目ということもあり、他の方よりも知見が少ないこともあったりして、レビューコメントもその分増えるわけです。

正直なところ、レビューがなかなか通らなかったりすることもあります。
その際は、発狂とまではいかないまでも、心の叫びがtime

元記事を表示

railsでブロック機能実装してみた

# 概要
ブロック機能を実装しようとしたところ、記事としてまとめられているものがなかったのでアドベントカレンダーの企画に便乗して記事の執筆に挑戦しました!!

初めて記事を書くので拙いコード、文章になってしまっていたらごめんなさい
この記事を参考にしてブロック機能を実装して頂けたらうれしいです
改善点などあればぜひコメントお願いします

## 具体的にできること
ユーザーをブロックした場合そのユーザーから
– マイページを見られない
– フォローされない
– DMが送られてこない
– 投稿一覧、いいねした投稿一覧を見られない

マイページのみにフォローボタン、DMのリンク、投稿一覧、いいねした投稿一覧を置く
➡ブロックされている場合は通常のマイページを見られなくする
➡不審なユーザーからアクセスされないっていう感じです

# 完成図
![Geektwitter12 – Google Chrome 2023-12-10 16-38-32.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3634732/160

元記事を表示

Ruby Gold3.1合格後の開発等から感じたこと

# はじめに
Ruby Gold3.1合格した後、先輩とのお話やあるシステムの開発に携わる中で「これはRuby Goldで学んだ知識が生きている!」と感じたことをまとめてみました!

# 感じたこと
### 1.rubyとrailsのメソッドを区別できた
[合格記事](https://qiita.com/Takaharu_01/items/ad583a1c78a6290f7954)にも記載した内容になります。先日先輩からあるメソッドに関して質問を受け、そのメソッドはruby goldの勉強の中では触れていなかったため、もしかしたらrailsのメソッドなのではないかと推測できました。
Ruby Gold合格前まではrubyの知識不足によりrubyとrailsのメソッドが混同してそのような推測はできなかったのですが、Ruby Goldの勉強でrubyのメソッドの知識が増えたことで、知らないメソッドはrailsのメソッドかもしれないという推測ができたと思います。

### 2.例外処理周りの実装に強くなった
begin rescueを使用して例外処理を組む機会があり、例外が発生した時にどの

元記事を表示

Ruby芸160チャレンジ(#17)標準入力およびファイルへの書き込みを同時に

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

“`bash
$ while read ln ; do echo $ln ; done

元記事を表示

Sinatra×Websocket×LINE×ペッパーズゴーストでホログラムを作ろう

## はじめに
本記事は[Life is Tech! Advent Calendar2023](https://qiita.com/advent-calendar/2023/life-is-tech)の17日目の記事です!

初めまして!関東のWebSコースメンターのみゅーらです!

今回初めてAdvent Calenderを書くにあたって非常に悩みました、というのもほかのメンターさんほどまだ深いところを紹介できる自信がなかったからです。

さぁ困った。僕にあるものはそんなに多くない!じゃあ僕を構成しているものは何だ!

1. 趣味のディズニー
1. 研究会で行っているメディアアート
1. Life is Tech!でやってるWebService

うーん、幅は広くて多趣味だけど全部深くまで話せるかというと、、、。

…そうだ!
これらを全部組み合わせよう!

ということで今回は
**`Sinatra × Websocket × LINE × ペッパーズゴースト`**
でちょっと面白いホログラムを作ってみようという記事でございます。

すこーし長い記事になるのでゆっくりとお楽しみく

元記事を表示

[rails] find_by_sqlで結合先テーブルのカラムを取得する

# はじめに
Active Recordで表現しきれないクエリを記述するときに活躍するfind_by_sqlですが、find_by_sqlを呼び出したモデル以外のテーブルのカラムを取得する際に少し悩んだのでそちらを共有します。

(※実際にfind_by_sqlを使用する場合は複雑なテーブル構造やクエリが想定されますが、今回は簡単のため単縦なテーブル構造とクエリを使用します。)
## テーブル構成

##### usersテーブル
|id|name |age|
|–|——|—|
|1 |taro |20 |
|2 |hanako|22 |

##### postsテーブル
|id|title |user_id|
|–|————-|——-|
|1 |taro’s post |1 |
|2 |hanako’s post|2 |

## 結合先テーブルのカラムを取得する
以下のように結合先のテーブルのカラムも取得するSELEC文を記述し、`Post.find_by_sql`を実行して見ると戻り値はpostテーブル

元記事を表示

Rails初学者に知ってほしいこと

# はじめに
初めまして:exclamation:
DMM WEBCAMP mentor Advent Calendar 2023 :christmas_tree: 17日目を担当します@y-428です:exclamation:

Qiita初執筆ということで、誤字・脱字や分かりにくい表現など、至らぬ点もあるとは思いますがどうか温かい目で見守っていただければと思います:bow:

そんな私が今回取り上げたいのはRails初学者へ向けた知識となっています。

これは主に、エラー解決ができなくて挫折してしまっている方をターゲットとしていますので、これに当てはまっている方はもちろんのこと、他にもRailsを学び始めた方、Railsを教える立場にある方などなど、少しでも読んで楽しんでいただけたらなと思います。

では早速やっていきましょう:exclamation:

# 変数とは
記念すべき最初に押さ

元記事を表示

JqueryでRedmineの「チケットページ」をもっと便利に(年ごと、月ごと、四半期ごとの集計機能の開発)

## JqueryでRedmineの「チケットページ」をもっと便利に(年ごと、月ごと、四半期ごとの集計機能の開発)

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

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

Redmineのチケットページでは、強力なフィルタリングとグルーピング機能が提供されていて、その機能を活用することで、必要な情報を必要な出力結果として取得することができます。
グルーピング機能は同じグループごとに、そのグループに属しているチケットの件数と、そのグループのタイトル部分で開閉ができるので、不要なグループは閉じることによって、必要なチケットだけを表示でき、可読性の向上に寄与しています。
下図の例のように、「トラッカー」でグルーピングをして、グルーピングのタイトルであるトラッカー名ごとに表示、非表示をタイトルをクリックすることで可能になります。

チケットページのフィルタリン</p></blockquote>
</blockquote>
<aside class='widget widget-post'>
<div class='tag-cloud-link'>Ruby</div>
<div class='tag-cloud-link'>JavaScript</div>
<div class='tag-cloud-link'>Rails</div>
<div class='tag-cloud-link'>jQuery</div>
<div class='tag-cloud-link'>Redmine</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/yam_asaki/items/176d07588793b3e66b5d'>元記事を表示</a></div>
<h3 id=importmap-railsを使ってMetaMask認証をしてみる。

## あいさつ
こんにちは、[ryosk7](https://x.com/ryosk7)です。

この記事は、[Ruby on Rails Advent Calendar 2023](https://qiita.com/advent-calendar/2023/ruby-on-rails) 16日目の記事です。

## はじめに

技術書典15で出展した「Rubyでつくる NFTマーケットプレイス」を参考に、MetaMask認証機能を作っていきます。

https://techbookfest.org/product/4D0SCAdL9Rk75SttLJ4xsS?productVariantID=mihs8CKjPy3SvwUwF1N3XJ

元々、NFTマーケットプレイスを実装する際に、こちらの記事を参考にしていました。

https://dev.to/q9/finally-authenticating-rails-users-with-metamask-3fj

ただし、こちらの記事ではJavaScript(以下JS)をゴリゴリ書いており、筆者はそこまでJSを書きたくなかったので、

元記事を表示

Rubyにおける`include`と`extend`の使い分け

# Rubyにおける`include`と`extend`の使い分け

### はじめに

Rubyプログラミングにおいて、`include`と`extend`はモジュールのメソッドをクラスに組み込む際に非常に重要な役割を果たします。これらのキーワードは同じ目的のために使用されるように見えますが、実際には異なる動作をします。この記事では、これらの違いとそれぞれの使用例を紹介します。

### `include`の理解

`include`キーワードは、モジュール内のメソッドをクラスのインスタンスメソッドとして追加するために使用されます。これにより、クラスのインスタンスがモジュールのメソッドを利用できるようになります。

#### 使用例:

“`ruby
module Loggable
def log
puts “#{self.class} log something.”
end
end

class Product
include Loggable
end

product = Product.new
product.log # “Product log som

元記事を表示

ブロック変数とは?

ブロック変数は、Rubyのプログラミングにおいて、ブロック内で使われる変数のことです。

ブロックは、do … end または { … } で囲まれたコードの塊で、イテレータメソッド(例えば each, map, select など)と共に使用されます。

ブロック変数は、これらのイテレータメソッドによって供給される値を受け取るために使用されます。

## ブロック変数の特徴と動作
**定義と範囲**

ブロック変数は、ブロックの開始部分で | |(パイプライン)の間に定義されます。
この変数はブロック内部でのみ有効で、ブロックの外部からはアクセスできません。

**値の受け取り**

ブロック変数は、イテレータメソッドから値を受け取ります。例えば、each メソッドが配列の各要素を順にブロック変数に渡します。

## 使用例

例えば、[1, 2, 3].each do |number| の場合、number はブロック変数です。each メソッドは配列 [1, 2, 3] の各要素を順に number に渡し、その都度ブロック内のコードが実行されます。

“` r

元記事を表示

| n | 君は何者?

rubyの学習をしていると

| n | 

| i |

| number |

なんかよくみるやつありますよね、例えば

“` ruby

numbers = [1, 2, 3, 4]
sum = 0
numbers.each do |number|
sum += number
end
puts sum

“`

上記のコードで numbers っていうのは変数で 配列として  1,2,3,4 を代入しているというのはわかるんですが

|number|

変数として宣言した numbers ではないし

単数系だしどこからきたねん! なるほどわからん。状態でした😅

上記のコードが何をしているかというと

– 配列の定義: numbers = [1, 2, 3, 4] この行は、1, 2, 3, 4 という四つの要素を持つ配列 numbers を作成している。
– 合計の初期化: sum = 0 この行は、合計を計算するための変数 sum を0で初期化。これは、配列の要素を加算していくための開始点。

– 各要素の加算: numbers.each do

元記事を表示

Fly.ioでrails db:seedを実行する方法

## 自己紹介
はじめまして、はると申します。現在はスクールに通いながら学習をしています🐥

## 概要
Fly.ioでRailsアプリをデプロイした際に、`rails db:seed`を実行する方法。

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

:::note warn
初学者のためデプロイ周りの知識が浅く、間違っている箇所がある可能性があります。また、うまく行った方法の1つを紹介していますが、より良い方法を知っている方がいたら教えて頂けると嬉しいです🙇
:::

## 結論
RAMサイズを`256MB`から`512MB`に上げた後、

このコマンドでうまくいきました。
“`
hogehoge@hogehogenoMBP アプリ名 % flyctl console

irb(main):001:0> Rails.application.load_seed
=> true
“`

## 詳細
Fly.ioでのseeds.rbの反映方法について調べて見つけたコマンドを実行しましたが、下記のようなエラーが出て実行できませんでした。

“`
hoge

元記事を表示

【Rails】StimulusでGoogleMapApiを扱ったら良い感じだった話

## この投稿は、

DMM WEBCAMP Advent Calendar 2023
シリーズ2 投稿7日目のエントリー(大遅刻穴埋め勢)です。

6日目は、@Hiron0120 さんで、

https://qiita.com/Hiron0120/items/c1e1c5fedc3871c92855

でした。

## はじめに
DMM WEBCAMP でメンターをやらせていただいております。 @tomoaki-kimura です。
Rails7はフロント周りがとても楽しくなりました。 `Stimulus`もその一つです。丁度よい機能と学習コストです。
Rails6環境でも `Stimulus` を使ったJSの管理はかなり有用です。

JQueryも状況によっては全然アリなのですが、どうやら世の中脱JQueryの流れにはなっているようですし、今後を踏まえてキャッチアップしておくのも手ではないでしょうか。

という事で今回は、GoogleMapApiを [Stimulus](https://github.com/hotwired/stimulus-rails)で書いていこうと思います

元記事を表示

Rails × ChatGPT 投稿内容をAIで加工する

:::note warn
**この記事のポイント:** OpenAI APIを使って投稿内容を加工する機能を作りました。今回はある意味ジョーク的な機能ですが、実際にどんな使い道があるかの検討も最後に触れています。
:::

# はじめに

[前回の記事](https://qiita.com/MaTTA_RUNTEQ50B/items/3cb46ddf1be17899df00)でRailsにChatGPT(OpenAI API)による生成テキストをindex画面に表示させる実験を行いました。APIを叩けたことは良いのですが有用かと問われるとそうでもなく、さらにいうとページを読み込むたびにレスポンス待ちに数秒かかるという始末でした。

せめてもう少しだけ実用的な使い道を考えようというのが今回のモチベーションです。

RailsにChatGPTのAPIを用いる流れは前回の記事を参考ください

https://qiita.com/MaTTA_RUNTEQ50B/items/3cb46ddf1be17899df00

# 完成品
Western Modeにチェックを入れた状態で投稿す

元記事を表示

OTHERカテゴリの最新記事