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

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

【VSCode】Rubyでコードジャンプする方法

# はじめに
本投稿では、VSCodeでRubyのコードジャンプを提供してくれる拡張機能の導入方法を解説してます。

## 対象者
– VSCodeでRubyの開発を行っていて、JSなどと同様にコードジャンプしたい方
– 拡張機能をインストールしたものの、期待通りにコードジャンプが動作しなかった方

# 拡張機能
Rubyのコードジャンプを提供してくれる拡張機能として、ダウンロード数の多い以下の2つを導入して、軽く動作確認しました。

– Ruby Solargraph
– Ruby LSP

## 現時点の感想

現時点でコードジャンプ用途であれば、`Ruby Solargraph`のほうが使いやすいと感じた。

拡張機能 | 現時点の感想
— | —
Ruby Solargraph | クラス、メソッドいずれもジャンプできた。コードジャンプ用途ならこちらのほうが使いやすいと感じた。
Ruby LSP | コードジャンプできる箇所が限られており、やや不便と感じた。(インスタンス化したクラスのメソッド呼び出しから、定義元クラスの先頭にしかジャンプできなかった)

元記事を表示

【RSpecエラー】Failure/Error: require_relative ‘../config/environment’ FrozenError:対処

## はじめに
RSpecテストで「**bundle exec rspec**」を実行したところ以下のようなエラーが発生しました。
“`
An error occurred while loading ./spec/models/user_spec.rb.
Failure/Error: require_relative ‘../config/environment’

FrozenError:
can’t modify frozen Array: [“/usr/local/bundle/gems/turbo-rails-2.0.5/app/channels”, “/usr/local/bundle/gems/turbo-rails-2.0.5/app/controllers”, “/usr/local/bundle/gems/turbo-rails-2.0.5/app/controllers/concerns”, “/usr/local/bundle/gems/turbo-rails-2.0.5/app/helpers”, “/usr/local/bundle/gems/turb

元記事を表示

【Ruby】RubyMineでRubyのバージョンを変えるときには気をつけろー!

どうもこんにちは。

今回は、RubyMineでRubyのバージョンを変えたいのに変わらない問題の原因がわかったので紹介します。

https://scrapbox.io/siroemk/RubyMine%E3%81%A7rbenv%E3%81%8C%E5%8F%8D%E6%98%A0%E3%81%95%E3%82%8C%E3%81%AA%E3%81%84%E4%BB%B6

# 何が起きていた?

`bundle install`を実行したかったのですが、バージョンが違うよとエラーが出てきてしまいました。

“`sh
% bundle install
Your Ruby version is 2.7.6, but your Gemfile specified 3.2.2
“`

確認すると、`2.7.6`を使用している状態となっていました。

“`sh
$ rbenv versions
system
* 2.7.6 (set by RBENV_VERSION environment variable)
3.2.2
3.2.3
3.3.0
“`

`3.2.2`

元記事を表示

Cursorを使ってrubyコードを生成してみた

## Cursorとは
前から使ってみたいと思っていたCursorを今回使ってみました。

Cursorとはchatgptを組み込んだコードエディターです。
会話ベースでコードを書いてくれたり、修正してくれます。
VSCodeをフォークしているみたいなので、今までVSCodeを使っていた方は直感的に使えると思います。

## インストール方法

インストール方法や使い方はこちらの記事を参考にさせていただきました。

https://blog.future.ad.jp/cursor

ダウンロードは以下の公式からできます。

https://www.cursor.com/

## railsでCursorを使ってみる
私はWSLに接続し、docker環境で使ってみることにしました。
任意の場所に、test.rbを作成します。
Ctrl + Kを押すと、以下のように入力フォームが出てきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1328154/76e50f17-c94f-bb0a-

元記事を表示

小数点以下の表示

整数同士の割り算は、小数点以下が切り捨てられる。

“`
1 / 3
=> 0
“`

直接数値同士を計算する場合は、どちらかの数値に.0をつけることで小数点以下を表示可能。

“`
1.0 / 3
=> 0.3333333333333333
“`

変数を使用して計算する場合はto_fメソッドで整数から少数に変更可能。

“`
a = 1
=> 1

a / 3
=> 0

a.to_f / 3
=> 0.3333333333333333
“`

元記事を表示

Amazonの字幕(ttml2)をテキストファイルに変換する

### ソース

“`ttml2text.rb
require ‘nokogiri’

doc = Nokogiri::parse($stdin.read)

