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

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

Ruby 3.3 リファレンスマニュアルのEnumerableモジュールの概要を要約してみる※備忘録

私自身、リファレンスを見ることをしていなかったことを見直し、改めてリファレンスを見ながらRubyを学習しようと思い、早速mapメソッドが気になったので、以下のリファレンスを見てみることにした

Ruby 3.3 リファレンスマニュアル ライブラリ一覧 組み込みライブラリ Enumerableモジュール
https://docs.ruby-lang.org/ja/latest/class/Enumerable.html#I_ALL–3F

しかし読んでみると早速、要約で詰んでしまった。
<以下要約>
繰り返しを行なうクラスのための Mix-in。このモジュールのメソッドは全て each を用いて定義されているので、インクルードするクラスには each が定義されていなければなりません。

Array, Hash, Range, Enumerator等のクラスで、 Enumerableモジュールはインクルードされています。ただし、効率化のため、そのクラスでEnumerableと同名・同等の機能を再定義(オーバーライド)しているケースも少なくなく、特にArrayクラスでは同名のメソッ

元記事を表示

ユーザーアクセスログを監視するためのベストプラクティス

## はじめに

こんにちは、皆さん!今回は、ユーザーアクセスログを監視するためのベストプラクティスについてお話しします。クラウドベンダーの多様なサービスを活用しながら、効果的なログ監視を実現する方法を探っていきましょう。

## なぜユーザーアクセスログを監視するのか?

ユーザーアクセスログの監視は、セキュリティの強化、パフォーマンスの最適化、ユーザー行動の分析など、多くの利点があります。これにより、システムの異常を早期に検知し、迅速に対応することが可能になります。

## クラウドベンダーのサービスを活用する

### AWS CloudWatch

AWS CloudWatchは、AWSのリソースとアプリケーションの監視に最適なサービスです。ログデータを収集し、リアルタイムでモニタリングすることができます。アラームを設定して、特定の条件が満たされたときに通知を受け取ることも可能です。

### Azure Monitor

Azure Monitorは、Azureのリソースを監視するための包括的なソリューションです。ログデータを収集し、分析することで、システムのパフォーマンス

元記事を表示

【Render × Xserver】独自ドメインでのデプロイ時の注意点と解決策

# はじめに
本記事では、「**Render**」にデプロイしたアプリを独自ドメインで公開する際の注意点と解決策についてまとめます。今回は、「**お名前.com**」での**ドメイン取得**ができなかったため、以前契約していた「**Xserver**」を利用しました。

この記事が皆さんのお役に立てば嬉しいです!

https://www.xserver.ne.jp/

https://www.onamae.com/

# 前提/条件
– rails7系
– ruby3.2.3
– PostgreSQLを使用
– Renderでデプロイ済み
– Xserverでドメイン取得される方

# 注意点

### XserverでDNSレコード画面で「DNSレコードの確認・設定を行うことができません」表示

![Xserver-error.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3772961/024ae093-eeb1-2cd6-f3d8-4dcfb18d3a75.png)

DNSレコードの表示ができ

元記事を表示

[個人開発] 食品の在庫を簡単に管理できるサービスを作ってみました

## はじめに

