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

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

【開発実績】エンジニア向け就活マッチングサイト【Rails】

# はじめに
株式会社prezyのインターンにて、エンジニア向け就活マッチングサイトを開発した。
エンジニア3名で開発し、そのうち1人がフロント、2人がバックエンドを担当した。私の担当はバックエンドである。

# アプリの内容
## 企業紹介
企業は、自社の情報を登録できる。
業種や所在地、従業員数などの基本的な情報に加え、その企業が出している求人情報を登録できる。
求人情報は、詳細を登録することもでき、そこで詳しい業務内容などを記載できる。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626170/db943967-d436-1235-6293-7e0445ea91a2.png)

## 学生検索
企業は、条件で絞り込んで学生を検索できる。
条件には、
・希望業種 ・言語スキル
を指定できる。
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626170/c6feede1-d6e7-488d-6c12-

元記事を表示

【Rails】gemの削除・バージョン変更方法

# 【Rails】gemの削除・バージョン変更方法
初めまして!

今回はgemの削除・バージョン変更方法についてです。
※自分は「bundler」を使っているので「bundle exec」を加えてのコマンド紹介になっています。
(bundleは、Rubyで使用されるGemの管理ツールです。)

### gemのアンインストール方法
“`
$ bundle exec gem uninstall 消したいgem名
“`
    ⬇︎
Gemfileから消したいgemを削除
    ⬇︎
“`
$ bundle install
“`
以上でGemfile.lockからも消えます。

・具体例(「sorcery」と言うgemを消す場合)
“`
$ bundle exec gem uninstall sorcery
“`
    ⬇︎
Gemfileから今回消したいgem = 「sorcery」 を削除
    ⬇︎
“`
$ bundle install
“`

### gemのバージョン変更方法
バージョン変更はまず上記で紹介したように元々ある「バージョンを変え

元記事を表示

既存Railsアプリをdocker化したらRSpec走らん問題【初学者向け】

既存のrailsアプリをdocker化するとローカルでエラーなく走っていた`RSpec`の`system spec`のテストが何一つまともに走ってくれず、修正した内容の備忘録となります。
どなたかのお力になれば嬉しいです。

:::note warn
プログラミング初学者なので、内容に誤り等ある可能性があります
誤りがありましたら教えてくださると幸いです
:::

環境
ruby 3.2.2
Ruby on Rails 7.0.8
Docker 24.0.2

# エラーその1
`docker compose run web bundle exec rspec`を実行すると
“`
1.1) Failure/Error: visit root_path

Selenium::WebDriver::Error::WebDriverError:
unable to connect to /root/.cache/selenium/chromedriver/linux64/122.0.6261.57/chromedriver

元記事を表示

Rspecで関数のモックをしているのに実行されてしまう

# はじめに
Rspecで2回同じところにハマったのでまとめます

# 問題

以下のようなテストを書きました

“`rb
require ‘spec_helper’

RSpec.describe sample do
describe ‘サンプルのテスト’ do

context ‘正しい引数が与えられた場合’ do
it ‘成功する’ do
params = {“hoge”=>”fuga”}
test.put_api(params)
expect(TestApi).to receive(:put_test).with(params.to_json).and_return(true)
end
end
end
end
“`

しかし実際にAPIを叩く関数をモックしているのになぜか実際にAPIを叩いてエラーになりました

# 解決方法

このような場合はモックとアサーションを兼任しているので、実際の呼び出し前にexpectを書く必要があります

“`rb
require ‘spec_he

元記事を表示

AtCoder Beginner Contest 343参戦記録

RubyでAtCoderに参戦した記録です。
初めてABC3完できました!(配点は低めでしたが…)
D問題はコンテスト終了後に解説を見てからコードを書きました。

## [ABC343 A Wrong Answer](https://atcoder.jp/contests/abc343/tasks/abc343_a)
0~9の整数のうち、与えられた整数A、Bの和と等しくないもののうち1つを出力する問題です。
“`Ruby
a,b=gets.split(” “).map(&:to_i)
for i in (0..9)
if i != a + b
puts i
break
end
end
“`

