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

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

rbenvでRubyのバージョンが更新されないときの対処法

# はじめに
Rubyのバージョン管理で直面した問題について共有します。

# 問題
問題の背景は、プロジェクトでRubyのバージョン`2.7` , `3.3`を必要としていて、現在使用している Ruby のバージョン `2.6.5` をアップグレードする必要がありました。

このアップグレードで直面した主な問題は、`rbenv` を使用して新しいRubyのバージョンをグローバルに設定しても、期待通りのバージョンがシステムに反映されなかったことです。

“`zsh
# Ruby 2.7.2 をインストール
rbenv install 2.7.2

# インストール後の Ruby バージョンを確認
ruby -v
# 出力: ruby 2.6.5
“`

# 解決方法
以下の手順で解決していきます。

## 1. 現在のRubyバージョン状況の確認
`rbenv` が管理しているRubyのバージョンと現在使用されているバージョンを確認します。`rbenv versions` を実行して、Rubyバージョンが更新されない原因が分かってきました。

“`zsh
# 現在インストールされ

元記事を表示

TOCを活用した物流の最適化: スクラム開発で成功するための実践ガイド

## はじめに
物流の最適化は、現代のビジネスにおいて重要な課題です。特に、クラウドベースのソリューションを活用することで、物流の効率化を図ることができます。本記事では、制約理論(TOC: Theory of Constraints)を活用し、スクラム開発の手法を取り入れた物流の最適化について解説します。

## 制約理論(TOC)とは?
TOCは、システム全体のパフォーマンスを制約する要因を特定し、それを集中的に改善することで全体の効率を向上させる理論です。物流においては、以下のような制約が考えられます。

– 在庫の管理
– 配送のスケジューリング
– 倉庫のスペース

これらの制約を特定し、改善することで物流全体のパフォーマンスを向上させることができます。

## スクラム開発とTOCの融合
スクラム開発は、アジャイル開発手法の一つで、短期間のスプリントを繰り返しながらプロダクトを開発していきます。この手法を物流の最適化に応用することで、迅速かつ柔軟に問題を解決することができます。

### スプリントプランニング
まず、物流における主要な制約を特定し、それを解決するためのタス

元記事を表示

RSpecを導入する手順

# はじめに

Rubyで何かを開発するにあたってRSpecを導入したい。

https://rspec.info/

RSpec公式の「Let’s get started!」を見たり、[RDoc](https://rspec.info/documentation/3.13/rspec-core/#install)を読んだりして導入はできるけど、メモ書き程度に導入手順を残す。

なお、RubyやBundler、gitは導入済みであるとする

# 手順

## 1. 開発用のディレクトリを作る

“`sh
$ mkdir awesome_directory
$ cd awesome_directory
“`

## 2. budler init

開発用のディレクトリの中でGemfileを生成する

“`sh
$ bundler init
$ ls
Gemfile
“`

## 3. Gemfileを編集する

“`Gemfile
# frozen_string_literal: true

source “https://rubygems.org”

gem “rspec”,

元記事を表示

【初心者】JRubyでSQLiteデータベースを読み書きする

# 手軽に使えるSQLiteだが思ったよりも苦労した

何もわざわざJRubyなんて使う必要ないと言われそうなんですが、プログラミングを人に教えるときにデータベースの使い方を扱う必要が出てきまして、Windowsで手軽に環境構築できるので、JRubyを使うことにしました。

また、手軽に利用できるデータベースを探していたところSQLiteにたどり着きました。実際、selectは他のDBよりもかなり速いですね(個人が利用する範囲ならば)

ネットで色々と検索したのですが、自分の環境ではJRuby + SQLiteの読み書きは、Rubyのライブラリーではあまりうまく行きませんでした。

普段からJavaでsql2o( https://www.sql2o.org/ )を利用していたので、これをJRubyで呼び出せば行けるのではないかと考えました

# 準備

sqlite-jdbc-3.46.0.0.jar , slf4j-api-1.7.30.jar , slf4j-simple-1.7.30.jar ,sql2o-1.8.0.jar を使います。

sqlite-jdbcは、slf4jに

元記事を表示

AWS ECS上からRailsアプリケーションにBedrock+Claude 3 Haikuを取り込んでみた

## Claude 3 Haikuは安い・美味い・速い

基本的に応答スピードが早く、日本語入出力にも長け、速いのが特徴です。

以下Bedrock経由での価格ですが、Claude 3 Sonnetは他と比較して1/10以下の金額で使えるのが非常に良いです。応

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/293892/9cb13398-28c5-532c-d88b-556845799872.png)

詳細はコチラ

