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

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

【メモ】BUILD FAILED (Debian 12 on x86_64 using ruby-build 20240119)の解決方法

## はじめに
AWSのLightsailを用いてRubyの学習環境を整えようと奮闘していた最中であった。
rbenvをインストールするところまでは良かったのに、いざ最新バージョンのruby3.3.0(2024/02/20現在)をインストールしようとしたら、3度もビルドに失敗したのでそれぞれのエラーに対する処置を隠すことなくここに書き留めておこうと思う。
なお、使用していたOSはDebian12だが、同系統のUbuntuでも同様な対処が可能と予想する。

ちなみにrbenvコマンドを使うと以下のようにバージョンを選択してインストールが可能。

“`:
$ rbenv install 3.3.0
“`

## 1度目のエラー
まぁ何事も初めてのエラーに対してはあいさつのようなものだと思って淡々と対処していく。
ログを見てみると、以下のようなfatal errorが見つかった。
“`:log
crypto/comp/c_zlib.c:36:11: fatal error: zlib.h: No such file or directory
“`
zlib.hというファイルが見当たら

元記事を表示

苦手な記号をタッチタイピングできるようになって幸せになろう

# 背景
最近、同僚に騙されて英語配列の高級キーボードを購入しました。打鍵は非常に気に入りましたが、記号の場所やシフトキーを利用した入力になかなかなれません。元のキーボードに戻すことも考えたのですが、高級キーボードを購入したので後ろ髪を強く引っ張られています。この機会にキーの配置を覚え直し、従来より快適にキーボードを操作できるようになろうと考えました。
# 作戦:ゲームで幸せになる
自分が苦手な記号入力のタイピングゲームをrubyで作りました。
このゲームで遊ぶと重点的に苦手な記号キーを練習することができます。
また、記号を入力するときは右手の小指が大活躍するので右手の小指専用のメニューも搭載した最先端仕様にしました。(笑)

“`ruby:typing_game.rb
# 処理開始時刻を記録
start_time = Time.now

# 記号練習用
source_string = ‘!@#$%^&*()-_=+\|~`{[]};:”<>?/1234567890′ + “‘”
# 右手小指練習用(英語配列)
# source_string = ‘)-_=+pP{[]};:”?/’

元記事を表示

【Rails】 Cloud Natural Language API 活用ハンズオン

# 概要
この記事では、GCPの `Cloud Natural Language API`を用いて、登録したタスクに対して、自動でタグ付けを行うTODOアプリの作成をハンズオン形式で行ってみようと思います。

https://cloud.google.com/natural-language

# 対象者
この章では対象者について説明します。
– Railsを用いたアプリケーションの作成経験がある方

# 動作環境
こちらの章では動作環境について明記していきます。

## ハードウェア
– **PC** : MacBook Air (M1, 2020モデル)
– **RAM** : 8GB

## ソフトウェア
– **OS** : macOS Monterey (バージョン 12.1)

## 開発環境
– **Editor** : Visual Studio Code
– **Language** : Ruby (バージョン 3.1.2)
– **FW** : Rails (バージョン 6.1.7)

# 実装
こちらの章では実装を進めていきます。

:::note warn
**

元記事を表示

自己PCにRedmineを構築

# 背景
個人的なスケジュールとか、勉強とかのタスク管理をしたかった🦝

## 今回構築した環境・バージョン
macos Sonoma 14.2
チップ Apple M1
ruby 3.1.4
Remine 5.1.1
Mysql 5.7

# 手順
## brewインストール

自分の環境ではbrewがインストールされていないようだったので、インストール

“`bash:
コマンド : brew install rbenv

実行結果:bash: brew: command not found
“`

どうやらbrewが入ってないらしい

ということで以下を実行しインストール

“`bash:
/bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)”
“`
再度brew -vで確認するも、、、、
それでもbrew -vでnot found になるので

“`bash:
echo export PATH=’/opt/homebrew/bin

元記事を表示

Ruby on Railsの勉強環境の作成

# メインで参考にしたサイト
[Ruby 3\.x, Rails 7\.x, PostgreSQL の Docker 環境構築 2023 \#Rails \- Qiita](https://qiita.com/goya-hideaki/items/a0b7eae988b716724fdb)

途中以下のエラーが発生
“`bash:bash
$ docker compose run frontend rails db:create
[+] Creating 1/0
✔ Container free-market-app-backend-1 Running 0.0s
FATAL: could not open file “global/pg_filenode.map”: Permission denied
Couldn’t create ‘myapp_development’ database. Please check y

元記事を表示

Rubyのoptparseについて(初学者向け)