## [ABC343 B Adjacency Matrix](https://atcoder.jp/contests/abc343/tasks/abc343_b)
N個の頂点があるグラフについて、各頂点が他のどの頂点と辺を持っているかを出力する問題です。

“`Ruby
n = gets.to_i
array = []
n.times do
array << get

元記事を表示

【個人開発】テキストにコメントを追加するアプリ【Rails】

# はじめに
大学の研究室で、教授に論文を提出し、訂正していただくことがある。
そのようなとき、紙媒体で提出し、そこにコメントをいただいていた。
印刷するのは無駄だし、テキストにコメントをつけるアプリを作ろうと思い開発した。

# 概要
内容はシンプルで、ユーザーが行う操作は次の通りである。
1. 文章追加ページ(/texts/new) から添削したい文書を追加する。
1. 添削ページ(/texts/:id/edit) にアクセスする。
1. コメントを追加したい場所を選択し、右クリックする。
1. 表示されたコメント入力欄にコメントを追加し、追加ボタンを押す。
1. プレビューページ(/texts/:id) にアクセスし、プレビューする。
1. PDF作成ボタンをクリックし、PDF形式でダウンロードする。

コードは次のGitのレポジトリに記載している。
[Gitのレポジトリ](https://github.com/takiAtdu/comment-app)

# 実際の画面
## 文章追加ページ(/texts/new)
文章を入力するページは次のようなフォームにした。
テキストを

元記事を表示

【Ruby】問題集解答 Part3(paizaラーニング)

# N個のデータの入力 (paizaランク D 相当)
https://paiza.jp/works/mondai/stdin/stdin_n
### 自分の解答
せっかく受け取った`num`を上手く使っていないのが美しくない気もするが、前回ChatGPTから教わったことを活かしたいと考え、`split`を使った。
“`ruby:practice_01.rb
num = gets.to_i

array = gets.chomp.split

puts array
“`
「2行目でN個の文字列が半角スペース区切りで与えられます。」とあるが、上記のコードにおいては、最初に受け取ったN個分の入力しか許さない仕様にはなっていないところが減点ポイントかもしれない。

### ChatGPTの解答
以下は、与えられた条件に基づいて標準入力からN個の文字列を受け取り、順にN行で出力するRubyのコードです。

“`ruby
# Nの値を受け取る
n = gets.to_i

# N個の文字列を半角スペース区切りで受け取り、配列に格納する
strings = gets.split

# 配列の

元記事を表示

AtCoder Beginner Contest 342の参戦記録

RubyでAtCoderに参戦した記録です。
AB2完で、C問題はコンテスト終了後に解説を見てからコードを書きました。

## [ABC342 A Yay!](https://atcoder.jp/contests/abc342/tasks/abc342_a)
ある1文字を除いてすべて同じ文字で構成される文字列Sの中で、他の文字と異なる1文字は前から何文字目かを出力する問題です。
“`Ruby
s = gets.chomp.chars # 受け取った文字列sをcharsメソッドで1文字ずつの配列にする
h = s.tally # 各アルファベットの出現頻度をHashにまとめる
ans = h.key(1) # Hashの値が1のもののキーとなる文字をansに代入
puts s.index(ans) + 1 # ansの文字列(配列)sの中での登場箇所インデックス + 1を出力
“`

## [ABC342 B Which is ahead?](https://atcoder.jp/contests/abc342/tasks/abc342_b)
並んでいる人の番号が与えら

元記事を表示

f.text_field について

クレジットなどで購入機能を付ける際、クレジット番号など記載するマスを作りたい場合に

“`ruby:
<%= f.text_field :number, class:"input-default", id:"number-form"%>

“`

とする。

尚f.text_fieldの後ろは任意の名前をつけて、class,idの順で記載

元記事を表示

【Ruby】問題集解答 Part2(paizaラーニング)

# 3つのデータの入力 (paizaランク D 相当)
https://paiza.jp/works/mondai/stdin/stdin_3

### 自分の解答
(思いつかなかった)

### ChatGPTの解答
以下は、標準入力から3つの文字列を受け取り、それらを順に3行で出力するRubyのコードです。

“`ruby:ruby
# 3つの文字列を標準入力から受け取る
input = gets.chomp.split

# それぞれの文字列を順に3行で出力する
puts input[0]
puts input[1]
puts input[2]
“`

