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

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

RubyXLで利用できる罫線の種類を調べる

## 環境
Ubuntu 20.4
Ruby 2.6
Rails 5.2

## はじめに

Excelファイルに対し、読み取りと書き込みの両方ができる、RubyXLというgemがあります。このgemのchange_borderメソッドを利用して、Excelのセルに罫線を引くことができます。このメソッドで使うことができる、パラメータと罫線の種類について調べてみました。

## change_borderの使い方

change_borderの使い方は公式サイトを見れば載っています。

公式サイト
https://github.com/weshatheleopard/rubyXL?tab=readme-ov-file#changing-borders-

“`
# Possible weights: hairline, thin, medium, thick
# Possible “directions”: top, bottom, left, right, diagonal
worksheet.sheet_data[0][0].change_border(:top, ‘thin’)

元記事を表示

erbからslimに変換する際の`File.exists?` メソッド使用についての解決方法

# はじめに

erbからslimに変換しようとしてエラーで詰まって調べてあまり有用な記事がなかったため
作成することにします(自分見直し用でもあります!)

# 起きたこと

dockerコンテナ内で

“`bash
erb2slim app/views/users/ app/views/users/ -d
“`
をしてapp/views/users/内のerbファイルを一括でslimファイルに変換しようとしたところ
“`
NoMethodError: undefined method `exists?’ for File:Class
Use –trace for backtrace.
“`
とエラーが出て、できなかったので
“`bash
erb2slim app/views/users/ app/views/users/ -d –trace
“`
–traceオプションをつけてエラーが起きているファイルを特定したところ
“`
/usr/local/bundle/gems/html2slim-0.2.0/lib/html2slim/converter.rb:1

元記事を表示

【2024年6月】Rails7をWindows上で環境構築する方法

「Railsをインストールできない」

RailsはWebアプリ開発フレームワークで初心者にもわかりやすいと言われます。

しかし、環境構築で挫折する人が多いのも現状です。

今回はRailsをWindows11で開発できるセットアップを行います。

せっかく始めるのに、何もできないまま終わりたくないですよね。

動画でサポートしていきます。

YouTubeを活用してぜひ始めてみてください。

結論は、WSL2を使いましょう。

# YouTubeでの解説-2024年6月24日投稿

### リンク先

WSL2

https://learn.microsoft.com/ja-jp/windows/wsl/install-manual

Homebrew

https://brew.sh/ja

### Railsのインストール
“`
sudo apt update && sudo apt upgrade
sudo apt install -y autoconf bison patch build-ess

元記事を表示

Ruby: ヘッダーを考慮した csv ファイルの読み込み