Rubyを学習する中で、optparseを活用する機会があったため、こちらの内容について学習したことをまとめます。
私はRuby初学者でまだまだ学習中です。
optparseの公式ドキュメントを参照したのですが、前提知識が抜けているが故に難しく感じる部分もありました。

本記事では基本的な部分からoptparseについて解説したいと思います。

# optparseの概要

– optparseはRubyの標準ライブラリの一つです。
– rubyのプログラムを実行するときに、例えば`-a [引数]`など、コマンドラインのオプションの対応を行うことができます。
– コマンドラインのオプションのように、引数を渡すことができるようになります。

# (前提知識) ARGVとは?

rubyでoptparseを初めて使用するにあたって[公式ドキュメント](https://docs.ruby-lang.org/ja/latest/library/optparse.html)を参照しました。
ここで登場する「`ARGV`」という用語についてよくわかっていなかったので、まずはこの部分から解説します

元記事を表示

ActiveRecordモデル操作チートシート

## 初めに
日々の業務でよく使用するActiveRecordのモデル操作についてまとめていきます。
基本的な操作でも「あれ?書き方どうだっけかな?」となることが多いので、そういった方の早見表的な感じでお役に立てると非常に嬉しいです。

誤り・もっとイケてる書き方があれば、コメントいただけると嬉しいです。

## 取得

### 取得するデータの絞り込み
1つのカラムのみや配列で返されても問題ない場合は、 `pluck`を使用し、それ以外は `select`を使用するようにしています。
“`ruby
# select
User.select(:id, :name).find_by(name: “hoge”)
# pluck
User.where(name: “hoge”).pluck(:id)
“`

### データを1件取得
特定のカラムで取得
“`ruby
User.find_by(name: “hoge”)
“`
idで取得
データがない場合エラーになる
“`ruby
User.find(user_id)
“`
idで取得
データがない場合ni

元記事を表示

【Ruby】each_slice(n)メソッドの流れ

## each_slice(n)メソッドとは。
> n 要素ずつブロックに渡して繰り返します。
要素数が n で割り切れないときは、最後の回だけ要素数が減ります。
ブロックを省略した場合は n 要素ずつ繰り返す Enumerator を返します。
https://docs.ruby-lang.org/ja/latest/method/Enumerable/i/each_slice.html

## 練習

– 標準入力
“`
1 2 3 4 5 6 7 8 9
“`

– each_sliceメソッド処理
“`ruby
nums = gets.chomp.split(‘ ‘)
# nums = [‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’]

nums.each_slice(3) do |group|
# each_slice(3)により配列を3要素ごとに分割。[‘1’, ‘2’, ‘3’], [‘4’, ‘5’, ‘6’], [‘7’, ‘8’, ‘9’]
puts group.join(‘ ‘)
# 配列要素を半角ス

元記事を表示

【備忘録】Homebrewを使ってRubyをバージョンアップする手順

## はじめに
**自己紹介**
 未経験からWEB系エンジニアへの転職を目指している者です。現在はRuby on Railsを学習中です。

**この記事を書いたきっかけ**
 Homebrewを使ってRubyをバージョンアップした際にRubyのバージョンがうまく反映されなくて苦戦したため、備忘録としてまとめました。

## 動作環境
– mac OS Sonoma 14.2.1
– Homebrew 4.2.4

## 準備
Homebrewをインストールしてしていない場合は、下記のURLを見てインストールしてください。
分からない場合は、「Homebrew インストール」とかで検索すれば、良い記事がたくさんあると思います。

https://brew.sh/ja/

## rbenvをインストールする
以下のコマンドを入力して、rbenvをインストールします。

“`:terminal
$ brew install rbenv ruby-build
“`

rbenvとは

rbenv は、Unix 系システム上の Ru

元記事を表示

52枚のトランプを5人に配るとき、11枚、11枚、10枚、10枚、10枚と配りたい。

## やりたいこと
52枚のトランプを5人に配るとき、11枚、11枚、10枚、10枚、10枚と配りたい。

## 問題
52を3で割って配ると、1人あたり17枚になり、合計が51枚になってしまう。

“`ruby
irb(main):001> total = 52
=> 52
irb(main):002> total / 5
=> 17
“`
## 考えたこと
・1から52までの数を配列に入れて、5人に順番に渡していく。
・人数分の配列を作り、そこに順番に入れていく。

## やってみる
each_sliceメソッドを使うと指定した数で区切れることがわかった。
配列を用意して、区切った配列を入れていく。
“`ruby
numbers = (1..52).to_a

n = 52 / 5

array = []
numbers.each_slice(n) do |x|
# 均等に配る
array << x end ``` 5人に10枚ずつ配ったが、2枚余ってしまった。 余った51と52を1人目と2人目に配りたい。 ```ruby [ruby]$ ruby tmp_cart.

元記事を表示

Elasticsearch Rails 7とnet-http-persistentを同時に使うときにはFaradayアダプターを指定する

## Railsアプリケーションのgemのバージョンを上げたときエラーが起きた

Railsアプリケーションのgemのバージョンを`bundle update`コマンドで上げていました。
`bin/rails s`コマンドでRailsアプリケーションを起動するときに次のようなエラーがでるようになりました。

“`sh
ledsun@MSI:~/pubdictionaries►bin/rails s
=> Booting WEBrick
=> Rails 7.0.8 application starting in development http://localhost:3000
=> Run `bin/rails server –help` for more startup options
Exiting
/home/ledsun/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/faraday-2.9.0/lib/faraday/middleware_registry.rb:57:in `lookup_middleware’: :ne

元記事を表示

同じ枚数の人を同じ順位にする(2通りのやり方)

## やりたいこと
カード枚数が同じ枚数だったら同じ順位にしたい。
“`ruby
array = [{:name=>”player3″, :count=>20},
{:name=>”player2″, :count=>16},
{:name=>”player1″, :count=>16},
{:name=>”player4″, :count=>0}]
player3が1位、player2が2位、player1が3位、player4が4位です。
“`
以下のように出力したい。
“`ruby
[{:name=>”player3″, :count=>20},
{:name=>”player2″, :count=>16},
{:name=>”player1″, :count=>16},
{:name=>”player4″, :count=>0}]
player3が1位、player2が2位、player1が2位、player4が4位です。
“`

## 考えたこと
「`each_with_index`メソッドで順番に比較して、値が同じなら同じ順位になるように設定できるの

元記事を表示

【メモ】Ruby3.3.0をDebian12にインストールするためのコマンド集

## はじめに
AWSのLightsailにてインスタンスを作成し、Rubyの学習環境を構築したいと思い、様々なサイトを見て回りながらついにインストールに成功したので、その時に打ち込んだコマンドを全て以下にまとめました。
未検証ですが、Debianと同じ系統のUbuntuでも使えるかと思います。

## コマンド
コマンドのアップグレード、Gitのインストール。
GitはHomebrewのインストールに必要。
“`
$ sudo apt update && sudo apt upgrade
$ sudo apt-get install git-all
“`
Homebrewのインストール。
以下の公式サイトを参照。
https://brew.sh/ja/
“`
$ /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”
$ (echo; echo ‘eval “$(/home/linuxbrew/.linuxbrew/bin/brew shell

元記事を表示

Railsの学習を終えて

## 初めに
こんにちは、Railsの学習を終えました。そのRailsの学習で感じたことや思ったことなどを書いていきます。

## Railsの学習で思ったこと
Railsの学習で思ったことは、めっちゃ便利だなということです。クエリを書く必要もなければ、コマンドを打てばファイルが生成されるのはすごく便利でした。先月、フレームワークなしでログイン機能や投稿機能などを開発していたのでなおさら便利に感じます。

## Railsの学習で大変だったこと
Railsの学習で感じたことは、環境構築です。特にbundleに何かを追加しようとすると必ずエラーになり大変でした。

## Railsの学習でやったほうが良いと思ったこと
MVCの理解をしておいたほうがいいなと思いました。これが理解できていないとエラーが起きた時にどこをどう直したらいいのかわからなくなるのでどこがどうつながっているのかを理解しながらRailsを使っていくのがいいと思いました。

## 最後に
Railsを初めて触ったときこんなに便利なんだと感動しました。ぜひRailsを勉強しようと思っていたらまず、フレームワークなしでアプリを

元記事を表示

【Ruby】文字列の結合でappendメソッドを使用して、NoMethodErrorになる

# 初めに

RExの問題を解いていて、appendメソッドを使用して文字列を結合しようとする問題に出会ったので書いていきます。

# 問題

“`ruby

a = “今日も”
b = “最高の1日に。”

p a.append b # NoMethodError

“`

# 解決方法

今回は“`String<<```で解決しました。 ```ruby a = "今日も" b = "最高の1日に。" p a << b # 今日も最高の1日に。 ``` appendメソッドは、Arrayクラスのメソッドで配列に要素を追加するときに使用されるようです。 # 終わりに 今日はRExの1度解いた問題を繰り返し解いてみたら、点数が上がっていたので良かったです。

元記事を表示

【Rails】foreign_key: true を記述するかしないか

## はじめに
Userモデルと紐づいたProfileモデルを作成しようとしているところ。
User:Profile = 1:1 の関係にしたい為、t.referencesを追記。
~~~ruby:20240218073445_create_profiles
class CreateProfiles < ActiveRecord::Migration[6.0] def change create_table :profiles do |t| t.references :user, null: false t.timestamps end end end ~~~ ここで疑問に思った事は、foreign_key: trueをとりあえず追加しておけ。という記事が多くて理由はなんやねん、という事。これについて解説。 foreign_keyについての詳細は省略。 ## RubyとRailsのバージョン - Ruby 3.1.3 - Rails 6.0.6.1 ## 【結論】Railsの命名規則に従っていれば基本は不要 今回のケースのような場合はA

元記事を表示

Ruby Silverの私が行った勉強方法

おはこんばんは! なおぽんと申します🐹
この度、Ruby Silverに合格したため、どのような勉強を行って対策したかまとめました。
少しでも参考になれば嬉しいです!

## ステータス
– Rubyの経験は1年半程度
– 大学4年生

## 学習期間
– 2週間程度
– 学習時間は1日平均3時間程度

## 学習に使用したもの
– 「[[改訂2版]Ruby技術者認定試験合格教本)](https://amzn.asia/d/fwQ6EgC)」の巻末の基本問題と模擬試験
– 1回目:学習開始時(どの程度点数取れるか)
– 2回目:試験3日前(わからない部分を洗い出すため)
– 3回目:試験の前日(わからない部分がないか最終確認)
– [Ruby Silver 模擬試験](https://github.com/ruby-association/prep-test/tree/version3)
– 1回目:試験1週間前(試験の傾向確認&わからない部分の洗い出し)
– 2回目:試験の前日(わからない部分がないか最終確認)
– [REx](https://

元記事を表示

rails7.1.3 での table_name_prefix の挙動の違い

## Rails7.1.3へのアップデート

rails7.1.3のアップデートの際に思わぬところで躓いたので共有です
rails7.1.3で適用された、このPRについてです

https://github.com/rails/rails/pull/50247

**対象読者**

– Rails エンジンで `table_name_prefix` を自分で定義している人

## さきに結論

– `blorgh`というエンジンがあったとして `lib/blorgh.rb`で `table_name_prefix`を上書きしていた場合、rails 7.1.3で効かなくなった
– `isolate_namespace`の呼び出し前に、`Blorgh`モジュールで`table_name_prefix`を上書きする

## 状況

### Rails7.1.2 までの環境

Railsエンジン側でモデルを用意しており、`table_name_prefix`を定義していたとします

`blorgh`というエンジンだとすると、下記のような感じ

“`lib/blorgh.rb
require

元記事を表示

配列の中に入っているハッシュの値が大きい順に並び替える

## やりたいこと
配列の中に入っているハッシュの値が大きい順に並び替えたい。

“`ruby
[{:name=>”player1″, :count=>21},
{:name=>”player2″, :count=>0},
{:name=>”player3″, :count=>30}]
“`
このように並び替えたい。↓
“`ruby
[{:name=>”player3″, :count=>30},
{:name=>”player1″, :count=>21},
{:name=>”player2″, :count=>0}, ]
“`
## 考えたこと
「配列の要素を並び替えるのにsortメソッドというのがあったはず。sortメソッドを使えば並び替えられるかな」

## 試したこと
公式リファレンスをもとに`sort`メソッドを使ってみる。
今回は各要素がハッシュの形をしており、`:count`キーの値を比較する。
“`ruby
a = [{:name=>”player1″, :count=>4},
{:name=>”player2″, :count=>28},
{

元記事を表示

RailsのActive StorageでCloud Storageを設定をする

# 概要
Rails7でActive Storageを使用して、Google CloudのCloud Storageの設定の仕方の記事です。設定するときに、このような記事がありそうでなかったので書きます。

# 前提
Active Storageの設定が終わって、保存先が以下のlocalの設定では動くものとします。
“`development.rb or production.rb
config.active_storage.service = :local
“`
Active Storageの設定が終わっていな人は[こちら](https://qiita.com/nagumo01/items/76b97a98e83604150496)を参考に設定してください。

# Google Cloudの設定
### Cloud Storageの設定
1. Cloud Storageを開いてバケットの作成
1. ロケーションタイプ、リージョンを設定(単一リージョンが1番安い)
1. デフォルトのクラスやアクセス制御を設定
1. 公開アクセスを禁止で問題ない

### サービスアカウントの作

元記事を表示

OTHERカテゴリの最新記事