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

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

seleniumのsystem specでheadless chromeを利用している際, Chrome120に更新されてから通らなくなった原因の解消

ruby3.1
rails 7.0
selenium-web-driver 4.16
capybara 3.39.2

結果としては、headless chromeを使う際のオプション名が原因でbrowserNameがchromeとなるはずがchrome-headless-shellになっていた。
chromeはヘッドレスモードが2種類あり、古い方がchrome-headless-shellとなるようだ。
chrome-headless-shellは別で専用のバイナリが公式から用意されていて、そちらをDLして使う事も可能らしい。

修正前
“`ruby
Capybara.register_driver :chrome do |app|
options = Selenium::WebDriver::Options.chrome
options.args << '--headless' options.args << '--no-sandbox' options.args << '--disable-dev-shm-usage' end ``` 修正後 ```ruby

元記事を表示

Progate +α メモず【Ruby on Rails ④⑤】

# はじめに


Ruby on Railsの力を実感してきた今日この頃です。
MVCの分離とか、メソッドがちゃんと独立して

元記事を表示

【Rails】ERB Formatter/Beautifyがうまく動かない

VSCodeの拡張機能であるERB Formatter/Beautifyをインストールした時にエラーで少しハマったので、同様の問題で悩んでいる方のために解決策を共有したいと思います。
環境はmacM2です。

## エラー
– VSCodeの拡張機能からインストール
– Gemfileに gem ‘htmlbeautifier’ を追記して bundle install
これで動くはずなんですが、フォーマットを実行してみると以下のようなエラーが

“`
Error occurred while formatting: Command failed with exit code 1
“`
“`
Failed with exit code: 1. ‘/Users/hogehoge/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/htm
lbeautifier-1.4.2/bin/htmlbeautifier:12:in `rescue in beautify’:
Error parsing standard input: invalid

元記事を表示

ブロックについて

# はじめに

#### ※以下の内容には誤りが含まれる可能性があります

# ブロックとは何か

ブロックとはイテレーターを実装したものである。イテレーターとはオブジェクトの要素や値を
1つずつ取り出して処理することです。

# ブロックの使い方

“`
3.times do
puts “Hello Ruby!”
end
“`

3というリテラルは整数クラスのオブジェクト(正確にはFixnumクラスのオブジェクト)として扱われるので、timesメソッドの後のdo~endの間に書かれている文が3回実行される。

その他、do~endの代わりに{ ~ }を使ってもいい。
“`
$ ruby sample.rb
Hello Ruby!
Hello Ruby!
Hello Ruby!
“`
プログラムを実行すると、timesメソッドの働きにより、Hello Ruby!が3回表示される。

この段階では、timesメソッドによる繰り返し処理を行っただけで、ブロックの機能を全て使っているわけではない。
Integerオブジ

元記事を表示

Railsの form_with を用いた投稿の作成と編集の処理の流れ① pryを使用してインスタンスの中身も確認してみる。

:::note warn
現在、プログラミングスクールにて、主にRubyやRuby on Railsを勉強している者です。この記事を通して少しでもお役に立てられますと幸いです。また、説明不足や誤りがございましたら申し訳ございません。
:::

## 前提
– MVCの流れや一対多の関連付けについての多少の理解。
– Sorcery gemを使用しているため、current_userメソッドを使っています。
– 機能は最低限となっているため、パーシャル(フォーム用)等は使用しておりません。
– ルーティングは resources :posts を使用しており、標準的なRESTfulルートが生成されています。

“`ruby:app/config/routes.rb
Rails.application.routes.draw do
resources :users, only: %i[new create]
resources :posts
end
“`

“`
# 今回使用されるルーティング

posts_path GET /posts(.:format) posts#in

元記事を表示

大文字小文字変換ツール

大文字小文字変換ツールを作成しました

“`Ruby
#大文字に変換
def oomoji(msg)
msg1 = msg.upcase
return msg1
end

#小文字に変換
def komoji(msg)
msg2 = msg.downcase
return msg2
end
# 文字列の出力
def disp(msg)
puts msg
end

name = ‘test’
disp(name)
name1 = oomoji(name)
disp(name1)
name2 = komoji(name1)
disp(name2)
“`

元記事を表示