このコードは、標準入力から1行を受け取り、それを半角スペースで分割して配列に格納します。そして、その配列の要素を順に3行で出力します。

元記事を表示

[Rails]erb2slimコマンドでNoMethodErrorが発生した場合の対処法

## 経緯
html2slimを使用してerbをslimに変換しようとしたところNoMethodErrorが発生した。
“`bash
$ bundle exec erb2slim app/views/layouts/ –delete

NoMethodError: undefined method exists? for File:Class
“`

## 何故発生したか?
Ruby3.2で削除されたFile.exists?メソッドをhtml2slimが使用していた。

## 対処法
このエラーが発生した当時は、ソースコードの `File.exists?` を `File.exist?` に書き換えて対応したのですが、別名でRuby3.2に対応したhtml2slimが存在することに気付きました。

https://rubygems.org/gems/html2slim-ruby3

という訳で、こちらをGemfileに追加して`bundle install`します。
以前のhtml2slimはGemfileから削除して下さい。

“`ruby:Gemfile
gem ‘html

元記事を表示

Rails ActionDispatch::Cookies::CookieOverflowというエラーが出る原因と対策

※この記事は僕がぶち当たった問題をとりあえずChatGPTくんに丸投げしてライティングしてもらったものです。

# 概要
この記事では、Railsアプリケーション内で発生する可能性のあるActionDispatch::Cookies::CookieOverflowエラーについて説明します。
このエラーは、クッキーがサイズの上限を超えた場合に発生します。エラーの原因や、解決するためのさまざまな方法について解説します。

# エラーの原因
エラーの原因は、クッキーのサイズが大きすぎることです。
特に、セッション情報をクッキーに保存している場合、その情報が大量になるとエラーが発生しやすくなります。

# 対策
エラーを解決するためには、以下のような方法を検討することができます。

1. クッキーのサイズを小さくする: 必要な情報のみを保存することで、クッキーサイズを削減します。
2. セッション情報のサーバーサイドへの保存: セッション情報をサーバーサイドのメモリやデータベースに保存することで、クッキーのサイズを減らすことができます。
3. クッキーの分割: クッキーが大きすぎる場合は、複数

元記事を表示

[Ruby]ポケモンで理解する特異メソッド・特異クラスの旅

Ruby独特の概念に特異メソッド・特異クラスがあります。
この特異メソッド・特異クラスはRuby世界でのオブジェクトが独自の振る舞いをするために欠かすことができない概念です。

そこで今回は、ポケモンを例にしながら特異メソッド・特異クラスについて説明していきます!

## この記事の目的
特異メソッド・特異クラスについて理解する

## サンプルコード
今回は以下のサンプルコードで説明していきます。
“`ruby:index.rb
class Pokemon
attr_reader :name,
:attack_point

def initialize(name, attack_point)
@name = name
@attack_point = attack_point
end

def attack
puts “#{@name}の通常攻撃!#{attack_point}のダメージを与えた!”
end
end

class Pikachu < Pokemon def kaminari_attack

元記事を表示

net/http で GraphQL API にリクエストする

GraphQL かどうかはあまり大きな問題ではないですが…

## コード

– `Net::HTTP::Post.new` の第2引数 `initheader` は、必要に応じて設定してください。今回は `Authorization` と `Content-Type` を設定しています
– `hostname` と `api_token` を取得しているところは、Rails の機能で実現しています。必要に応じて読み替えてください
– Rails でない場合などで `require ‘net/http’` されていない場合は、別途記述してください

“`ruby
query = <<~QUERY { books { name } } QUERY { query: }.to_json http = Net::HTTP.new(Rails.configuration.settings.fetch(:hostname), 443) http.use_ssl = true req = Net::HTTP::Post.new( '/graphql'

元記事を表示

[Docker] Rails7 + postgreSQL + bootstrapの環境構築

## はじめに

この記事では Docker を使って rails7 + PostgreSQL + bootstrap の環境構築を行います。

## 環境

– macOS Ventura 13.3.1
– Docker 24.0.7
– Docker Compose v2.23.3-desktop.2
– Ruby 3.2.2
– Rails 7.0.8.1
– PostgreSQL 12.18
– bootstrap5 5.3.2

## ファイルの準備

ファイル構成です。

“`
app
|– Dockerfile
|– docker-compose.yml
|– Gemfile
|– Gemfile.lock
“`

### Dockerfile

“`Dockerfile:Dockerfile
FROM ruby:3.2.2-alpine
RUN apk update && \
apk add –no-cache gcompat && \
apk add –no-cache linux-headers libxml2-d