doc.css(‘p’).each do |node|
line = node.xpath(‘.//text()’).map do |e|
words = e.text
words.strip!
words if words.length > 0
end.compact.join(” “)
puts line
end
“`

### 使い方

“`lang:bash
ruby ttml2text.rb < インプットttml2 > アウトプット.txt
“`

### ソース解説

– Amazonプライムの字幕データはHTMLっぽいXML
– pタグが字幕データそのものなので、`css(‘p’)` で字幕ノードを取得
– 細かいメタデータを削除したいので、 `xpath(‘.//text()’)` でテキストノードを取得
– 空白のテキストノードを削除してつなげる
– brとかで区切

元記事を表示

[Ruby] メモリと見るshallow copy

最近勉強して出てきた`shallow copy`について、まとめてみます。
新米エンジニアなので、誤りがあったらご指摘ください:santa:

# shallow copyとは
かなりざっくり「**外見は別物だけど、中身は一緒だよ**」というコピー
– **aオブジェクト**と、それをコピーしてできた**bオブジェクト**があった場合…

1. aオブジェクトとbオブジェクトは、別々の`object_id`だよ(**外見は別物**)
2. aオブジェクトとbオブジェクトが指してるオブジェクト(配列の要素など)の参照先は一緒だよ(**中身は一緒**)

というコピーのこと。

Rubyだと、`clone`や`dup`で`shallow copy`ができます。

文字だけだと何を言っているか分かりにくいので、次にいきましょう。

# 見てみよう
※分かりやすくするために、`object_id`をメモリの番地としています。(`object_id`は適当です)

#### 1. `shallow copy`元と、`copy`先の`object_i

元記事を表示

ファイル操作の基礎:閉じたファイルオブジェクトと再オープン時のエラー

# 閉じたファイルオブジェクトに対する操作

以下のコードは、ファイルを書き込み用に開き、テキストを書き込む処理です。
最後にファイルを閉じる操作を入れないと、ファイルを開くために確保したメモリが解放されなかったり、整合性と排他制御の問題からファイル操作が正常に行われなかったりします。

“`ruby
# File.openでファイルを開き、File.closeで閉じる
file = File.open(“example.txt”, “w”)
file.puts “Hello, world!”
file.close

# もしくはブロックで囲むことで、勝手にファイルが閉じられる
File.open(“example.txt”, “w”).do |file|
file.puts “Hello, world!”
end
“`

ここまでは問題ないですが、一度ファイルを閉じた後に対象のファイルオブジェクトを再利用しようとすると、当然怒られます。

“`ruby
file = File.open(“example.txt”, “w”)
file.write(“Hello, worl

元記事を表示

Ruby on Railsでの<%= %>と<% %>の使い方について

# はじめに
Ruby on Railsでは、<%= %>と<% %>は埋め込みRuby(ERB)テンプレート内でRubyコードをHTMLに組み込むためのものです。

# <%= %>と<% %>の違いは
### 1. <%= %>(出力ありのERB):
<%= %>は、Rubyコードを評価し、その結果をHTML出力する場合に使います。これは**戻り値のあるメソッド**と考えることができます。
例: <%= @user.name %> は、@userインスタンス変数の名前を出力します。

### 2. <% %>(出力なしのERB):
<% %>は、Rubyコードを評価して結果を直接HTML出力せず実行したい場合に使います。 **戻り値のないメソッド(void)** だと考えればいいでしょう。
例: <% if @user.admin? %> 管理者 <% end %> は、ユーザーが管理者の場合にのみ「管理者」というテキストを表示します。

# form_tag
下記コードを見てください。form_tagは一見 **戻り値のないメソッド(void)** に見えて、 <% %>

元記事を表示

JavaとRubyにおけるインターフェースの比較

# JavaとRubyにおけるインターフェースの比較

この記事では、JavaとRubyにおけるインターフェースの概念と実装方法を比較しながら解説します。両言語の特徴を活かしたアプローチを見ていきましょう。

## 1. 基本的なインターフェースの定義と実装

### Java

Javaでは、`interface`キーワードを使用してインターフェースを明示的に定義します。

“`java
// インターフェースの定義
public interface Drawable {
void draw();
}

// インターフェースの実装
public class Circle implements Drawable {
@Override
public void draw() {
System.out.println(“円を描画します”);
}
}

public class Square implements Drawable {
@Override
public void draw() {
System

元記事を表示

Ruby 2.6.6でRails 6.0.3をインストールする際のトラブルシューティング

### エラー1: nokogiriのバージョンとRubyの互換性に関するエラー
Ruby 2.6.6でRails 6.0.3をインストールしようとすると、次のようなエラーが発生することがあります。

“`bash
$ gem install rails -v 6.0.3

ERROR: Error installing rails:
The last version of nokogiri (>= 1.8.5) to support your Ruby & RubyGems was 1.13.10.
Try installing it with `gem install nokogiri -v 1.13.10` and then running the current command again.
nokogiri requires Ruby version >= 3.0.0. The current ruby version is 2.6.6.146.
“`
このエラーは、nokogiri gem がRuby 3.0.0以上を要求しているために発生します。解決方法として、nok

元記事を表示

Rubyのバージョン管理とgemインストール時のパーミッションエラーの解決方法

# 問題
Ruby on Railsをインストールしようとして、次のエラーが表示されました:
“`bash
You don’t have write permissions for the /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/gems/2.6.0 directory.
“`

# 原因
このエラーは、システムにインストールされているRubyのバージョンでgemを管理しようとしているためです。システムのRubyでは通常、ユーザーに書き込み権限が与えられていないため、gemをインストールすることができません。

# 解決方法
rbenvを使用してRubyのバージョンを管理する

rbenvを使ってローカルにRubyのバージョンをインストールし、管理することで、この問題を回避できます。

“`bash
$ rbenv install 2.6.6
$ rbenv global 2.6.6
“`
これにより、ローカルにインストールしたRubyのバージョンがシステムのRubyより優先されるよ

元記事を表示

macOS 12.6 on arm64 で rbenv を使用して Ruby 2.6.6 をインストールする際のエラーと対策

最近、macOS 12.6 on arm64 環境で rbenv を使用して Ruby 2.6.6 をインストールしようとしたところ、以下のようなエラーに遭遇しました。

“`bash
BUILD FAILED (macOS 12.6 on arm64 using ruby-build 20240612-2-g08aadf4)
“`

このエラーは、特定の環境設定が必要であることを示しています。そこで、解決策として次のコマンドを使用しました。

“`bash
RUBY_CFLAGS=-DUSE_FFI_CLOSURE_ALLOC arch -arm64 rbenv install 2.6.6
“`

これにより、Ruby 2.6.6 を正常にインストールすることができました。

## 解決方法の詳細
このエラーは、ARMアーキテクチャ上でのRubyのビルド時に必要な特定のCFLAGS設定が不足していたことが原因でした。RUBY_CFLAGS=-DUSE_FFI_CLOSURE_ALLOC arch -arm64 を使用することで、ARM64環境向けに適切なビルドオプションが適用

元記事を表示

初学者がRuby Silverに合格!勉強方法をまとめてみました!

現在オンラインスクールにてプログラム学習をしているMiyaki(@Miyaki)と申します。
初学者ゆえに、記事の内容に誤りや分かりにくい点があるかもしれませんがお許しください🙇‍♂️
Ruby Silverに合格しましたので、資格を取得するために実践した方法について共有させていただきます!

# 目次

タイトル
1 勉強時間     
2 学習教材
3

【Ruby】そのassert_raisesの使い方、本当に合ってる? – assert_raisesでエラーメッセージをテストする方法

## はじめに
以下のテストで次の2点をテストしようとしています
– 特定の条件でraiseが発生しているか
– エラーメッセージが正しく出力されているか

このテストの何が悪いか皆さんは分かりますか?
“`sample_code.rb
class SampleCode
def self.animal_check(animal)
raise ‘猫はアレルギーだからダメ’ if animal == ‘cat’

raise ‘犬は可愛すぎるからダメ’ if animal == ‘dog’

pp ‘他の動物は許す’
end
end
“`

“`test.rb
test ‘猫はアレルギーだからraise’ do
assert_raises(RuntimeError, ‘猫はアレルギーだからダメ’) do
SampleCode.animal_check(‘cat’)
end
end
“`
とあるプロジェクトのテストコードを眺めていたところ、陥りがちなあるミスを発見したので戒めとして記事にしようと思います。
では、なぜ

EC2インストールにrbenv install -v 3.3.0を実行して失敗した

## 問題
EC2インスタンスに`rbenv install -v 3.3.0`を実行して失敗した。

## 原因
`fiddle`と`psych`がコンパイルされていない。

## エラー
“`
*** Following extensions are not compiled:
fiddle:
Could not be configured. It will not be installed.
/home/ec2-user/tmp/ruby-build.20240629031939.85872.yDcKUz/ruby-3.3.0/ext/psych/tmp/ruby-build.20240629034052.97576.6eBHYO/ruby-3.3.0/ext/fiddle/extconf.rb:78: missing libffi. Please install libffi or use –with-libffi-source-dir with libffi source location.
Check ext/fiddle/mkmf.log for more de

Rails newからデプロイまで

## はじめに
はじめまして!2024/04/11よりRUNTEQというプログラミングスクールに在学中のみうらと申します。
`Ruby on Rails` を学習中です。
今回は`Docker` を使った`Rails`の環境構築からデプロイまでの一連の流れについて記していきたいと思います。(2024/06/30時点)
## 今回の流れ
– Rails new
– Git hubのリポジトリ作成
– デプロイ

上記の3点についてまとめていきたいと思います。

## 今回使用技術
– ruby:3.2.3
– Rails: 7系統 (7.1.3.4)
– PostgreSQL
– Docker
– Git Hub
– Render

## Rails環境構築

[こちら](https://hackmd.io/@SKjw2RY-RNCUNSdJfEWPig/HJE0GUClC)を参考に環境構築。
その際、`PostgreSQL`を選択。`Bootstrap`と`Tailwind`お好きな方を使ってください。
また`docker compose up`の際にエラーが起きた場合[こちら](h

【Rails】「アセットパイプライン」とは

# はじめに

改めてアセットパイプラインについてまとめてみました

# 目次

[1.アセットパイプラインについて](#1-アセットパイプラインについて)
[2.主な機能](#2-主な機能)

# 1. アセットパイプラインについて

アセットパイプラインは、Ruby on Railsアプリケーションで使われる便利な仕組みです。これは、ウェブサイトやウェブアプリで使うJavaScriptやCSSなどのファイルを、効率よく扱えるようにしてれくます。

例えば、アセットパイプラインを使うと、複数のJavaScriptやCSSファイルを1つにまとめて、ブラウザが1回のリクエストで取得できるようにできます。それに加えて、ファイルのサイズを小さくするための工夫もしてくれます。つまり、使っているJavaScriptやCSSが少ないリクエストで、早くページが表示されるようになるんです。

# 2. 主な機能
具体例を交えて4つ紹介します。

## SHA256フィンガープリントを挿入する機能:
この機能は、ファイル名にSHA256フィンガープリントを含めることで、ブラウザとCDNによってファイル

Ruby 小数点の計算結果の誤差について

## なぜ小数点の計算結果は誤差が生じるのか
“`
x = 122 * 1.1
puts x
#出力結果は134.2000000000002となる
“`
実際に計算をしてみると計算結果は「134.2」となります。
なぜ、このような間違いが起きるのでしょうか?
コンピューターが2進数であることに起因しているようです。

引用
数値として2進浮動小数点数が用いられる場合
定数を10進表記で表していても内部では2進数で処理される
有限の2進数で小数を表した場合の計算は、常に誤差を伴いうる
と言うことを覚えていただいた方が良いでしょう。
引用元
https://ja.stackoverflow.com/questions/49377/javascript%e3%81%ae%e6%8e%9b%e3%81%91%e7%ae%97%e3%81%ae%e7%b5%90%e6%9e%9c%e3%81%8c%e8%a8%88%e7%ae%97%e6%a9%9f%e3%81%ae%e7%b5%90%e6%9e%9c%e3%81%a8%e7%95%b0%e3%81%aa%e3%82%8b%e3%81%ae

【個人開発】生成AIを使って名言を提供するサービスを開発しました【Rails】

## はじめに
こんにちは![ずっと大地🦦](https://x.com/zuttodaichi)と申します!!
2023年11月より、オンラインスクールのRUNTEQにて、未経験からのWebエンジニア転職を目指して学習をしています。
前職はスポーツ選手として活動しておりました。

今回、生成AIを使った名言提供サービス『MeigenOtter(名言おったー)』を開発したので、記事にしたいと思います。
間違いや不備などありましたら、教えて頂けると幸いです。

## サービス名
[MeigenOtter](https://meigenotter.com/)
ユーザー登録をしなくても、ランダムでの名言取得は可能です。気軽に覗いて頂けると幸いです。

**▼サービスURL**
https://meigenotter.com/

**▼GitHub URL**
https://github.com/daichi3102/wordpass

![MOtop.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37737