Progate +α メモず【Ruby on Rails ②③】

# はじめに
今回はデータベース周りが主軸……と思ったけど、結果的にいろいろと。
なんかいつの間にRails②を終えて③に入ってました。怖。
なのでまとめて投稿します。

今回も、気になる見出しがあれば見ていただけると嬉しいです!
# メモず
## `@変数`:Controllerとviewからアクセスできる
なんで`@`つけると参照できるの?別ファイルじゃないの?
→個人的には`html`と`script`の関係性に置き換えて納得しました。

RUNTEQだと `html`と`css`の関係がわかりやすいでしょうか。
– `html`の中に`css`がある(`stylesheet = css`)
– `html`で`class`や`id`をつけることで、`css`からもアクセスできる
(`css`の場合はより広く、より深くアクセスできますが)
– `@`をつけてない変数とは、`css`でいうところの`class`も`id`もない`html要素`のイメージ
(繰り返しになりますが、`css`だとタグでもアクセスできる。まあイメージということで)

## マイグレーションファイル

元記事を表示

【2024/01/14】今日のキャッチアップ

## NotionSwiftを使ってアプリ作ってみた話

https://zenn.dev/maeken/articles/c976a92e50d02d

習慣トラッカーの入力を簡単にするアプリ。自分は今近いことを有料のアプリ(TickTick)で利用しているため、自分で便利なタスク・習慣管理ツールを作ってみたいと思う気持ちが強まった。

## VSCode の ruby-lsp 拡張でコードジャンプができるようになるまでにやったこと

https://zenn.dev/chihaso/articles/f1bda1af64324b

本記事通りに「misogi.ruby-rubocop」をアンインストールしたらコードジャンプできるようになった。神記事。

## tRPC入門―型安全なWebアプリケーションを効率よくつくる

https://zenn.dev/typebase/books/trpc-introduction

サッとWebアプリケーションを作りたいと思っていて、TypeScriptとNext.jsにコミットしている自分が参考にすべき設計だと思っている。導入事例は現在進行

元記事を表示

rails バリデーション機能について

## 結論

validation:検証

オブジェクト(Hoge.newなどで生成されたものなど)がデータベースに保存される(newだけでは保存されない、save,
criate,updateメソッドで初めてデータベースに保存される)前に、本当にデータベースに保存していいのか検証してくれる機能

## とてもシンプル

“`app/models/hoge.rb
class Hoge < ApplicationRecord validate :カラム名,presence: true end ``` presence: 出席する = 空文字を防ぐ ## もしユーザーが空文字を入力していたら? ``` nil => false
“`
と判断される。

## バリデーションヘルパー
目次.2 で詳細が記載されています。
https://railsguides.jp/active_record_validations.html

以上です。

元記事を表示

名前の由来 機能 (初心者向け)

2022/07/13 編集中

私はプログラミング初学者です。
学習する度に、新しい知識の情報量に圧倒されます。
とくに学習を始めた最初の頃は意味が全く分からない単語も多く、学習に対して強い抵抗感を感じました。。
なので、初学者向けに少しでも抵抗感を軽減することができればと思い、機能と名前の由来について記事にすることにしました。

# Ruby
元々、6月に生まれたpealというプログラミング言語が存在していた。pealの発音は6月の誕生石である真珠(Pearl)と同じである。
Rubyは7月に生まれた。「Perlに続く」という意味で、7月の誕生石のルビーから名付けられた。

# gem
RubyGemsが公開しているRubyのパッケージのこと

# Rails
Rubyなどの言語を使って簡単にアプリなどを制作できるような枠組みである。お膳立てという意味合いで「レール」と名付けられた。
RailsでWebページを装飾するには?

# rbenv

# パッケージ
関連するさまざまな要素を1つにまとめたものや、市販・出来合いの製品などの意味で使われる。 特定の業務用に作成されたプログラム

元記事を表示

sidekiqに触れてみた

# はじめに
業務の中で非同期処理を行いたいタスクがあり、システムにsidekiqを新しく導入することで実装しました。
改めて復習も兼ねて記事を書くことにしました。

# 実装

### sidekiq用のサーバーを構築
“`docker-compose.yml
sidekiq:
uild:
context: .
dockerfile: Dockerfile
volumes:
– .:/app
env_file:
– .env
ports:
– 3000:3000
command: bundle exec sidekiq -C config/sidekiq.yml
“`

### GemFileにsidekiq追加し、bundle install実行
“`ruby:GemFile
gem ‘sidekiq’
“`

### sidekiqの各種設定
1\. アダプターをSidekiqにする
ActiveJobをsidekiqと連携させる。
“`config/applicatio