元記事を表示

asdfでWSL+UbuntuにRubyをインストール

# はじめに

プログラミング言語管理ツールのasdfを使って、WSL UbuntuにGoをインストールします。

# 前提環境

https://qiita.com/perilla/items/69bc6f89001dbceb0cde

https://qiita.com/perilla/items/ef73cf57ade24bc94f19

#asdf更新

“`sh:Ubuntu
asdf update
“`

# Rubyの存在確認

“`sh:Ubuntu
asdf plugin list all | grep -e ruby
# ruby https://github.com/asdf-vm/asdf-ruby.git
“`

https://github.com/asdf-vm/asdf-ruby.git

# asdfにRubyを追加

“`sh:Ubuntu
asdf plugin add ruby
“`

# 依存パッケージをインストール

[GithubのREADME](https://github.c

元記事を表示

【個人開発】漫画好きが漫画とアロマをお勧めする診断アプリを作りました📚

## はじめに
はじめまして、1歳子持ちのshikimum([@abbyE424214](https://twitter.com/abbyE424214) )と申します。
完全異業種からエンジニアに転職するためオンラインスクールに入り学習をしていました。
私は幼少期より漫画が大好きで、漫画にさまざまな影響を受けてきました💪
もっとたくさんの人に漫画を読んでもらいたい、人生を変える1冊に出会って欲しいという思いから、その人にあった漫画をおすすめするアプリを作成しました📚

**「漫画の処方箋」**
ユーザーの疲れタイプに合わせて、あなたにあった漫画とアロマをお勧めします。

https://www.comic-health.com/

[![Image from Gyazo](https://i.gyazo.com/03568b9efa89d71279e9c0877b08a8ca.jpg)](https://gyazo.com/03568b9efa89d71279e9c0877b08a8ca)

https://github.com/shikimum/portfolio

## 使い方

元記事を表示

TEST

# hello world

元記事を表示

【Ruby】問題集解答 Part1(paizaラーニング)

# N行のデータの入力 (paizaランク D 相当)
https://paiza.jp/works/mondai/stdin/stdin_n_line
### 自分の解答
まず空の配列を用意し、その中に受け取った数値の個数分だけ値を格納し、最後に`puts`する。
勉強のために、`for`と`while`の2つの方法で書いた。
“`ruby:practice_01.rb
times = gets.to_i

array = []

# forの場合
# for i in 1..times
# array << gets # end # whileの場合 num = 1 while num <= times array << gets num += 1 end puts array ``` ### ChatGPTの解答 以下は、Rubyで提供された条件に基づいて問題を解決するためのサンプルコードです。このコードは、すべての入力を受け取った後にまとめて出力します。 ```ruby:ruby # Nの値を取得 n = gets.to_i # N行分の文字列を受け取

元記事を表示

optparseについて

# はじめに
なぜoptparseを学ぶことになったかというと
Rubyでカレンダーを作成する際に、macの`cal`コマンドで表示されるようなカレンダーを表示したかったのでoptparseを使用しました。
# どういうものか
コマンドラインのオプションを取り扱うためのライブラリ
– コマンドライン引数は、ターミナルから実行時に引数を渡して読み込める仕組み。
– 引数は文字列として出力されます。
### OptionParser 基本的な使い方
1. OptionParser オブジェクト opt を生成する。
1. オプションを取り扱うブロックをoptに登録する。
1. opt.parse(ARGV)でコマンドラインを実際にparseする。

#### 1. OptionParser オブジェクト opt を生成する。
“`ruby:sample.rb
require ‘optparse’

opt = OptionParser.new
“`
optparseライブラリをスクリプトに読み込みます。
これにより、コマンドライン引数の解析とオプションの処理が可能になります。
###

元記事を表示

OTHERカテゴリの最新記事