こちらのプログラムを[リートン](wrtn.jp)で変換しました。
[Python3: ヘッダーを考慮した csv ファイルの読み込み](https://qiita.com/ekzemplaro/items/aabc6e3b9ac71e242d06)

## プログラム

“`rb:csv_header.rb
#! /usr/bin/ruby
#
# csv_header.rb
#
# Jun/23/2024
# ——————————————————————
require ‘csv’
require ‘json’
require ‘fileutils’

# ——————————————————————
def file_write_proc(file_name, str_out)
File.write(file_name, str_out)
end

# ——————-

元記事を表示

Ruby 練習問題 随時追加予定 (Range, Arrayとか)

# はじめに
みなさん、こんにちは **torihazi**です

最近、ReactとかRailsばっか触っていて

純粋なRubyに触れることを忘れていました。

初心者だからすぐに忘れるし、ひたすら爆速でやり続けるしかないと思うので

練習問題作ってやってみました!

解説とかは自分で色々調べてやってみてください

別解とかあれば是非是非!!

では行ってみましょう!!

# 環境について
Docker使っています!
ローカルでやるか Dockerでやるかはお任せします!
Rubyの単純な実行環境をDockerで作るにはどうしたらいいのか?も
含めて色々勉強になったのであえて隠しちゃってます!
各自自分で最初から作るかコピーなりしちゃってください!
めんどくさい人はPaiza.ioとかでもいいかと。

Dockerfile

“`Dockerfile:Dockerfile
FROM ruby:3.2.0
WORKDIR /app
COPY . .
“`

dock

元記事を表示

【Rails, MySQL, ORM】where(‘user.id’: 1)ってことができる

業務開発でRailsを使用しており、ORMもよく使用しているのですが、業務開発を通して知った `where` 句の文法的なのをここで紹介していきます。

## where(column: value)
これはRailsのwhere句の一番オーソドックスな書き方だと思います。
whereをメソッドチェーンで繋げていけば `and` 句となり条件をより絞ることができます。
“`ruby
# e.g.
User.where(id: 1)
User.where(gender: “man”).where(name: “hoge”)
“`

## where(column: [value])
これはいわゆる `where in` 句の書き方で、 `or` 検索をかけたい時は基本的にこの書き方が一番いい気がします。
若干話が変わりますが、SQLアンチパターンにおいて、 `or` 検索はインデックスが効かない `where` 句の書き方ですが、 `where in` 句はインデックスが効く書き方なので、もし `or` のような**和集合条件**でインデックスが効く検索をしたい場合は **`wher

元記事を表示

DHH流のルーティングの書き方

今回は私が現場で使用しているルーティング構成について自分のメモとしてまとめました。

## DHH流ルーティングとは?
DHH流ルーティングとは、Railsの創始者であるDavid Heinemeier Hansson(DHH)の提唱するルーティング設計の方法論です。

DHH流ルーティングでは、リソースに対して標準的なCRUD操作(Create, Read, Update, Delete)を簡潔に定義し、カスタムアクションやネストリソースを最小限に抑えることで、ルートの複雑さを減らして記述を行うというものです。

つまり、デフォルトCRUDのindex , show, new, edit, create, update, destroyメソッドのみですべてを表現するということです。

## 具体的な設定例

### ・ 例1
“`
namespace :admins do
root ‘dashboards#index’

resources :staffs
resources :users do
resource :enable, only

元記事を表示

エンドレスメソッドについて

今回は元有名企業で開発をしていた方が御用達しているというエンドレスメソッドについて調べたのでその使い方をメモ程度にまとめました。

## エンドレスメソッドとは
『end を書かずにメソッドを定義する』というそのままの意味のメソッドになります。
これにより def set_user = @user = User.find(params[:id]) という形でメソッドを定義する事ができるようになります。

基本的には1行でかけるメソッドの時に多様するようです。

### わかりやすいイメージ
“`
# 今までは def ~ end でメソッドを定義していた
def set_user
@user = User.find params[:id]
end

# これが def だけで定義できるようになる
def set_user = @user = User.find(params[:id])
“`

### 実際のコード
“`
class ExampleController < ApplicationController def show sum = squ

元記事を表示

【Ruby】数値Nを3桁ずつカンマ区切り

## はじめに
学習記録のために自分なりに解説したいと思います。

# 問題
大きな数値 N が入力されます。3 けたごとにカンマ区切りで出力してください。
ただし、N のけた数は 3 の倍数です。

# 解答例
“`ruby

num = gets.chomp # 数値を入力

reversed_num = num.to_s.reverse # 数値を文字列に変換し、逆順にする

comma_separated = reversed_num.gsub(/(\d{3})(?=\d)/, ‘\1,’) # 3桁ごとにカンマを挿入

puts comma_separated.reverse # 文字列を再度逆順にして出力
“`

## 考え方
Rubyには組み込みの形式設定機能があり、それを利用して数値を指定した桁数ごとに区切って出力します。まず、`to_s`を用いて数値を文字列に変換し、その後に`reverse`と`gsub`を使って3桁ごとにカンマを挿入します。最終的に`reverse`で文字列を正しい順序に戻します。


## 使用したメソッドについて

###

元記事を表示

Rubyでデザインパターン (4) FactoryMethodパターン

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

## FactoryMethodパターンとは
FactoryMethodパターンとは、スーパークラスで特定のインスタンスに対しての処理のステップを実装し、サブクラスでどのインスタンスに対して処理を行うのかを指定するデザインパターンです。

詳しくはこちらをご覧ください。

https://qiita.com/shoheiyokoyama/items/d752834a6a2e208b90ca

## Rubyでのコード例
スーパークラスで手続きの流れを実装し、サブクラスで手続きの処理で呼び出しているメソッドの定義と、インスタンスの定義を行います。

“`rb
class SuperClass
def factory_method
instance = build_instance
method1(instance)
method2(instance)
method3(instance)
end

元記事を表示

Rubyのクラス

Rubyのデータ(値)は、オブジェクトであり
オブジェクトは何かしらのクラスに属しています。
オブジェクトがどのクラスに属しているのかは
“`.例
“Hello World”.class
“`
例のようにclassメソッドを使うことによって知ることができます。

元記事を表示

ruby文字列

Rubyで文字列を作るには
基本的にシングルクォート(’)、もしくはダブルクォート(”)で囲む
“`.例
“ダブルクォートで囲う。”
‘シングルクォートで囲う。’
“`
コンソールで囲わずに入力するとエラーになる

元記事を表示

Railsヘルパー

“`.rb
# ページごとの完全なタイトルを返す
def full_title(page_title = ”)
base_title = “Ruby on Rails Tutorial Sample App”
if page_title.empty?
base_title
else
“#{page_title} | #{base_title}”
end
end
“`
のようなヘルパーを作成することで

“`.application.html.erb
<%= full_title(yield(:title)) %>
“`
で呼び出すことができる

元記事を表示

rubyの予約語の意味まとめ

## はじめに
rubyの予約語についてまとめたくなったので、予約語とその意味をまとめます。

## 予約語
予約語はクラス名、変数名などに用いることはできない。
ただし接頭辞$, @、@@が先頭についたものは予約語とは見なされない。
[ruby リファレンス](https://docs.ruby-lang.org/ja/latest/doc/spec=2flexical.html)
| 予約語 | 意味 | 例 |
|————–|————————————————————————————————

元記事を表示

ずんだもんがリアルタイムで会議内容をレビューし読み上げるプログラムを作る

:::note info
本記事は2024年6月に執筆しました。
今後もっと効率的な実現方法が出てくるかと思います。
:::

![03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2951879/fcc974ac-d576-057b-2559-b56f77544b67.jpeg)

# 趣旨
前回の記事([GPT-4o同士で会話して会議を代行するプログラムを作る(プロト版)](https://qiita.com/kdi384ldp/items/8b8714d5f0a8395a1eb7))執筆中に、「ChatGPTの出力内容を音声合成ソフトで読み上げることが出来るのでは?」と思いついたので、作ってみた。

# 環境
| 製品 | バージョン |
|:————|:——————-|
|Windows 11|23H2|
|Ruby|3.3.1|
|ChatGPT API|モデルはGPT-4oを指定|
|Google Spee

元記事を表示

rbenv: ruby: command not found

# 問題
rbenv: ruby: command not foundが発生

## 解決策
`rbenv versions`

でバージョンを確認
例:
“`
system
2.7.6
*3.3.0 (/.ruby-version)
“`

バージョンをローカル設定
`rbenv local 3.3.0`

元記事を表示

クラスにモジュールを取り込むinclude、prepend、extendの違いと比較

モジュールをクラスに組み込むには3つの方法があります。それは `include`、`prepend`、そして `extend` です。この記事では、これら3つの方法の違いと共通点を詳しく解説し、比較します。

## Rubyのinclude

`include` は、他のモジュールからコードをクラスにインポートする最も一般的な方法です。`include` はモジュールのメソッドをクラスのインスタンスメソッドとして追加します。つまり、そのクラスのオブジェクトでこれらのメソッドを呼び出すことができます。

### includeの例

“`ruby
module Greetings
def greet
puts “Hello world!”
end
end

class Person
include Greetings
end

person = Person.new
person.greet # 出力: “Hello world!”
“`

### モジュールをクラスにincludeしたときのancestors chain

モジュールをクラスに `include

元記事を表示

Rubyにおけるrequire、require_relative、loadの違いと使い方

## はじめに

Rubyでプログラミングを行う際、ファイル間でコードを共有し再利用することは非常に重要です。これを実現するための主要なキーワードは `require`、`require_relative`、および `load` です。しかし、多くの初心者プログラマーはそれらの違いに混乱することがあります。この記事では、`require`、`require_relative`、`load` について詳しく説明し、それらを効率的に使用する方法を具体的な例を交えて紹介します。

この記事では、以下のようなディレクトリとファイル構成を仮定します:

“`zsh
– project/
– main.rb
– lib/
– foo.rb
“`

“`ruby:lib/foo.rb
class Foo
def message
puts “Hello world!”
end
end
“`

## Rubyにおけるrequire

`require` は、ライブラリやモジュールを現在のプログラムにロードするために使用されるRubyのキーワードです。`requir

元記事を表示

Rubyのクラスメソッドとインスタンスメソッドの概念

**クラスメソッド**と**インスタンスメソッド**はオブジェクト指向プログラミングにおいて重要な概念です。この記事では、Rubyプログラミング言語におけるクラスメソッドとインスタンスメソッドについて説明します。

## クラスメソッドとは?

クラスメソッドはクラス上に定義され、クラスのインスタンスではなく、クラス自体に対して直接呼び出すことができるメソッドです。これらはクラス全体に関連する操作に使用されることが多いです。

#### クラスメソッドの定義方法

Rubyではクラスメソッドの定義方法は非常に柔軟です。以下にクラスメソッドを定義するための3つの一般的な方法を示します。

“`ruby
# 方法1
class Car
def self.total
10
end
end

puts Car.total # => 10

# 方法2
class Car
class << self def total 10 end end end puts Car.total # => 10

# 方法3
class Car; end

元記事を表示

Rubyでnullを扱うには

## 環境
Ruby 2.6

## はじめに

SIerで長らくエンジニアをしていた自分は、もっぱらVBer(造語)でした。多くのVBerを悩ませた問題の一つにnull問題がありす。nullはOracleにもSQLServerにも存在する概念です。業務アプリを開発する現場では避けて通ることはできません。とにかくこのnullですが、便利などころか厄介モノ扱いでした。VBerから離れてRubyerになった現在でも、null問題はついて回ります。nullという概念はPostgreSQLにもMySQLにも同じように存在します。Rubyでnull(正確にはnil)をスマートに扱う方法について書いてみました。

## VBでnullを扱う

VBでnullを扱う場合、nullを””に変換する関数を作成して対応していました。型をVariantにしているのは、どのような型にもオールマイティに対応するためです。もちろん、nullにも対応させる必要があります。Variant型にすると処理が重くなるといった副作用が発生しますが、いたしかたありません。また、Trimをかけて、空白スペースが入っていた場合は”

元記事を表示

OTHERカテゴリの最新記事