元記事を表示

X(Twitter)のブックマーク画像を自動で収集・保存するRubyスクリプトを作った(前編)

## はじめに
X(Twitter)のアカウントを削除する時にネックとなるブックマークに保存した画像の保存を一括でできるようにするスクリプトが欲しかったので作りました。
api有料化対策として作りました。
~~Xは早くブックマークを一括で出力できるようにしてくれ~~~
python版作ったりしてます。
後編をお待ちください

## スクリプトの概要

このスクリプトは、Selenium WebDriverを使用してX(Twitter)にログインし、ブックマークページに移動して画像のURLを収集します。収集したURLは`tbu.txt`に保存され、後で画像としてダウンロードすることができます。

## 開発の経緯
今年はさぼらずプログラミングに向き合いたいと思ったからです。
今まではさぼってしっかりと向き合っていなかったので今年こそはしっかりやろうと思っています。
今やっている地震のプロジェクトも少し飽きてきたので気休め程度に作ろうと思いました。
## なぜ投稿したのか
個人として使っているインスタでこのスクリプトを書いてることを投稿したらそれなりに反響があったのでしっかり書いて公開しよ

元記事を表示

paizaラーニング解答: 累積和メニュー[Ruby]

# 累積和メニュー
https://paiza.jp/works/mondai/prefix_sum_problems/problem_index?language_uid=ruby
## STEP: 1 区間の和 1
“`ruby
a = [1, 5, 9, 7, 5, 3, 2, 5, 8, 4]
s = [0] * 11
(0..9).each do |i|
s[i + 1] = s[i] + a[i]
end
puts s[8] – s[2]
“`

## STEP: 2 区間の和 2
“`ruby
a = gets.split.map(&:to_i)
s = [0] * 11
(0..9).each do |i|
s[i + 1] = s[i] + a[i]
end
puts s[8] – s[2]
“`

## STEP: 3 区間の和 3
“`ruby
x, y = gets.split.map(&:to_i)
a = gets.split.map(&:to_i)
s = [0] * 11
(0..9).each do |i|
s[i +

元記事を表示

【Rails】小学校教員、初心者が現場で使える時間割アプリを作った話

# 制作背景

元記事を表示

Rails SQLでデータ整形(ROUMD, SUM)

## はじめに

Railsでデータを取得する際に、SQLでROUND内でSUMをして、平均や率として取得する際に一癖あったので備忘録として残しておきます。

## やりたいこと

レコードからデータを取得するときに率として取得したい。

`一部 / 全体 * 100`のようなイメージ

普通にレコードを取得してから計算することもできるが、アプリの仕様上やクエリ上、viewへの表示、CSVダウンロードなどにも使用するため取得時にデータを整形しておくことが良いと判断しております。

## コードサンプル

“`rb
select(
“ROUND((SUM(一部) / NULLIF(SUM(全体), 0.0)) * 100)
as 算出したい率,
…”
)
“`

ポイントとして`NULLIF()`を用いることで分母が`0.0`の場合でもエラーにならないようにしている。
筆者はこの`0.0`の箇所を`0`にしていたがために、期待する結果にならず多くの時間を費やした。

元記事を表示

インスタンスとは?

# はじめに
インスタンスがなんなのか説明できないので備忘録も兼ねてまとめます。
# インスタンスとは?
クラスを元に生成された実体のこと。
簡単に言えば、クラスは設計図であり、その設計図に基づいて作られる実際の物体がインスタンスです。
“`ruby
# クラスの定義
class Car
def initialize(make, model)
@make = make
@model = model
end

def display_info
puts “Make: #{@make}, Model: #{@model}”
end
end

# インスタンスの生成
car_instance = Car.new(“Toyota”, “Camry”)

