Ruby関連のことを調べてみた2022年06月24日

Ruby関連のことを調べてみた2022年06月24日

PV実装する際に使えるサイト

★簡潔でわかりやすいです!

https://qiita.com/ryouzi/items/727063547da2432beda9

★少しだけ実装を多くしたパターンのやつでした!わかりやすいです!

https://qiita.com/ryo___eng/items/a525f80398210d0486b7

元記事を表示

表示速度を上げるための個人的な考察 画像読み込み編

今回は私が開発したwebサービス(https://universitycommunity.herokuapp.com/) のページを読み込む速度を改善していきたいと思います。
ユーザーがサービスを利用する際に負担に感じる大部分はデザイン・表示速度の2つだと考えます。
なので今回は表示速度の改善を通じてより良いサービス開発に繋げていこうと思います。

まずGoogle社が提供しているPageSpeed Insights(https://pagespeed.web.dev/?hl=ja) を用いて表示速度を測っていきます。

![スクリーンショット 2022-06-24 2.36.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1667538/0cb3d474-2491-a864-9e65-ae1eae0425cf.png)
モバイル版の表示速度スコア
![スクリーンショット 2022-06-24 2.37.43 1.png](https://qiita-image-store.s3.ap-north

元記事を表示

【Rails】javascriptで入力フォーム(textarea)の高さを自動で変えたいよ

# はじめに
textareaの高さが固定の場合、改行していくと前の文章が埋もれていってしまい、かなりUXが悪い。
これを改善するために、Javascriptを導入し、改行に合わせて高さが自動で変わるようにしていく。
意外と一連の流れを記載している記事が少なかったため、かなり殴り書きだが投稿する。ただし、自身が実施した流れのため環境によって要不要がある。
使用環境は以下の通りである。
| No | 項目 | 内容 |
|—:|————-|————|
| 1 | OS | Mac |
| 2 | Ruby | 2.6.3 |
| 3 | rails | 6.0.4 |
| 3 | turbolinks| 5.2.0 |
| 3 | webpacker | 4.0.7 |

**変更前(右のスクロールバーが出る)**
![gif2.gif](https://qiita-image

元記事を表示

【Ruby】何度も繰り返してしまったエラー「undefined method `+’ for nil:NilClass (NoMethodError)」

## 概要
Ruby初心者の私が、ここ最近勉強中に何度も発生させてしまったエラーについて書きました。
難しいエラー内容ではないかと思いますが、なんか前もこのエラー出たな。。。となったので、備忘録として残すことにしました。

### エラー再現コード
“`rb
numbers = 1..5

numbers.each do |number|
# 1~5まで順に足しあげながら繰り返し処理する
sum += number
puts sum
end
“`

### エラー内容
「+」 メソッドは、nilクラスに定義されていませんという意味のエラーメッセージ。
“`rb
$ undefined method `+’ for nil:NilClass (NoMethodError)
“`
「-」の場合も発生しました。
“`rb
$ undefined method `-‘ for nil:NilClass (NoMethodError)
“`
### 原因と解決策
– 原因
eachメソッドのブロック内の変数sumを、メソッド外で定義していないため。

– 解決策
each

元記事を表示

Rubygemsの基本コマンド(インストール/アンインストール/確認)

## はじめに
Ruby用のパッケージ管理システムであるRubygemsの基本コマンド(インストール/アンインストール/確認)について記事を書きます。
自宅のMacにchefを導入しようと試みる過程でgemを触っていて、パッケージの確認やインストール等をする機会があり、そこでコマンドの使い方を調べていたことが記事を書く動機になります。

## コマンド一覧

### Gemのインストール

“`zsh:コマンド
gem install <対象のGem>
“`

“`zsh:実行例
% gem install chef
Fetching aws-eventstream-1.2.0.gem
Fetching multi_json-1.15.0.gem
Fetching uuidtools-2.2.0.gem
Fetching aws-sigv4-1.5.0.gem
Fetching little-plugger-1.1.4.gem
Fetching vault-0.17.0.gem
Fetching rubyntlm-0.6.3.gem
〜〜〜省略します〜〜〜
“`

### イン

元記事を表示

【R】複数のテーブルをまとめてYAML形式で保存する

Rでデータを保存するときには、CSV形式などでテーブル1つを1ファイルで保存することが多いですが、複数の表をYAML形式で1つのファイルにまとめて保存することができます。

### テーブルをYAML形式で保存する

まず、1つのテーブルの保存です。

“`R:write_table1a.R
library(tidyverse)
library(yaml)

table1 <- data.frame(a=c(1,2,3),b=c(10.3,11.6,12)) write_yaml(table1, "table1a.yaml") ``` 保存されたファイルはテキストになっていますので、テキストエディタなので読むことができます。 ```YAML:table1a.yaml a: - 1.0 - 2.0 - 3.0 b: - 10.3 - 11.6 - 12.0 ``` 列単位のベクトルになっています。 行数が多くなると、行単位で保存した方がテキスト見る場合読みやすいように思います。 ```R:write_table1b.R write_yaml(transpose(as.list(

元記事を表示

DM機能実装する時に使用できるサイト

★非常にわかりやすく且つシンプルで理解しやすいのでオススメです!

https://qiita.com/mi-1109/items/660ec3630e76f11d1f16

★実装はできなかったけど、わかりやすい感じでした!

https://qiita.com/bindingpry/items/6790c91f374acc25bea2

元記事を表示

集中力のおはなし

## 集中力とは
一つの事柄に注意を集中して物事に取り組む能力。wikiより

らしいです


## 年齢
人間の集中力は20歳ぐらいでピーク

その後はどんどん低下していく


## 時間と集中力の関係

時間の経過で下がる
経過するほどペナルティあり

適切な時間は諸説あり


## 理想?
image.png


## 感じたこと
– 集中力もリソースとしてマネジメントする必要あり。

– 疲れたら休憩する?
– 休憩をもっと挟めばパフォーマンスあがるかも?

元記事を表示

RubyプログラマがAtCoderの環境をatcoder-cliとonline-judge-toolsで快適にしてみた

# 0. はじめに
基礎力向上・アルゴリズム強化のために再度習慣化しよう!
どうせやるならコンテストにも参加したい!!
ということで[AtCoder](https://atcoder.jp/home)を始めることにしました
ビギナー向け、上級者向けなど色んなレベルのコンテストが**毎週開催**されてます

ただ実際に少しAtCoderをやってみて気づいたのですがウェブ上での操作性がイマイチ?
ちょっとコードを書いて事前テストするのもサンプルの入力例をコピペしなきゃいけない
そして欲を言うなら、コマンドラインですべて完結させたい
キーボードから手を離してマウスでボタンぽちぽちしなきゃいけないのは本当にナンセンス

調べてみたらありました(開発者様、本当にありがとうございます。みんなでスター送りましょう?)
– [atcoder-cli](https://github.com/Tatamo/atcoder-cli)
– [online-judge-tools](https://github.com/online-judge-tools/oj)

本記事は上記のツールを用いてRubyでAt

元記事を表示

Rubyの変数展開

シングルクォーテーション(”)は変数展開が行われない。

変数展開を行う理由は、自動で#to_sが働くから。
#to_sとは、文字列ではない値を文字列に変換するメソッド。

変数展開は、文字列連結と違い、数値 + 文字列の連結ができる。

元記事を表示

Railsでの一覧機能作成手順

# はじめに
初心者なりにまとめたものになりますので、諸先輩方からは何書いてんだおめえと感じる部分があると思います。
そう感じた際は、お手数ですが、コメント頂けると幸いです。

内容としては、 ***コントローラー作成からマイグレーション***になります。

## 目次
– ***一覧機能を実装する手順***
-routes.rbファイルの編集
-ルーティングの確認
-コントローラーの作成
-indexアクションの定義
-ビューファイル作成・編集
-ビューの実装確認
-モデルの作成
-マイグレーションファイルの編集
-マイグレーションの実行

## routes.rbファイルの編集
– ***app/config/routes.rbに存在するファイルの編集***
初期は
Rails —— do
~~
end
が存在し、~~の箇所へ下記のコードを入力
※作成したばかりの時は、~~の中身は削除する
#
get ‘posts’, to: ‘posts#index’
HTTPメソッド ‘URIパターン’, to: ‘コントローラー名#アクション名’

***解説*

元記事を表示

ruby のパターンマッチ使ってなかったので練習する

# これは何?

Python に 30年の時を超えて `switch` 〜 `case` のようなものが入ったという噂を聞いて。
そういえば ruby のパターンマッチ使ってなかったと思ったので、ちょっと触ってみる。

# 参考資料

* [Ruby3.0でのパターンマッチ機能の変更点](https://tech.medpeer.co.jp/entry/2021/01/12/100000)
* [NEWS for Ruby 2.7.0](https://docs.ruby-lang.org/ja/2.7.0/doc/news=2f2_7_0.html)
* [NEWS for Ruby 3.0.0](https://docs.ruby-lang.org/ja/3.1/doc/news=2f3_0_0.html)
* [NEWS for Ruby 3.1.0](https://docs.ruby-lang.org/ja/3.1/doc/news=2f3_1_0.html)

公式の普通のリファレンスマニュアルには書いてないので、わかりにくい。
こんなところに書くより貢献したほうがいいの

元記事を表示

レコード数が膨大のカラムにダウンタイムなしでindexを貼る方法

## はじめに
MySQLで、レコード数が膨大のカラムに index を貼ろうとすると、デプロイ時に落ちることがありました。
この記事では、実際に行ったダウンタイムなしで index 貼る方法を紹介します。

### 簡単なDB構成
今回は、User テーブルの point カラムに対して index を貼ります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/833332/a5096689-3568-7e43-e4fa-c4f9da3778a1.png)

## 手順
– index を貼った point_new カラムを追加し、deploy
– point の値を point_new に移すスクリプトを流す
– rename する migration ファイルを作成し、deploy

### index を貼った point_new カラムを追加
User テーブルに、point_new というカラムを追加します。
カラムの追加に関しては、[こちらの記事](https://qiita

元記事を表示

問題を解いてRubyの知識を深ぼる。⑦

# はじめに
毎日行ってきたRubyの問題を解くアウトプットは今日で最後になります。

# Q31 条件演算子
3桁の正の整数を入力。その整数の「百の位・十の位・一の位の和」について、
10の倍数(0,10,20,30…)からの差が
– 2以内であるときは”True”
– それ以外は”10の倍数との差は○です”
と表示されるようにする。
出力例
near_ten(117)→True
near_ten(123)→10の倍数との差は4です
near_ten(111)→10の倍数との差は3です
0も10の倍数に含むものする。
百の位・十の位・一の位の和が6などの時に、「10の倍数との差は6です」と出力せずに、「10の倍数との差は4です」と10の倍数から近い方の差を出力する。
解答
“`
def near_ten(num)
total = (num/100) + (num/10 % 10) + (num % 10)
remainder = total % 10
if remainder <= 2 || remainder >= 8
puts “True”
elsi

元記事を表示

TypeError – no implicit conversion of nil into String エラーの解消

# エラーの状況
“`ruby
class XXX
def XXX
content = ”
content << @user.name return content end end ``` 空のstringクラスのcontentに、@user.nameで取得した値(今回の場合はnil)を結合して、そのcontentを返すメソッドをあるモデルに定義したが、`TypeError - no implicit conversion of nil into String` が発生した。nilからstringへの暗黙の変換はないとのこと。 # TypeErrorとは リファレンスから引用。 >メソッドの引数に期待される型ではないオブジェクトや、期待される振る舞いを持たないオブジェクトが渡された時に発生

contentのメソッド<<にnilが渡されていることが原因か? # Stringのインスタンスメソッド << ```ruby # 例 content = '' content << "tomato" p content # => “tomato”
“`
引数で与えられ

元記事を表示

パンくずリストの作成 breadcrumbs

# 導入
パンくずリストの導入にはgretelというgemが便利。
“`
gem ‘gretel’
“`
“`
% bundle install
“`
“`
% rails g gretel:install
“`
上記のコマンドで、configディレクトリ直下にbreadcrumbs.rbが作成される。

# パンくずリストの作成
例として、トップページ→投稿一覧→投稿詳細という階層のリストを作成する。
“`ruby
crumb :root do
link “Top”, root_path
end

crumb :post_index do
link “投稿一覧”, posts_path
parent :root
end

crumb :post_show |post| do
link “投稿詳細”, post_path(post)
parent :post_index
end
“`
対象のviewファイルに下記のように記載する。
“`erb
<% breadcrumb :post_index %>
<% breadcrumb :post_show, @po

元記事を表示

Rubyの条件分岐の使い分けについて

条件分岐を実装するシチュエーションがあり、使い分けの定義が曖昧だったのでいろいろ調べてまとめてみました。
基本的な内容です。

# 条件分岐とは
「〜な時〜な処理をする。」というものです。点数が80点以上であればgreat、60〜80点であればgood、60以下であればbadみたいな感じで結果に応じた処理を行うものです。
## if文
“`if 条件 then 処理 end“`のような感じで書きます。条件がtrueの時に処理が実装されます。
“`
if score >= 80
puts “Great”
elsif score >= 60
puts “Good”
else
puts “Bad”
end
“`

## unless文
“`unless 条件 then 処理 end“`のような感じで書きます。条件がfalseの時に処理が実装されます。ifの逆バージョンです。
“`
unless score >= 60
puts “合格”
else
puts “不合格”
end
“`

## case文
“`case 評価する式 when 条件 処理 en

元記事を表示

rubio-radio – Rubyで作るシンプルなGUIラジオアプリ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144608/e166db65-1b1b-0f8b-1684-62b97a4d6bf3.png)

## はじめに

Rubyを使ってシンプルなGUIのラジオアプリを作った。

https://github.com/kojix2/rubio-radio

[Glimmer-DSL-LibUI](https://github.com/AndyObtiva/glimmer-dsl-libui) を利用した。

https://github.com/AndyObtiva/glimmer-dsl-libui

## 概要

* [RadioBrowser](https://www.radio-browser.info)のTopVote500がテーブルに表示される。
* インプットボックスに打ち込むと、ラジオ局をインクリメンタルサーチできる(Glimmer-DSL-LibUIの機能)
* 再生ボタンを押すとコマンド(デフォルトでは[VLC](htt

元記事を表示

昨日までの投稿を削除するバッチ処理

## 記事の対象者
バッチ処理で投稿のデータを管理したい人

## 前提条件
Ruby 2.6.3
Rails 6.1.5

## 実装の流れ
**1、削除プログラムの作成
2、gem【whenever】の導入**

## 削除プログラムの作成
app/libの配下にbatchフォルダを作成します。
次に作成したbatchフォルダの中でdata_reset.rbファイルを作成して以下を記述して保存します。

“`php:app/lib/batch/data_reset.rb
class Batch::DataReset
def self.data_reset
@activity_points = ActivityPoint.all.where(“date <= ?", Date.yesterday) @activity_points.delete_all p "前日の活動拠点を全て削除しました" end end ``` コードの解説をします。 私は活動日が昨日になっているものを削除するプログラムを作成しました。 ActivityPointモデル内にある

元記事を表示

[RSpec] トップレベルに定義されたメソッドをモックする方法

## サンプルコード
トップレベルに定義した`hoge`メソッドをモックして、モックできたことの検証を行うテストです。
“`ruby:hoge_spec.rb
require ‘rspec/core’

def hoge
‘?’
end

RSpec.describe ‘トップレベルに定義されたメソッドをモックする’ do
it ‘モック前に?を返し、モック後に?を返す’ do
expect(hoge).to eq ‘?’

allow_any_instance_of(Object).to receive(:hoge).and_return(‘?’)

expect(hoge).to eq ‘?’
end
end
“`

上記のテストをRSpecで指定して実行すると、成功します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/468458/fa32148e-399f-5a6d-ebe8-8fab79e9fbdc.png)

## なぜ成立するのか?

元記事を表示

OTHERカテゴリの最新記事