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

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

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)と申します。
完全異業種からエンジニアに転職するためオンラインスクールに入り学習をしていました。
私は漫画が大好きで、漫画に勇気をもらったり慰めてもらったり、セリフを真似したりと、影響受けまくりの人生を送ってきました💪

もっとたくさんの人に漫画を読んでもらいたい、人生を変える1冊に出会って欲しいという思いから、その人にあった漫画をおすすめするアプリを作成しました📚

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

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

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

https://github.com/shikimum/portfolio

## 使い方
### **1.診

元記事を表示

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ライブラリをスクリプトに読み込みます。
これにより、コマンドライン引数の解析とオプションの処理が可能になります。
###

元記事を表示

stimulus で複数の同一 action の指定

## はじめに
本記事は[Stimulus](https://stimulus.hotwired.dev/)を参考にしています。
勉強中のため、誤りやもっといいやり方があるかも知れません。
その場合は、ご指摘いただけますと幸いです。

また、可能な限りわかりやすく記載するつもりですが、不明瞭な点、追記した方がいい点などがございましたら、合わせてご教授ください。

## この記事の目的
恥ずかしながら、英語が得意なわけではないので、探すのに時間がかかったので、書き残そうと思った次第です。
同一のDOMイベントに対し、複数のアクションが書きたかったのですが、`data-controller`、および `data-target` の指定方法がわからなかったので、やり方を記します。

今回は、`form` に対して、`data-controller` を指定するやり方で備忘録を残します。

## パーシャルの記載
`input` 要素に対して、変更が行われた場合、`hoge-hoge` と `foo` が呼び出されます。
呼び出し順序は、左から右に呼び出されます。
“`ruby
= simp

元記事を表示

Rubyの基本(クラス・インスタンス)

# クラスの定義
「クラス」とは、関連する変数やメソッドをまとめて、複雑なデータを扱いやすくするための仕組みである。
クラスの定義通りに作ったデータを、そのクラスの「インスタンス」と呼ぶ。
クラスは設計書、インスタンスは設計書を元に作られたものであるといえる。
“`ruby:sample_01.rb
# クラスの定義
class User
def get_info
“user name and score here”
end
end

# インスタンスの生成
user1 = User.new
user2 = User.new

# インスタンスメソッドの呼び出し
puts user1.get_info
puts user2.get_info
# user name and score here
# user name and score here
“`

# `initialize`メソッド(イニシャライザ)
`initialize`メソッド(イニシャライザ)とは、インスタンス生成と同時に呼び出せる特殊なメソッドである。
以下に使い方の一例を示す。
“`ruby:

元記事を表示

ポートフォリオ作成

# 天気予報日付ごとに表示したい
– OpenWEatherMapAPIを使用して、天気の情報を取得しているのですが取得した予報データが1つの大きな配列に格納されたままとなっており、ビューで日付ごとにデータを扱うの難しいという問題が発生しておりました。
– `group_by`メソッドを使用して、同じ日付の予報データをグループ化してまとめ、配列として取り出すことで、各日の天気情報を区別して表示できるようにしました。
– これにより、ユーザーが一目で知りたい日にちの情報を確認できるようになっております。
– 加えて、取得できる天気のアイコンには2種類あり、取得した時間帯により異なるアイコンが表示されてしまっていたため、gsub(ジーサブ)メソッドを使用して、天気予報のアイコンを常に昼間のアイコンが表示されるようにしました。

“`ruby
def show
@weather_data = get_weather_forecast(@post.latitude, @post.longitude)
end

def get_weather_forecast(latitu

元記事を表示

【個人開発 / PictoMemory】旅の思い出の投稿・地図の色塗り・旅先探しができるアプリを作りました

# はじめに
エンジニア目指して学習中のさば🐟(@saba7678pg)と申します。
2023年6月からエンジニア転職するためにプログラミングスクールで学習を行っております。

これまでの学習の成果として「PictoMemory」という旅の思い出投稿アプリを作成致しました。
アプリの紹介、使用技術を紹介させていただきます。

:::note info
万が一誤り・ご意見・ご指摘事項等ございましたら、
コメントやX宛にDM頂けますと幸いです。
:::

## アプリ概要

サービスURL:https://pictomemory.com
サービスリポジトリ:https://github.com/SabaCrevette/travel_app

[![Image from Gyazo](https://i.gyazo.com/6c85e19c8160cc723eb02581d8bae6bc.png)](https://gyazo.com/6c85e19c8160cc723eb02581d8bae6bc)

旅の思い出を投稿する、CGM型のサービスです。
投稿した都道府県に紐づいて、真っ白な日

元記事を表示

RubyとRailsのバージョンアップで苦労したこと(Gem編)

依頼いただいて久しぶりに言語とFWのバージョンアップの対応を行ったので、苦労した点などを。

PHP(4->5)などのバージョンアップぐらいしか経験がなかったので不安でしたが、なんとかなりました。

### バージョン情報

#### 元のバージョン

– Ruby
– 2.7.4
– Rails
– 6.1.4

#### アップしたバージョン

– Ruby
– 3.2.2
– Rails
– 7.1.3

### やる前に想定していたこと

– 最近参画したプロダクトで知らない箇所しかないので苦労するだろうなぁ
– メジャーバージョンを上げるから、コードの書き方が変わる箇所も多々あるだろうなぁ
– メソッドとかのDeprecateのWarningとかもすごいだろうなぁ
– 設定とかも大きく変わるだろうから、精査しないといけないな
– Gemとかそのままだと動かないものがあるからバージョンアップ必要だろうなぁ
– Gemもそもそも更新止まっていて、更新できないものもあるんじゃないかなぁ
– リリース後にトラブルがあった時に戻す

元記事を表示

【Ruby】名鉄津島線の準急・急行・特急停車駅判定

名鉄津島線の急行停車駅判定プログラムを作りました。

“`ruby
# 名鉄津島線の急行停車駅(準急・特急も同じ)駅名表示

tsushima_line_data = [“須ヶ口”,”甚目寺”,”七宝”,”木田”,”青塚”,”勝幡”,”藤浪”,”津島”]
express_stop_data = [“須ヶ口”,”甚目寺”,”木田”,”勝幡”,”津島”]
station_num = tsushima_line_data.length
express_stop_num = express_stop_data.length

for i in 0…station_num do
station_info = tsushima_line_data[i]
express_stop_flag = express_stop_data.index(station_info)
# print(express_stop_flag)
if express_stop_flag == nil then
puts “#{station_info}駅は急行停車駅ではありません”
el

元記事を表示

プログラミング教材で作ったチャットアプリに機能追加してみた

# はじめに
[こちら](https://www.techpit.jp/courses/195)の講座でチャットアプリを作成したので、追加のお勉強としてメッセージの削除機能を追加してみました。自分の備忘録を兼ねてやったことをメモ的に書いておきます。

# 環境
“`
OS:MacOS 14.1.1(Sonoma)
Ruby:2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-darwin23]
Vue.js:@vue/cli 5.0.8
“`

# 仕様
* メッセージごとに削除ボタンを表示し、クリックすると該当メッセージが削除される
* 削除対象はチャットにログインしている本人が送信したメッセージのみ
* 他人のメッセージには削除ボタンを表示させない
* メッセージ削除に成功するとメッセージ一覧が再取得され、削除したメッセージは画面から消える

# ルートを設定する
* メッセージ削除のルートを追加します
“`config/routes.rb
resources :messages, only: [‘index’, ‘d

元記事を表示

Rubyの基本(ハッシュ)

# ハッシュの定義
キーと値(バリュー)の組み合わせが重要なデータはハッシュで管理する。
“`ruby:sample_01.rb
# ハッシュの定義
scores = {english: 80, math: 70}
p scores
# {:english=>80, :math=>70}

# 特定のキーの値の更新
scores[:english] = 90
p scores[:english]
# 90

# データの追加
scores[:physics] = 50
scores.delete(:math)
p scores
# {:english=>90, :physics=>50}
“`

# ハッシュについて調べる
ハッシュについて調べる方法には以下のようなものがある。
“`ruby:sample_02.rb
scores = {english: 80, math: 70}

# 文字数
p scores.length
# 2
p scores.size
# 2

# キーや値の存在確認
p scores.has_key?(:physics)
# false
p scor

元記事を表示

Docker+IRuby(rubydata/datascience-notebook)にgemを追加して使う

Docker イメージ [rubydata/datascience-notebook](https://hub.docker.com/r/rubydata/datascience-notebook) にはデータサイエンス関連の gem があらかじめインストール済みになっていますが、それ以外の gem を使いたい場合の手順です。

単に Dockerfile に追記すればいいだけなんですが、「Docker + IRuby 使ってみたいけどまだ Docker についてよく知らない」みたいな人もいるかなと思ってメモしてみます。

使いたい gem が追加されていない状態だとこうなりますね(素の `rubydata/datascience-notebook` を使った場合)。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234055/812a515b-6122-85ea-886f-0824cf75b8ae.png)

今回は例として [svg-graph](https://ruby

元記事を表示

Rubyの基本(配列 Part2)

# `map`による配列の操作
配列を操作する方法として、`each`メソッド以外に`map`メソッドを使う方法がある。
以下の例のように、配列の各値に5ずつ足すとき、`each`メソッドでは空の配列を用意してからその配列に追加するが、`map`メソッドでは新しい配列にそのまま代入できるため、`each`メソッドに比べより簡潔に書くことができる。
また、元の配列を直接更新することも可能。
“`ruby:sample_01.rb
scores = [70, 90, 80]

# eachの場合
updated_scores_01 = []
scores.each do |score|
updated_scores_01 << score + 5 end p updated_scores_01 # 出力:[75, 95, 85] # mapの場合 updated_scores_02 = scores.map do |score| score + 5 end p updated_scores_02 # 出力:[75, 95, 85] # 元のデータを直接更新 scores.ma

元記事を表示

RubyでGoogle Places APIをフル活用!簡単スタートガイド

# Google Places APIとは
Google Places APIは、Googleのデータベースを使いあらゆる場所や施設を検索し、取得することができるAPIです。
このAPIを使用することで、位置情報や検索クエリに基づいてスポットを検索したりすることができます。

## Google Places APIキーの取得
Google Places APIを使用するには、APIキーが必要です。

### 1.Google Cloudプロジェクトの作成
Google Cloud ConsoleでAPIキーを紐付けるためのプロジェクトを作成します。

まずは以下の公式サイトにアクセスします。

https://console.cloud.google.com/

**プロジェクトを作成または選択**を選択します。
![create-or-select-project.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458297/743b11da-6c5c-c9f9-0411-6395d7ec0947.p

元記事を表示

OTHERカテゴリの最新記事