# インスタンスの利用
car_instance.display_info # 出力: Make: Toyota, Model: Camry
“`
この例では、`Car`クラスが定義され、そのクラスから`Car.new(“Toyota”, “Camry”)`としてインスタンスが生成されています。`i

元記事を表示

Progate +α メモず【Ruby on Rails ①】

# はじめに
Progateに記事見つかっちゃったマンです。ありがとうございます!

[Progate +α メモず 【Ruby】](https://qiita.com/kohki_takatama/items/383ea364bbf41fdae95e)に続き、Rails編第一弾です(複数になる予定)。
範囲:ProgateのRube on Rails 5 l
# メモず
## `MVCモデル`のざっくりとした理解 ※学習前
`M: モデル`:俗に言うバックエンド。**舞台でいう裏方**。ユーザーからは見えない部分。
`V: ビュー`:俗に言うフロントエンド。**舞台でいう役者**。ユーザーに見せる部分。
`C: コントローラー`:モデルとビューの橋渡し・選定をする**舞台監督**。役者と裏方の調整、選定。
## 最初の呪文:`$ rails generate controller home top`とは?
`home`という名前の`controller`を`generate`する。
`top`という名前のアクション(メソッド)と、そのアクションのレスポンスとして表示される`top.h

元記事を表示

attr_accessor・ゲッター・セッターについて掘り下げて考えた

## 自己紹介
はじめまして、はると申します。完全異業種からのエンジニア転職を目指して学習をしています。

## 概要
Rubyの「`attr_accessor`」について、わかりやすく解説されている記事はすでにたくさんありますが、自分が理解できるまで掘り下げたことをまとめました。

## 注意
私は前職が完全異業種であり、英語も苦手で、スクールに入って初めてプログラミングに触れました。
そんな自分が理解しづらかった部分を、同じように初めてプログラミングの概念に触れた人に向けてまとめました。
自分の復習も兼ねて、超超噛み砕いて書いているため、周りくどい書き方になっている箇所もあるかと思います。

また、初学者のため、間違っている箇所もあるかもしれませんのでその際は教えて頂けると嬉しいです🙇

## ゲッターとセッターとは
こちらの記事が大変わかりやすかったので引用させていただきます🙇

https://qiita.com/k-penguin-sato/items/5b75be386be4c55e3abf

こちらの記事で全て理解できた方は今回の記事は対象外となります。
  
一応、公

元記事を表示

paizaラーニング解答: ハッシュメニュー[Ruby]

# ハッシュメニュー
https://paiza.jp/works/mondai/hash_problems/problem_index?language_uid=ruby

## STEP: 1 ハッシュ関数とは
“`ruby
n, mod = gets.split.map(&:to_i)
x = n.times.map { gets.to_i }
hash = x.to_h { |i| [i, i % mod] }
puts hash.values
“`
xの要素に対して順番に% modするだけでも解答できますが、それをハッシュテーブルに保存してみました。

## STEP: 2 やや複雑なハッシュ
“`ruby
n, a, b, mod = gets.split.map(&:to_i)
x = n.times.map { gets.to_i }
hash = x.to_h { |i| [i, (a * i + b) % mod] }
puts hash.values
“`

## STEP: 3 文字列のハッシュ
“`ruby
n = gets.to_i
x = n.t

元記事を表示

Railsのparamsの基本とログでの確認方法

### Railsのparamsとは?
Ruby on Railsでの開発において、paramsは非常に重要な概念です。これは、ユーザーから送信されたデータ(フォームの入力、URLのクエリパラメータなど)をコントローラー内で取得するために使用されるメソッドです。

### paramsの基本
paramsは、ユーザーからのリクエストに含まれるパラメータを含むハッシュのようなオブジェクトです。例えば、フォームから送信されたデータやURLのクエリパラメータを取得する際に使用します。

### パラメータのログでの確認
Railsアプリケーションでは、開発中に送信されたパラメータをログで確認することができます。これはデバッグに非常に役立ちます。

1\. サーバーログの確認:
Railsサーバーを起動し(rails s)、ユーザーからのリクエストを行います。
ターミナルに表示されるサーバーログを確認します。

2\. パラメータの検索:
ログ内でParameters:という部分を探します。これに続く情報が、リクエストに含まれるパラメータです。

3\. 例:
![im

元記事を表示

OTHERカテゴリの最新記事