こんにちは。ryosuke([@ryousuke_doi](https://x.com/ryousuke_doi))と申します。現在プログラミングスクール RUNTEQ にて、Ruby on Rails を学習しています。

今回リリースしたサービスの紹介と開発の振り返りをまとめてみました。
記事を書くのが初めてなので、温かい目で見ていただけると幸いです。また、技術的な部分での誤りやサービスについての感想などありましたら、コメント等で教えていただけると助かります。
## 作成したサービスの紹介
[![Image from Gyazo](https://i.gyazo.com/385a7078b695448cfef79567d7cd142b.jpg)](https://gyazo.com/385a7078b695448cfef79567d7cd142b)

### サービスURL(レスポンシブ対応済み)

https://pantry-chef-notifier.onrender.com

https://github.com/ryo-mogura/Pantry-Che

元記事を表示

New Relic を使って Redmine のオブザーバビリティを実現

# はじめに
 Redmine は、プロジェクト管理ができる人気のあるオープンソースのツールです。多くの企業や開発チームがタスク管理、バグトラッキング、ガントチャートなどの機能を活用して効率的にプロジェクトを運営しています。しかし、プロジェクトの規模が大きくなるにつれて、システムのパフォーマンスを監視し、最適化することが重要になってきます。ここで役立つのがNew Relicです。

 New Relicは、アプリケーションのパフォーマンスをリアルタイムでモニタリングし、問題を迅速に特定・解決するためのツールです。エンドユーザーの体験を向上させるために、リソースの使用状況、レスポンス時間、エラー率などを詳細に分析できます。これにより、 Redmine のパフォーマンスを向上させ、ユーザーの満足度を高めることができます。

 Redmineはプラグインの導入などでカスタマイズされることが多いです。こうした場合、New Relicを使って収集したデータからボトルネックを特定したり、データベースのインデックスを見直す必要があるかどうかなどの洞察を得ることができます。

 今回は Redmine

元記事を表示

37signalsが書くコードの”Service Object”を見てみる

## 挨拶

自称、Ruby on Rails フロントエンドエンジニア🤣のnaofumiです。X [@naofumi](https://x.com/naofumi)では色々勝手なことを書いていますが、最近Qiitaも頑張り始めました。

それでは早速本題です!

## ええっ!!??
37signals商品のRailsコードって見られるの?

そう!Ruby on Railsを開発した37signals社が、どのようにこのフレームワークを活用し、どのようなコードを書いているかを見ることができるのだ!

細かい話は省くが、7月3日に37signals社は[Writebookというアプリを新規に公開した](https://world.hey.com/jason/introducing-writebook-e217cae3)。自由にダウンロードでき、自分でサーバ(例えばさくらインターネットのサーバとか)を用意すれば、[簡単にインストール](https://books.37signals.com/2/the-writebook-manual/27/installation)できる。(

元記事を表示

[作成中]RSpecについて初学者段階のメモ

※間違いなどございましたらご指摘いただけると幸いです
※随時更新予定

# 概要
以下、https://semaphoreci.com/community/tutorials/getting-started-with-rspec より引用
> RSpec is a testing tool for Ruby, created for behavior-driven development (BDD). It is the most frequently used testing library for Ruby in production applications.
「RSpec は、ビヘイビア駆動開発 (BDD) 用に作成された Ruby のテスト ツールです。本番アプリケーションで最も頻繁に使用される Ruby のテスト ライブラリです。」(Google翻訳)

– `RSpec`はRailsアプリケーションの開発で利用するテストツール
– Railsに最初から搭載されている”minitest”というテストツールも存在するが、RSpecが実質デファクトスタンダードとされ

元記事を表示

【Ruby on Rails】Google APIを使ってSpread Sheetを操作する

いつも大変お世話になっている、
私が大好きなGem(というかGem集)

google-api-ruby-client

https://github.com/googleapis/google-api-ruby-client/blob/main/docs/usage-guide.md

仕事でもHeavy useしていたり、
趣味でもなんだかんだで使ったり、
ソースコードを読んで勉強させてもらったりと、
個人的には結構思い入れがある技術です

勝手に、もう記事を書いている気でいたが、
何も書いていなかったのでおさらいしとく。

## GCPでAPIを有効にする

まずは、GCPで使いたいGemのAPIを有効にしておく。

例えばSpread sheetなら、
Google Sheet APIを有効にしておく

![スクリーンショット 2024-07-09 21.53.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1290117/b9c67958-e365-dcaa-3665-d0151ee2c6

元記事を表示

【Ruby on Rails】画面読み込み時にレコードがDELETEされる

## はじめに
Ruby on Railsを学習しているのですが、画面読み込み時の処理(詳細は後述)で登録したレコードが消えるという現象が発生しました。
結論から言うと私の勉強不足、仕様の理解不足によるものでした。
解決にあたり、モデル、アソシエーションの理解が深まったところもあったので、記録として残すことにしました。
コードも冗長ですが、ご容赦ください。

## 開発環境
* Docker
* Ruby 3.3.3
* Rails 7.1.2

## 起:機能の実装

### ■機能の概要
ブックマークの管理機能を作成していた。
![スクリーンショット 2024-07-09 17.03.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737553/45217d30-5df2-4e22-b5de-ac2f9c2bee96.png)
(グレーの背景がカテゴリ、グリーンの背景がフォルダの中身)

これらはカテゴリ、フォルダ、ブックマークで要素が構成されている。
また階層イメージとしては以下の2種類が挙げ

元記事を表示

「オブジェクト指向設計実践ガイド」を読んで、設計を学ぶ

# はじめに
業務をこなしていく中で、皆さん以下のように感じたことはないでしょうか?

**「システムは動くけど、コードの設計は正しくできているんだろうか…」**

仕様を満たす実装は、ある程度経験を積んだエンジニアであれば問題ないと思います。
ただ、それでもレビューで「このメソッドは切り分けて…」など、設計に関する指摘が多いなと最近感じています。
なので、次にステップアップするためには、`設計`だと思い、以下の本を読み、学習しました。

[オブジェクト指向設計実践ガイド 〜Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方〜](https://amzn.asia/d/21v0rNf)

自分は業務で主にRailsを扱っています。先輩エンジニアにもオブジェクト指向言語を扱う上での設計の良書とお聞きしました。

学んだ内容を、自分なりに言語化して、噛み砕いて整理しました。
その内容をアウトプットいたします。

# 目次
1. [オブジェクト指向設計](#1-オブジェクト指向設計)
1. [単一責任のクラスを設計する](#2-単一責任のクラスを設計する)
1. [依存

元記事を表示

Rails7.1、ruby3.34を詰まらずインストールしたい人へ

rubyのインストール中にライブラリ不足によるコンパイルエラーが複数回発生し、解消したら次のエラー、それも解消したらまた次の・・・のように無駄に時間がかかったので、スムーズにインストールできるようにまとめてみました。

## 環境
WSL(Ubuntu 22.04.4 LTS)

## 手順

### 必要なライブラリをインストール
“`console
sudo apt update -y
sudo apt upgrade -y
sudo apt install build-essential -y
sudo apt install -y libssl-dev libreadline-dev zlib1g-dev libyaml-dev libz-dev libffi-dev
“`
### rbenvとrubyをインストール
“`console
# rbenvをインストール
git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
echo ‘export PATH=”$HOME/.rbenv/bin:$PATH”‘

元記事を表示

Ruby技術者認定試験に合格してみて【Silver編】

## はじめに
2024年の6月27日に**Ruby Association Certified Ruby Programmer Gold version 3**(以下「Ruby Gold」)に合格しましたので、どのように勉強したのか、実際に役立ったのか等を**Silver編**と**Gold編**の二つに分けて記事にしようと思います。
Silverは90点で合格しました。

![スクリーンショット 2024-07-08 21.22.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/636995/3ea1d68e-c013-4d17-1e75-c222c1cef8a5.png)

## Ruby技術者認定試験とは

Rubyベースのシステムを設計、開発、運用するエンジニア、Rubyでシステム提案を行うコンサルタント、Rubyを教える講師及びRubyを学ぶ学生などを対象とした認定試験制度です。

### Silver
Rubyの文法知識、Rubyのクラスとオブジェクト、標準ライブラリの知識について、基

元記事を表示

【DP】動的計画法をRubyで学ぶ

# はじめに
競技プログラミング的なものに少し手を付け始めている中、解けそうで解きにくい(工夫orゴリ押しでなんとか解けるような)カテゴリーの問題があった。どうやら、そいつは***DP***というアルゴリズムを用いると解きやすいようで、競プロ初心者がブチ当たる壁でもあるらしい。調べてみると難しそうなのと、Rubyを用いた参考例があまり見当たらないので、本記事にアウトプットしながら少しずつ理解を深めていく。

# DPとは
動的計画法(***Dynamic Programming***)

https://ja.wikipedia.org/wiki/%E5%8B%95%E7%9A%84%E8%A8%88%E7%94%BB%E6%B3%95
>対象となる問題を複数の部分問題に分割し、部分問題の計算結果の記録を利用して全体の問題を解く手法を総称してこう呼ぶ。

https://zenn.dev/sena21/articles/d64aa8b5d10e13
>動的計画法(Dynamic Programming)は、複雑な問題をよりシンプルな部分問題に分割し、それぞれの部分問題の解を再利用するこ

元記事を表示

Rails view helperとテストのリファクタリング:モックをcode smellと感じること

## はじめに

自称、Ruby on Rails フロントエンドエンジニア:joy_cat:のnaofumiです。X [@naofumi](https://x.com/naofumi)では色々勝手なことを書いていますが、最近Qiitaも頑張り始めました。

## 先日のview helperテストのリファクタリング

先日、[Railsのviewテストを書こう](https://qiita.com/naofumik/items/9136c830ed3b8a16b4e8)って記事を書いたが、[view helperおよびそのテストのコード](https://qiita.com/naofumik/items/9136c830ed3b8a16b4e8#現状の並べ替えのステートによって並べ替え矢印の表示を変えるヘルパー)があまりイケてなかった。

そこで今日は、view helperテストのリファクタリングを一緒に考えていきたいと思う。

## 対象のコード

作ろうとしている`ordering_arrow` helperメソッドは、下記のようなテーブルの並べ替えに使う三角ボタンの箇所。

元記事を表示

RailsのCSRF保護について

今回は新規プロジェクトで実際に遭遇した**CSRF保護**について学んだことをまとめます。

## CSRFとは
CSRF(Cross-Site Request Forgery)を簡単に説明すると、悪意のあるユーザーがサーバーへのリクエストを捏造して正当なものに見せかけ、認証済みユーザーを装うという攻撃手法です。Railsでは、一意のトークンを生成して送信のたびに真正性を確認することでこの種の攻撃から保護します。
(引用サイト:https://techracho.bpsinc.jp/hachi8833/2021_11_26/46891)

これだけでは「なんのこっちゃ、、。」となるため噛み砕いて説明します。
もしかしたら一度は見たことあると思いますが、HTMLのheadタグに「= csrf_meta_tags」なんて見たことはありませんか?
※コードはslim形式になっています。

その「= csrf_meta_tags」が私たちが気づかないうちに、セキュリティーをかけていてくれました。

## 「= csrf_meta_tags」の役割
この記述の役割としては、サイトのHTMLに一意

元記事を表示

超初心者のためのRSpec入門ガイド

こんにちは!この記事では、RubyのテストツールRSpecの使い方を超初心者の私が説明します。一緒にステップバイステップで学んでいきましょう!

### 目次
1. RSpecって何?
2. RSpecのインストール方法
3. RSpecの基本的な使い方
4. 実際にテストを書いてみよう!
5. まとめ

# 1. RSpecって何?
RSpecは、Rubyというプログラミング言語で書いたコードが正しく動くかどうかをチェックするためのツールです。コードを書いた後に「ちゃんと動くかな?」と確かめる手助けをしてくれます。

# 2. RSpecのインストール方法
まず、RSpecを使うためにインストールします。以下のコマンドをターミナルで実行してみてください。
“`
gem install rspec
“`
Bundlerを使っている場合は、Gemfileに以下を追加してからbundle installを実行します。
“`
group :test do
    ・・・
gem ‘rspec’
・・・
end
“`
これでRSpecの準備が整いました!

# 3. RSpec

元記事を表示

【Rails】一つのモデルに対して複数の意味を持たせたい(class_name, inverse_of )

# 実現させたいこと
例えばユーザー(User)と本(Book)のモデルが存在している時
Userに二つの意味を持たせたいことがある
– 本を所有しているユーザー(User)
– 本の著者(Author)

“`rb
book.author
# => 本の著者を取得
book.user
# => 本の所有者を取得
“`

同じUserモデルを使って、author、userをそれぞれ取得できる

# モデル作成
マイグレーションファイルは以下のようにBookに外部キーとして
– user_id
– author_id

を持たせます
“`rb
class CreateBooks < ActiveRecord::Migration[7.1] def change create_table :books do |t| t.belongs_to :user, null: false t.belongs_to :author, null: false t.timestamps end end end ``` モデルは下記のよ

元記事を表示

Rubyでデザインパターン (7) Builderパターン

## この記事は何
デザインパターンについて、Rubyでどのような使い方ができるかをまとめた記事です。
デザインパターン自体の解説は詳しく行いません。

## Builerパターンとは
Builderパターンとは、生成するインスタンスへ渡すパラメータを段階的に組み立てることで、複雑なオブジェクトの生成を容易にするデザインパターンです。
詳しくはこちらをご覧ください。

https://qiita.com/takutotacos/items/33cfda205ab30a43b0b1

## Rubyでのコード例
以下のように、生成したいクラスの定義と、そのクラスを生成するBuilderクラスの実装を行います。
それぞれのメソッドで`self`を返すようにすることで、メソッドチェーンでメソッドを書けるようにすることも可能です。

“`rb
class Computer
def initialize(cpu:, ram:, storage:)
@cpu = cpu
@ram = ram
@storage = storage
end

def to_s

元記事を表示

Crystal言語でシングルバイナリを作る

## はじめに

タイトルをキャッチーにしたのは人集めです。ご容赦ください。あまりシングルバイナリの話はしていません。調べ物のスタートに使ってください。

– Rubyでツールを配布するときにはGemにするのが一般的である。
– 単純なツールであればCrystalで書いてバイナリにすることもできる。

## Crystalで静的にリンクしたバイナリを作成する

公式では、

“`sh
crystal build a.cr –static
“`

とすればいいことにされているが、実際には動作しないことが多い。
そこで、muslのライブラリを使っている公式のDockerイメージを使用するとLinux用のバイナリを出力できる。
たとえばこんな感じ。

“`sh
docker run –rm -it \
-v $(pwd):/workspace \
-w /workspace \
crystallang/crystal:latest-alpine \
crystal build a.cr –static –release
“`

Shardsのライブラリなどを利

元記事を表示

Rails: あなたがService Objectでやりたいことは、たぶんActiveRecordで1行でできる

## はじめに

自称、Ruby on Rails フロントエンドエンジニア:joy_cat:のnaofumiです。X [@naofumi](https://x.com/naofumi)では色々勝手なことを書いていますが、最近Qiitaをやろうかなと思っています。

それでは本題です!

## Rails歴が長くても、Railsの便利機能が使えていない人は多い

私はフリーランスとして、ここ数年でいろいろなRuby on Rails案件に入ってきました。その中で強く感じるのは、Railsの便利機能をしっかり使いこなしている人が少ないということです。これは一見シニアっぽい人でもそうです。

とても残念なので、使いこなしている人が少ない便利機能に主に焦点を当てて、Railsの素晴らしさをなるべく多くの人に知っていただこうと思っています。

[前回のviewのテストの記事](https://qiita.com/naofumik/items/9136c830ed3b8a16b4e8)もその一つでした。

今回は、ActiveRecordで関連オブジェクトを一気に作る複数の方法を紹介します。

元記事を表示

OTHERカテゴリの最新記事