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

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

【Error解消】VS.Codeのシェルがタイムアウトする

# 解決方法

その1.ダウンロードのフォルダからアプリフォルダへ移動

🦊 恥ずかしい・・・

その2. **.bash_profileと.bashrcを作成**

🐹 フォルダを2重で作成しちゃった時があって1つを削除したんだけど、その時に一緒に消しちゃったのかも。

# 原因の追及編〜

🐹 VS.codeを開いた時、これまで無視していたエラーだったけど消える気配もないので手をかけることに。

> Cannot update while running on a read-only volume. The application is on a read-only volume. Please move the application and try again. If you’re on macOS Sierra or later, you’ll need to move the application out of the Downloads directory. This might mean the application was put on quaranti

元記事を表示

ねえ、知ってた?「Railsドキュメント」はRailsの公式ドキュメントではないんですよ、という話

## TL;DR(最初に結論)

– Railsドキュメント( https://railsdoc.com/ )というサイトはRailsの公式ドキュメントではない
– 最初のとっかかりをつかむために参照するのは良いが、情報の裏取りとして公式サイトの情報も併せてチェックしよう

## はじめに

上記のTL;DRに書いた話をすでに知ってる人やわかっている人はこの記事を読まなくても大丈夫です。
ですが、Railsを学び始めた初心者プログラマのみなさんは意外と勘違いしている人が多そうなので、注意喚起を兼ねてこの記事を書いておきます。

## 「Railsドキュメント」はRailsの公式ドキュメントではない
Rails関連の調べ物をすると、検索結果の上位によく上がってくる「Railsドキュメント」というサイトがあります。

![Screenshot 2024-08-24 at 11.41.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7465/c29064d5-b9ff-f8d1-311b-5061d95f

元記事を表示

初めての自作Gem体験記: CSVデータをYAML形式で出力するツールを作ってみた

## はじめに

このたび、人生で初めて自作のGemを公開しました。

自分用の簡単なスクリプトを整えただけではありますが、実際に公開したことで、多くの学びがありました。

そこでこの記事では、公開したGemの概要や作成のきっかけ、苦労した点などをまとめたいと思います。

## 公開したGemの概要

今回作成したのは、CSVファイルをYAML形式に変換して出力できるGemです。

シードデータ投入のためのYAMLファイルを作成することが目的です。

主な特徴としては以下の点が挙げられます。

– CSVファイルを簡単にYAML形式に変換
– 自動的にデータ型(数値やブール値など)を推論し、正しい形式で出力
– 生成されたYAMLファイルは、追加の変換作業なしで直接Railsのシードデータとして使用可能
– 任意のディレクトリからCSVを読み込み、任意のディレクトリにYAMLを出力可能

詳細な使い方のイメージはREADMEをご覧ください。

https://github.com/kazuyainoue0124/csv_to_yaml?tab=readme-ov-file#exampl

元記事を表示

【Rails】findとfind_byの違いを理解する

## はじめに
Railsでデータベース操作を効率的に行うためfindとfind_byの違いを調べたのでメモとして残します!
それぞれのメソッドの動作や使いどころを簡単な例を通じてお伝えできればと思います。

## 両者の違い
### findメソッド
Rialsの公式より
> find(*args)
Find by id – This can either be a specific id (ID), a list of ids (ID, ID, ID), or an array of ids ([ID, ID, ID]). ‘ID` refers to an “identifier”. For models with a single-column primary key, `ID` will be a single value, and for models with a composite primary key, it will be an array of values. If one or more records cannot be found for the requ

元記事を表示

【個人開発】Qiitaで投稿を断念してしまった私が、3ヶ月越しに「初学者向けの技術記事アプリ」を作成しました!💐

## はじめに
初めまして。
2024年1月よりプログラミングスクールRUNTEQに通っている、sayaと申します。
今回スクールの卒業制作として、**技術記事投稿したことがない/投稿に苦手意識を感じている方向けの技術記事投稿アプリ**を作成しました。

①投稿へのハードルが低いこと
②第三者からの反応内容を確認できること
③継続して投稿できること
を目的に、約2ヶ月に渡り開発を行ってまいりました。

### サービスURL: [Miniita(ミニータ)](https://www.miniita.com/)
### GitHub: [リポジトリ](https://github.com/s17w09/Miniita)
[![Image from Gyazo](https://i.gyazo.com/f9acd6ce27eb2065aac3cfb78aee5c24.png)](https://gyazo.com/f9acd6ce27eb2065aac3cfb78aee5c24)

3ヶ月前にQiitaで記事を投稿するのを断念してから、この度このような形で記事を投稿できることをとても嬉し

元記事を表示

rbs-inlineに触れてみた

# はじめに

この記事は、rbs-inlineを触ってみた際のメモ的な記事です。rbs-inlineのREADMEを参照しながら動かしてみました

https://github.com/soutaro/rbs-inline

## 検証しているバージョン

– Ruby 3.3.4
– rbs-inline 0.6.0
– steep 1.7.1

# 導入

RubyやBundlerは導入ずみであるとします。

## 1. bundle install

`bundle init`でGemfileを作成し、その中にrbs-inlineを追加します。

“`Gemfile
# frozen_string_literal: true

source “https://rubygems.org”

gem ‘rbs-inline’, require: false
“`

追記したら、`bundle install`。

“`text
$ bundle install
Fetching gem metadata from https://rubygems.org/…
Resol

元記事を表示

RubyでC++のバインディングを作成するRiceのドキュメントをChatGPTで日本語に翻訳しただけの記事

::: note
RubyでC++のバインディングを作成するために、Riceの公式ドキュメントをChatGPTでにほんごに翻訳しました。
:::

https://github.com/ruby-rice/rice

https://ruby-rice.github.io

## はじめに

Riceは、C++ 17対応のヘッダオンリーライブラリで、2つの目的を持っています。まず、既存のC++ライブラリに対するRubyのバインディングを簡単に作成することができます。次に、RubyのC APIに対してオブジェクト指向インターフェースを提供し、Rubyを埋め込んだり、C++でRubyの拡張機能を書くことを簡単にします。

Riceは、[Boost.Python](https://github.com/boostorg/python) や [pybind11](https://github.com/pybind/pybind11) と似ており、C++とインターフェースを作る際に必要な定型コードを最小限に抑えます。これにより、RubyオブジェクトをC++に、またその逆に変換するための型情報を自

元記事を表示

Procとlambdaの違いとRails開発で使われる場面

## はじめに

`Proc.new`と`lambda`はどちらもProcクラスのオブジェクトを作成する方法です。

しかし、両者で作られるオブジェクトには挙動の違いがあります。

そこでこの記事では、`Proc.new`と`lambda`それぞれで生成されるProcオブジェクトの違いをまとめます。

この記事におけるバージョンは**Ruby 3.3**です。

## 【おさらい】`Proc.new`と`lambda`の使い方

最初にサラッと`Proc.new`と`lambda`の使い方を確認しておきます。

### `Proc.new`の使い方

次のように`Proc.new`を使います。

“`ruby
p = Proc.new { |n| n * 2 }
p.call(5) #=> 10
“`

また`Proc.new`の代わりに`proc`メソッドを用いても、同じ機能のProcオブジェクトを生成できます。

“`ruby
p = proc { |n| n * 2 }
p.call(5) #=> 10
“`

### `lambda`の使い方

`Proc.new`

元記事を表示

[RSpec]createメソッドからブロック構文で囲って追いデータ作るやつ備忘録

# 概要
letメソッドで定義した`user_…`の変数だけ使いたい場合、関連オブジェクトの`favorite_…`の定義がちょっと無駄だったりする。
“`ruby
let(:user_1) { create(:user, name: “ハム太郎”) }
let(:favorite_1) { create(:favorite, user: user_1, name: “ヒマワリのタネ”) }

let(:user_2) { create(:user, name: “まいどくん”) }
let(:favorite_2) { create(:favorite, user: user_2, name: “おそうじ”) }
let(:favorite_3) { create(:favorite, user: user_2, name: “お金もうけ”) }

let(:user_3) { create(:user, name: “トラハムくん”) }
let(:favorite_4) { create(:favorite, user: user_3, name: “スケボー”) }

元記事を表示

【Rails】render textが使用できない

## はじめに
Railsのアップデート中にrender textを使用している箇所でエラーが出たので、その対応をまとめます。

## 問題
以下のように、render textを使用するとエラーが出ます。
“`ruby
class TestController < ApplicationController def index render text: "Hello World" end end ``` ## 解決方法 Rails5系からrender textは使用できなくなりました。 代わりにrender plainを使います。 ```ruby class TestController < ApplicationController def index render plain: "Hello World" end end ``` ## 参考 https://zenn.dev/yukito0616/articles/3dfc26b6a8ff56 https://guides.rubyonrails.org/layouts_and_re

元記事を表示

Railsで環境変数が読み込まれない? .envファイルのトラブルシューティングと解決方法

## Railsで環境変数が読み込まれない? `.env`ファイルのトラブルシューティングと解決方法

### 目次
1. [背景](#背景)
2. [コントローラーでの環境変数の利用](#コントローラーでの環境変数の利用)
3. [私が試したトラブルシューティング手順](#私が試したトラブルシューティング手順)
– [Railsコンソールで環境変数を確認](#railsコンソールで環境変数を確認)
– [APIキーの有効性を確認](#apiキーの有効性を確認)
– [現在のRails環境が`dotenv`を反映する設定になっているか確認](#現在のrails環境がdotenvを反映する設定になっているか確認)
– [Gem ‘dotenv-rails’がインストールされているか確認](#gem-dotenv-railsがインストールされているか確認)
– [サーバーの再起動を試行](#サーバーの再起動を試行)
4. [解決策:サーバーの再起動](#解決策サーバーの再起動)

### 背景

Railsアプリケーションの開発中、コントローラーで環

元記事を表示

【paizaCランク】大きな数値を 3 けたごとにカンマ区切りで出力

Ruby学習のためにpaizaで問題集やスキルチェックをしています。

Dランクを飛ばしてCランクの問題集を挑戦し始めました。

標準出力メニューの問題集「大きな数値を 3 けたごとにカンマ区切りで出力」を解いて学んだこと、理解できていなかったことなど学習備忘録で記載していこうと思います。

## 問題
標準入力で与えられた数値を3桁ごとにカンマで区切って出力するという問題。

入力例
123456789

期待する出力
123,456,789

https://paiza.jp/works/mondai/stdout_primer/stdout_primer__specific_split_step6

## 自分が書いたコード
“`
ary = gets.chomp.split(“”)
count = ary.size

i = 1

while i < count do print ary[i-1].to_i if i%3==0 print "," end i = i + 1 end print ary[i-1].to_i ``

元記事を表示

Railsのparamsとは

# paramsとは
paramsとは**リクエスト**が発生した際にroutes、Controllerに渡されるパラメータ。

`params[:id]`などで、Viewからroutesを通り、Controller側に渡される。
なお、`config/routes.rb`では、このように書かれている。
“`
get ‘users/:id/articles’, to: ‘articles#show’, as: ‘user_articles’
“`
これの`:id`がそう。
Controllerには`params[:id]`と書いてidを取得できる。

# リクエストとは
リクエストはクライアント側がサーバー側に何かこれがほしいと要求をしサーバー側がそれに対してレスポンスをするときに発生しているあれ。

レスポンスをするということはクライアントが**何のリソースが欲しいか**を特定する必要がある。
なので、クライアント側が特定をするための最低限の情報を渡さなければならない。

最低限の情報とは、例えばデータベースで言うとidだったり、user_idだったり。

idさえあれば、データ

元記事を表示

RubyXLでExcelファイルを読み取る時ハマったこと

# TL;DR

“`rb
workbook = RubyXL::Parser.parse_buffer(buffer)
workbook.stream
“`

上記コードは`Stream`とか書いていますが、巨大TEXTファイルを読み取る時みたいに、一行ずつ読んで性能アップすることはないので、かえって遅くなります。
こちらのメソッドは単にWebサーバーに送信されたExcelファイルを、ファイルハンドラーのままで処理可能にして、明示的に一時ファイルを保存しなくて済むように作られています。

オーソドックスな`workbook = RubyXL::Parser.parse(“path/to/Excel/file.xlsx”)`の方が断然早いですが、そもそもRubyXLやPythonのOpenPyXLのようなサードパーティーモジュールは巨大Excelファイルに不向きです。

巨大Excelファイルをプログラム的に処理するには、現段階Excelの中にVBAを書くしかないと思います。

# 実験
## 巨大Excelの作成

“`rb
require ‘benchmark’
requir

元記事を表示

RailsでJavascriptを使用して動的セレクトフォームの作成

# はじめに

現在友人依頼の作付計画アプリケーションの作成中です
今回はJavascriptを使用して動的なセレクトフォームを作成したので
アウトプットします✍️

間違えているところ等ございましたら、ご指摘いただけますと幸いです🙇

# 完成図
畑名を選択すると、畑名に関連付けられた区画名が出てくるようにしています!

[![Image from Gyazo](https://i.gyazo.com/83145a3b2e1498d16452466f0721c0c9.gif)](https://gyazo.com/83145a3b2e1498d16452466f0721c0c9)

イメージ的には都道府県がわかりやすく、都道府県=畑 市町村=区画 作付計画はプロフィールの出身地といったところです!下記の記事が大変分かり易かったです!

# ER図

erbの<% %>を楽に入力する【VSCode】

# はじめに
`erb`を使う時、`<% %>`や`<%= %>`の入力が手間ですので、解消します。
# 環境
| | |
|:-:|:-:|
| エディタ | VSCode |
| 言語 | erb(html系 拡張子 なら応用可能)|
| | |
# やりたいこと
“Emmet”のように、shorthandで`<%%>`を呼び出せるようにします。

“Emmet”についてはこちら

https://qiita.com/kohki_takatama/items/ec0bec86277bf90f94eb

# 実装手順
VSCodeで行ってください。
| `ctrl + shift + P`で設定を開く | snippetを検索し、開く |
|:-:|:-:|
|![スクリーンショット 2024-08-22 13.01.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457770/91cc29e4-749d-2821-1bb2-9c06aacbeefa.png)|![スクリーンショット

元記事を表示

慣れないデザインパターンを導入して失敗した話

# 概要
– 筆者が興味本位で使いたくなったデザインパターンを稼働中のプロダクトに導入してみた
– 導入して約1年後、当該プログラムは存在しているが、同じデザインパターンが他のチームメンバーに使われることがなく、プロダクトコードの中でひとつだけ浮いた状態になった
– 振り返ってみると、あまり分かりやすくなくて、書いた本人でさえも書き直したくなってしまった

という話です。

# 発端
某金融システムのバックエンド開発を行なっています。プロダクトコードはRailsで書かれています。
筆者宛ての仕事として、ユーザーからのリクエストをControllerで受け取り、もろもろバリデーションチェックの後、テーブルAのレコードを更新、テーブルB、テーブルCのレコードをそれぞれ1件づつ追加したい、という要件の実装を担当することになりました。
考えられる実装パターンは以下のようなものでした。

#### 選択肢1: そのままControllerに書く
“`ruby
class HogeController < ApplicationController def create # もろもろ

元記事を表示

RubyMine 2024.2 がリリースされました!

## 皆さん、こんにちは!

新しいバージョンの RubyMine が利用可能になったことをお知らせします。弊社の[ウェブサイト](https://www.jetbrains.com/ruby/download) や無料の [Toolbox App](https://www.jetbrains.com/toolbox-app/)、あるいは Ubuntu 用の [snaps](https://snapcraft.io/rubymine) からダウンロードできます。

RubyMine 2024.2 からは、IDE を中国語、韓国語、日本語で使用する場合に言語サポートプラグインをインストールする必要がなくなります。これらの言語パッケージが IDE に最初から同梱されるようになりました。

もう一つの大きな改善点は、新しいUIがRubyMine 2024.2でデフォルトになったことです。詳細は[専用のブログ記事](https://blog.jetbrains.com/blog/2024/07/08/the-new-ui-becomes-the-default-in-2024-2/)をご覧くだ

元記事を表示

【ABC367】D – Pedometer のイメージベース解説

## 目的
[AtCoder公式の解説](https://atcoder.jp/contests/abc367/editorial)を見てもテキストベースでの説明で解き方の理屈がわからなかったが、[Xでポストされた画像](https://x.com/supu_hapi/status/1824907933676921288)を見て解き方の理屈がわかったので、自分と同じように解き方の理屈がわからない人向けにイメージベースで解説

## 問題
https://atcoder.jp/contests/abc367/tasks/abc367_d
各休憩所を時計回りでMの倍数となる歩数の組み合わせの数を求める
![円環図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3861065/03e28ea4-4612-f5fa-a43e-c909a1d6fe9c.png)
入力例1(M=3)の答えは、

– 休憩所1から休憩所3までの3歩(2+1)
– 休憩所3から休憩所2までの9歩(4+3+2)
– 休憩所4から休憩所1

元記事を表示

NoMethodError: undefined method `chrome’ for Selenium::WebDriver::Remote::Capabilities:Class ってなエラーが出た場合

6.1のサポートがぁぁぁあということで、7.0へ引っ越し作業中に

“`
NoMethodError: undefined method `chrome’ for Selenium::WebDriver::Remote::Capabilities:Class
“`

ってエラーが発生

“`
Capybara.register_driver :chrome_as_pc do |app|
caps = Selenium::WebDriver::Remote::Capabilities.chrome(
loggingPrefs: { browser: “ALL” },
chromeOptions: {
w3c: false,
args: [
“no-sandbox”,
“headless”,
“disable-gpu”,
“window-size=1200,800”,
“user-agent=Mozilla/5.0 (Windows NT 5.1) Apple

元記事を表示

OTHERカテゴリの最新記事