https://aws.amazon.com/jp/bedrock/pricing/

2024年7月時点で、応答速度もSonnetの2倍程度はやく、非常に魅力的です。個人で使ったり、製品のプロトタイプとして活用するには非常に魅力的です。

## AWS Bedrockを使うメリット

– 学習・管理コスト
– AWSに慣れているエンジニアが弊社には多かった
– AIだけAzureに外出しせずとも、AWS内ですべて完結出来る
– セキュリティ

元記事を表示

【個人開発】誰でも簡単に謎解きを作成・回答できる「EnigmaPortals」をリリースしました!👓

## はじめに
皆様初めまして、[ヒデボー](https://x.com/yamarice428 “ヒデボー”)と申します!
プログラミングスクール「RUNTEQ」に入学し現在、WEBエンジニア転職を目指して学習&転職活動を行なっています!
今回、個人開発ポートフォリオとして[EnigmaPortals~謎クリエイト~](https://enigmaportals.com/)を開発しました!

## サービス名
#### EnigmaPortals ~謎クリエイト~

[![Image from Gyazo](https://i.gyazo.com/0d8b483df7e4c9eb17e3b01e828333da.png)](https://gyazo.com/0d8b483df7e4c9eb17e3b01e828333da)

#### ・サービスURL

https://enigmaportals.com/

#### ・Github URL

https://github.com/yamadahideto/EnigmaCraft

## サービス概要
自作の謎を投稿、**AIを使

元記事を表示

書式指定文字列の不思議な挙動

# これは何?

書式指定文字列に変なこと書いてもエラーにならない事に気づいて、色々試してみた記録

# 各種言語の対応

## go

この現象を発見したのは go。

“`go:go
fmt.Printf(“%d %+d %++d %+++d %++++d\n”, 1, 1, 1, 1, 1)
//=> 1 +1 +1 +1 +1
“`

二個以上書いても意味ないけど、エラーにならない。

`+` を書ける場所には ` ` も書けるが、意味的に共存できない。

戦わせると

“`go:go
fmt.Printf(“[%+d]\n”, 1) // [+1]
fmt.Printf(“[% d]\n”, 1) // [ 1]
fmt.Printf(“[%+ +d]\n”, 1) // [+1]
fmt.Printf(“[% + d]\n”, 1) // [+1]
“`

`+` が勝つ。

後勝ちだろうと予想していたので、予想が外れた。

## ruby

ruby も同様に `”%++++++++++++d” % 1` などはエラーにならない。

戦わせてみると

“`ru

元記事を表示

Secrets Managerをrubyのコードから実行してみる

## はじめに
前からSecrets Managerを触ってみたいと思っていたので、今回使ってみることにしました。

## secret managerとは
公式より
>AWS Secrets Manager は、データベース認証情報、アプリケーション認証情報、OAuth トークン、API キー、およびその他のシークレットをライフサイクルを通じて管理、取得、ローテーションするのに役立ちます。多くの AWS サービスは、Secrets Manager でシークレットを保存して使用します。

例えば、Secrets Mangerを使用すると、APIによってデータベース認証情報を取得することができ、なおかつ鍵の更新を自動で行うことができます。

https://docs.aws.amazon.com/ja_jp/secretsmanager/latest/userguide/intro.html

## Secrets Managerの設定方法
実際に、Secrets Managerの設定をして、使用してみたいと思います。
以下の手順でやっていきます。

**新しいシークレットを保存する**

元記事を表示

スケーラビリティを考慮したクラウドネイティブなスクラム開発の実践

## はじめに

こんにちは、皆さん。今回は、クラウドネイティブなスクラム開発においてスケーラビリティを考慮する方法についてお話しします。クラウドベンダーの多様なサービスを活用しながら、どのようにしてプロダクトのスケーラビリティを確保するかについて、具体的な例を交えて解説します。

## スケーラビリティとは?

まず、スケーラビリティとは何かを簡単におさらいしましょう。スケーラビリティとは、システムが負荷の増加に対してどれだけ効率的に対応できるかを示す指標です。具体的には、ユーザー数やデータ量が増加した際に、システムがどれだけスムーズに動作し続けるかが問われます。

## クラウドサービスの活用

### オートスケーリング

クラウドベンダーの多くは、オートスケーリング機能を提供しています。例えば、AWSのAuto ScalingやGoogle CloudのInstance Groupsを利用することで、負荷に応じて自動的にリソースを増減させることができます。これにより、ピーク時の負荷にも対応でき、コスト効率も向上します。

### サーバーレスアーキテクチャ

サーバーレスアー

元記事を表示

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”‘

元記事を表示

OTHERカテゴリの最新記事