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

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

Ferrum を使って特定の要素のスクリーンショットを撮影する

# はじめに

[Ferrum](https://github.com/rubycdp/ferrum) は [CDP (Chrome DevTools Protocol)](https://chromedevtools.github.io/devtools-protocol/) を使用して Ruby で Chrome を操作できる Gem です。今回はこの Gem を使用して、Web ページ上の特定の要素のスクリーンショットを撮影してみます。

# 例

[Yahoo!天気・災害](https://weather.yahoo.co.jp/weather/) で [福岡県福岡市](https://weather.yahoo.co.jp/weather/jp/40/8210.html) の本日の天気の部分を撮影したいです。

![weather.yahoo.co.jp_weather_jp_40_8210.html(PC).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6697/9dfc77eb-1a9a-

元記事を表示

技術選定しよう! ~ ビルドツール編 ~

# 技術選定しよう!
技術選定は、重要で大変な作業ですよね。
適切な技術を選ぶためには、候補をしっかりとリストアップし、それらを比較し根拠を持って判断することが欠かせません。
そこでこの記事では、技術選定を行う際のポイントや役立つ情報について紹介しています。
それにより、担当システムに最適な選択肢を見つける手助けとなるでしょう。
ぜひこの記事を参考にして、より適切な技術選定ができるようにしてください!

# 今回選定する技術
今回選定するのは

**ビルドツール**」 です!

webpack一択の時代は終わりを迎え、新たなツールが人気を集めています。

# 候補一覧
下記2つのツールをピックアップしました!
– [webpack](https://webpack.js.org/)
– [Vite](https://ja.vitejs.dev/)

# 背景
比較する前に、今回記事に取り上げようと思った背景を説明いたします。
本題までスキップしたい方は[こちら](https://qiita.com/q_halleluja

元記事を表示

デフォルト値付きのHashを宣言する

## やりたかったこと

`{ x:1, y:2 }` みたいなハッシュを宣言しつつデフォルト値も与えるっていうのを1行でやりたかった。

## パターン1 : Hash.new + merge

ハッシュを定義しつつデフォルト値も、っていう魔法のメソッドは無くて、2つのメソッドをチェーンするしかないっぽい。
悪くはないけど `Hash.new` ってあんまり馴染みが無いから若干意図が伝わりづらい気もする。

“`rb
hash = Hash.new(5).merge(x: 1, y: 2)

hash[:x] #=> 1
hash[:y] #=> 2
hash[:z] #=> 5
“`

## パターン2 : ハッシュリテラル + tap

さっきより長くなっちゃったけど、こっちの方が意図が明確で好きかな。

“`rb
hash = { x: 1, y: 2 }.tap { |h| h.default = 5 }

hash[:x] #=> 1
hash[:y] #=> 2
hash[:z] #=> 5
“`

元記事を表示

Ruby2.7から3.2にアップデートした時につまづいたところ一覧

## 重い腰を上げた
プラットフォームの期限切れも近づいており、そろそろRuby2.7→3.2にあげないといけないタイミングになった。
コケたところを備忘録として残す。

### アップデート内容
“`
ruby ‘2.7.6’ → ‘3.2.2’
rails ‘6.0.3’ → ‘~> 6.1′
“`

# 起きた問題一覧

## Macで Ruby 3.2.2 のダウンロードができない
“`terminal
$ bundle install
rbenv: version `3.2.2’ is not installed
$ rbenv install 3.2.2
BUILD FAILED (macOS 14.4.1 on x86_64 using ruby-build 20240727)
“`

下記の記事を元に3.2.2のインストール完了(感謝)
https://qiita.com/orangeQ/items/117826cdf55806f4209c

## bundle update 時の依存関係エラー
### nio4rエラー
“`terminal
$ bundle

元記事を表示

Rubyではメソッドの最後の引数がハッシュの場合、{}を省略できる

## はじめに
メソッドの引数に関するRuby特有の挙動がわからずハマったため、備忘録としてまとめます。

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

## 問題
以下のようなコードを見かけました。

“`ruby
class A
attr_reader :arg1, :arg2, :arg3

def initialize(arg1:, arg2:, arg3:)
@arg1 = arg1
@arg2 = arg2
@arg3 = arg3
end

def execute
# キーワード引数で3つの引数を渡しているつもり
B.execute(param1: arg1, param2: arg2, param3: arg3)
end
end

class B
# 引数は1つだけ、キーワード引数でもない
def self.execute(params)
params.each do |key, value|
puts “#{key}: #{value}”
end

元記事を表示

Ruby:多重ループを抜ける大域脱出とは

※この記事は初学者が自分なりにまとめたものになります。

# 目次
– [はじめに](#はじめに)
– [大域脱出とは](#大域脱出とは)
– [代表的な大域脱出方法2選](#代表的な大域脱出方法2選)
– [1. return](#1-return)
– [2. throw catch](#2-throw-catch)
– [まとめ](#まとめ)
– [使い分けのポイント](#使い分けのポイント)

# はじめに

今日は、Rubyにおいて2重3重に重なったループを一撃で抜ける方法を調べてみました!

### 大域脱出とは

この何重にも重なったループを抜け出す処理を”**大域脱出**”と言います。

# <代表的な大域脱出方法2選>

以下は、Rubyの大域脱出の方法で代表的なもの2つです。

**1. return**

メソッドやブロックの実行を終了し、呼び出し元に制御を戻します。メソッドの中で使われることが多いです。

**2. throw catch**

特定のスコープから大域脱出するための方法で、throwは指定されたシンボルを投げ、対応するcatc

元記事を表示

【Rails】Railsチュートリアル第6章 復習用

はじめに

今日もチュートリアルに取り組んでいく。
今回はモデルを主に扱っているようだ

Userモデル

・Railsでは、データモデルとして扱うデフォルトのデータ構造のことを **モデル(Model)** と呼びます
・データベースを使うことで長時間データを保存することができる
・データベースをやりとりするライブラリ(テンプレのようなもの)を **Active Record** という
・ActiveRecordにはデータの作成、保存、検索のメソッドが用意されている
・これらをつかうためにSQLを意識する必要がない!!
・**マイグレーション** = Rubyでデータのはいったテーブル(表)を操作する仕組み

Railsにおける属性

・第4章では`attr_accesor`を用いてUserクラスにnameとemail属性を定義した。
・しかしこれはRubyだから必要なのであって、実はRailsでは属性を定義する必要がない(デフォルトでその仕組が提供されている)

モデル作成

・ここでこれらのユーザー情報を保存するモデルを作成する
・Control

元記事を表示

Docker 環境で binding.pry を使ってデバッグする方法

## 初めに
Ruby アプリケーションを Docker コンテナ内でデバッグする際に、`binding.pry` を使いたいと思ったことはありませんか?この記事では、Docker 環境で `binding.pry` を設定する手順を解説します。

## ステップ 1: Gemfile に pry を追加

まず、`Gemfile` に `pry-byebug` を追加します。

“`ruby
gem ‘pry-byebug’
“`

これで、`bundle install` を実行

“`bash
bundle install
“`

## ステップ 2: docker-compose.yml の設定

`docker-compose.yml` ファイルを作成または編集して、デバッグ用の設定を追加します。

“`yaml
docker-compose.yml
web:
build: .
command: bash -c “rm -f tmp/pids~

/////↓この2文を追加
stdin_open: true
tty: true
“`

## ステップ 4

元記事を表示

[paiza×Qiita記事投稿キャンペーン] Rubyでmod7占いを解いてみた

この記事は **paiza×Qiita記事投稿キャンペーン「プログラミング問題をやってみて書いたコードを投稿しよう!」** キャンペーンへの参加記事です。

https://paiza.jp/pages/campaign/paiza-qiita

今回キャンペーンの候補問題の中から、ランクSの「mod7占い」を解いてみました。

https://paiza.jp/works/mondai/s_rank_skillcheck_sample/mod7

解いたソースコードの全体像は以下にあります。

https://github.com/Umekawa/paiza-open-problem/blob/main/mod7.rb

## 問題分

問題文の詳細ははPaizaの記事の方を読んでいただくとして、要点は

– 最初にカード数が与えられ、その後カードの数だけ入力が与えられる
– すべて異なるカードがn枚与えられる (nは3以上)
– 与えられたカードから同時に3枚選び、3枚のカードの和が7の倍数になる組み合わせ数を出力する

の3点です。

では実際に作成していきましょう。

## 実

元記事を表示

【AWS SAM】入門してみた dockerで環境構築 ruby

# はじめに
今までserverless frame workを使用して、lambdaのデプロイを行ってきたのですが、serverless frame work V4から有料化ということを受けてSAMへ移行したいと思いました。

https://dev.classmethod.jp/articles/sls-migrate-cdk-or-sam/

# 環境構築
dockerで行いました。
* ruby3.3.4
* node 20.16.0
* aws-sam-cliをzipで公式ページから取得しインストール

https://github.com/yuuki4135/sam-test-app

“`dockerfile
FROM ruby:3.3.4-slim-bookworm

RUN useradd -u 1000 developper \
&& apt-get update -qq && apt-get install -qq –no-install-recommends \
curl awscli unzip wget git vim

RUN wget h

元記事を表示

‘rubygems/user_interaction’ を使って、簡単なプロンプト UI を実装する

RubyGems 内には、 `rubygems/user_interaction` という (RubyGems 用の) プロンプト UI を実装するためのヘルパーがあります。

“`ruby
require ‘rubygems/user_interaction’ # 標準ライブラリなので、これ自体のインストールは不要

ui = Gem::ConsoleUI.new

ui.ask(‘What is your name?’)
# What is your name? tomoasleep
# => “tomoasleep”

ui.ask_yes_no(‘Are you ok?’)
# Are you ok? [yn] y
# => true

ui.ask_yes_no(‘Are you ok?’, true)
# Are you ok? [Yn]
# => true

ui.choose_from_list(‘What is your favorite food?’, [‘ramen’, ‘sushi’, ‘tempura’])
# What is your favorite

元記事を表示

【Rails】環境構築まとめ

はじめに

現在Railsチュートリアル2周目に取り組み始めて約1週間が経つ
Railsチュートリアル7版ではGitHub CodespacesというクラウドIDE環境での開発が取り上げられている
→テンプレートが用意されていて、環境構築が非常に楽なのだが(というかほぼない)実際に環境構築をする際に何も知らなくて困ってしまう

更に私は来週から技育CAMPのオンラインハッカソンに出場する予定なので、
「さすがに環境構築を知らないのはまずい!」
と思い、環境構築について学習することにする。

もしかしたらチュートリアルのテンプレートは今後開発をする際にも流用できるのかもしれないが、他のエンジニアの方はおそらく環境構築から取り掛かっているだろうし、何かと今後困りそうなので!

基本的にこちらの記事を参考にさせていただいてるが、具体的なインストール手順などは重複してしまうためこちらでは書かない。この記事では必要な部分を要約する形にしたい。

元記事を表示

カレー好きのためのActiveRecord学習ガイド 〜スパイシーなメソッドを添えて〜

## はじめに
Rails学習中のカレー屋めぐりにハマっている私を含め、多くの初学者はActiveRecordを使用する際、背後で実行されているSQL文をあまり意識していなく「これ、どんな動きをするんだっけ?」と手が止まることも少なくありません。
SQL文を理解していないと、複雑なデータ操作などができず、気が付かぬうちに非効率なコードを書いてしまう可能性があります。
本記事ではカレー屋めぐりにハマっている私がカレー屋を例えに、ActiveRecordのメソッドをまとめてみました。

## 対象者
– Rails初学者
基本的な Rubyの記法の理解
– SQL初学者
クエリの構造の理解

## 環境
Ruby バージョン: 3.2.2
Rails バージョン: 7.0.4
## メソッド一覧とSQL

### find: 番号でカレーを探す
“`
CurryDish.find(1)
# SELECT `curry_dishes`.* FROM `curry_dishes` WHERE `curry_dishes`.`id` = 1 LIMIT 1

CurryDish.find([

元記事を表示

centos9でlibyaml-develが見つからない

conohaサーバーを借り、ruby3.2.2をasdf経由でインストールしようとしていた際、libyaml-develが必要だからインストールしてね、と出るのにインストールコマンドを打つと、

“`:command
$ sudo dnf install -y libyaml-devel
Last metadata expiration check: 0:00:43 ago on Mon 29 Jul 2024 11:00:14 PM JST.
No match for argument: libyaml-devel
“`
となり、見つからないとなってしまった。その際解決した手順の忘備録です。

## 対処法

下記ページの通りに実行したところ、無事インストールできrubyのインストールも完了しました。

https://github.com/rbenv/ruby-build/discussions/2197

参考ページの通り、以下のコマンドを実行します。
“`:command
sudo dnf install -y epel-release
sudo dnf config-m

元記事を表示

配列の各要素ごとにカウントする方法【Ruby JS】

# はじめに

配列の各要素ごとにカウントする方法について記述していきます。

今回はHashの形でreturnします。

# Rubyの場合

簡単です。`tally`メソッドを使用します。

“`rb
arr = [“apple”, “banana”, “apple”, “orange”, “banana”, “apple”]
tallied = arr.tally
# => {“apple”=>3, “banana”=>2, “orange”=>1}
“`

https://docs.ruby-lang.org/ja/latest/method/Enumerable/i/tally.html

# JSの場合

最も美しいのは、`reduce`メソッドを使用し`tally`メソッドを再現することだと思います。

“`js
function tally(array) {
return array.reduce((acc, item) => {
acc[item] = (acc[item] || 0) + 1;
return acc;
}, {});
}

元記事を表示

Ruby3.0系から3.1系へのバージョンアップ

# 背景
Ruby3.0.6とRails6.1.7.7で開発したアプリを運用します。デプロイ先はheroku(heroku-20)で特に問題なくアプリは動いていました。

しかしながら、Ruby3.0系はheroku-20と互換性はありますが、heroku-22と互換性がなく、Ruby3.0系でherokuにデプロイしようとすると以下のエラーが発生しました。
~~~
remote: This app is using the Heroku-20 stack, which is deprecated:
remote: https://devcenter.heroku.com/changelog-items/2895
remote:
remote: From April 30th 2025, Heroku-20 will be end-of-life, and apps using it
remote: will no longer receive security updates, and be run at your own risk.
remote:
remote: From M

元記事を表示

【Rails】Railsチュートリアル 第5章 復習用

前回の第4章ではRubyのコードに関して学習し、基礎的なオブジェクト指向が理解出来た(はず)

第5章ではおそらくviewの部分をメインに扱っている
さらに今回はBootstrapも用いる

classとid

・HTMLではclassに似たようなidというものがある
・idは重複してはならない(一度しかつかえない)
・クラスとidはcssを当てる時に便利
・また今回のclass名にはbootstrapにおいて特別な意味を持つため、適当につけてはいけない。

“`css
.nav{ /*ここはidの場合は.ではなく#を用いる*/
font-size:20px
}
“`

link_to(重要)

・様々なRailsのコードを見る限り恐らくめちゃくちゃ頻出するコード
・link_toはページ内にリンクを作成するコード(HTMLでいう

元記事を表示

割り算の余りが出せなくてもエンジニアとしてやっていけますか?

## はじまりはいつも自己紹介から

どうも!
割り算の余りが出せないモンスターです!

今回ですが、rubyで割り算と余りを算出する問題が出され正解を一発で出すことができなかったので、こちらの記事を書く決心をしました。

以下本文

## なんで、できんかったん?

今回の問題を解くのが難しいと感じたのは以下の理由があったからです。

“`
1. rubyの組み込みメソッドが使えない。
2. 割り算の”/”は商しか出すことができないこと。
“`

そのためわかりませんでした。

## 余りを出す組み込みメソッド “modulo”

皆様ご存知かと思われますが、rubyには割り算の余りを出すメソッドがあります。
それがmoduloメソッドです。

### 以下”modulo”の解説

### moduloメソッドの使い方
moduloメソッドは数値オブジェクトに対して呼び出され、引数として除数を指定します。すると、割り算の余りを返してくれます。以下にいくつかの例を示します。

“`
puts 10.modulo(3) # 出力: 1
puts 20.modulo(4)

元記事を表示

【超爆速】DockerでRails環境構築

Ruby on railsをローカル環境で構築して、学習用に手軽に実行したいときにDockerでの構築手順が面倒だと思いました。
Docked Rails CLIを使うと簡単なコマンドを打つだけで実行環境が構築できてしまうのでとても便利だと思いました。
手順を紹介します。
### Docked Rails CLI

[docked](https://github.com/rails/docked#docked-rails-cli)

## 手順
このコードは初心者向けにRailsアプリケーションを簡単にセットアップする方法を示しています。以下に簡潔に解説します:

1. ターミナルで以下のコマンドを実行します:
– Dockerボリュームを作成し、Rubyの依存関係を保存します。
“`shell
docker volume create ruby-bundle-cache
“`
– `docked`というエイリアス(ショートカット)を作成します。これにより、Dockerコンテナ内でRailsコマンドを簡単に実行できます。

元記事を表示

JavaScriptからRubyへ:初心者が感じた違いと学び

# JavaScriptからRubyへ:初心者が感じた違いと学び

JavaScriptとRubyは、どちらも人気の高いプログラミング言語ですが、その書き方や使用方法には多くの違いがあります。JavaScriptからRubyを学び始めた初心者として、感じた違いや学びを共有したいと思います。

#### 1. 文法の違い
JavaScriptは、セミコロンでステートメントを区切ります。また、{}を使ってブロックを定義します。対して、Rubyはよりシンプルで、endを使ってブロックを終了します。この違いにより、Rubyのコードは読みやすくなっています。

#### 2. 標準ライブラリとフレームワーク
JavaScriptには豊富なフレームワーク(React, Angular, Vueなど)が存在しますが、Rubyには特にWeb開発に強力なフレームワークであるRailsが存在します。

# JavaScriptエンジニアがRubyを学んで驚いたポイント4選
JavaScriptエンジニアとしての経験を持つ私が、Rubyを学び始めて驚いたポイントを10選紹介します。

#### 文法の簡潔

元記事を表示

OTHERカテゴリの最新記事