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

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

Rails6からRails7へのアップデート手順(Rails6.1.4.7→Rails7.0.3)

Rails6からRails7へのアップデートメモ
===================================

今更ですが、rails4からrails7までアップデートする必要があったため
[Rails4→Rails5](https://qiita.com/t_mapico/items/ddf423113225ac45b033)
[Rails5→Rails6](https://qiita.com/t_mapico/items/4865a33b03219c99abfd)
Rails6→Rails7
のアップデートで手順をまとめていきます。

ここではRails6→Rails7の手順を書いていきます。

## 事前準備

### testが通るようにしておく
testを通るようにしておくと、アップデート後に、どこがエラーになるのか確認しやすいです。
事前にtestが全て通るようにしておきましょう。

### Ruby Version
今回はRuby 2.7.5 で対応してます

## Railsをアップデート

### gemfileの修正

gemのrailsのバージョンを

元記事を表示

AtCoder ABC261 D の提出を集計して感じたところ + Ruby で解けず crystal で解いてみた

# はじめに
AtCoder さん、ありがとうございます。
# D – Flipping and Bonus
https://atcoder.jp/contests/abc261/tasks/abc261_d

いわゆるDP問題
# 提出の集計
コンテスト中(2022-07-23(土) 21:00 ~ 22:40)の延べ提出数(当社調べ)
||Python (3.8.2)|PyPy3 (7.3.0)|Ruby (2.7.1)|Crystal (0.33.0)|C++ (GCC 9.2.1)|
|:–:|–:|–:|–:|–:|–:|
|AC|4|565|12|7|2283|
|WA|59|**18**|11|**6**|**1006**|
|TLE|**150**|11|**27**|1|191|
|RE|26|3|2|0|110|
|CE|0|0|0|1|46|
|subtotal|239|597|52|15|3636|

`C++`や`PyPy`での提出数が多いのはそうなのですが、
不正解の内訳からしますと、`C++` `PyPy` `Crystal`はいかに`WA`を

元記事を表示

【Rails】コードレビューですぐに役立つTips集

レビューする時もされる時も、似たような箇所が指摘されてきたので、まとめてみました!
(リーダブルコードも買ったから、あとで読んで追記していきたい。)

## 【Tips1】 命名大丈夫?
https://qiita.com/jnchito/items/459d58ba652bf4763820

## 【Tips2】 説明的なコメント❌WHYに答えるコメント⭕️
https://qiita.com/jnchito/items/459d58ba652bf4763820

## 【Tips3】 エラーハンドリング足りてる?
– 関連質問
– そこのfindでnilが渡されても大丈夫?
– params[:hoge]がnilでも大丈夫?
– rescueしなくていいの?
– 対処法
– `return if hoge.nil? `などで、途中で返す
– `hoge&.id`を用いる
– [Railsアプリにおけるエラー処理の考え方](https://qiita.com/jnchito/items/3ef95ea144ed15df3637)

#

元記事を表示

【Ruby】mapで回す必要ある?

リファクタのメモです。
間違っていればご指摘お願いします!

# 元のコード
“`ruby
def nomal(items)
new_items = items.map do |item|
next if item.quantity.zero?
[item.user_id, item.quantity]
end
end
“`

# リファクタ後のコード
“`ruby
def sample(items)
new_items = items.where.not(quantity: 0)
.pluck(:user_id, :quantity)
.to_h
end
“`

元記事を表示

Envek日本到着!Rubyエンジニアを空港迎えに

![iOS の画像 (2).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/462614/f93eaf03-aca6-123e-f434-5ab00955e4c3.jpeg)
(右側がEnvekさんで、左は[iAdramelk](https://github.com/iAdramelk]))

## 先週の水曜は関空行きました。

空港はコロナ前と比べると静かでしたが、今回はある方を迎えるために関空まで行ってました。

またいつか海外も行きたくなりました。
ヨーロッパのEurokoというRubyカンファレンスでも行こうかな。。。

### OSSやってます!

Evil MartiansのバックエンドエンジニアであるAndrey Novikov ([Envek](https://github.com/Envek)) が、日本のエンジニアリングチームを強化するために大阪にやってきました!

(Yabeda)[https://github.com/yabeda-rb/yabeda]や(after_commi

元記事を表示

CSSの基礎知識(日本地図)

こんにちは!!
ともです!!

今回はざっくり日本地図(地方別)をCSSで作成したので共有したいと思います!!:point_up:

![スクリーンショット (66).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2738887/2d58071b-7451-4737-07b6-90c1a3bc2ade.png)

Step1:各自導入したいHTMLに以下を記入

“`ruby:_html.erb

元記事を表示

[Ruby] 配列の結合と展開

Rubyによる、配列を結合し展開する処理について調べていみました。
間違っていればご指摘お願いします!

# 元のコード
今回は下記のコードをリファクタして、ベンチマークを計測しながら比べていこうと思います。
計測方法は[こちらの記事](https://qiita.com/scivola/items/c5b2aeaf7d67a9ef310a)を参考に計測していきます。
“`ruby
def nomal(items)
name_array = []

items.each do |item|
name_array.push([item[:id], item[:name]])
end

name_array.flatten
end
“`

## 計測コード
“`ruby
require ‘benchmark’

n = 10
items = 100.times.flat_map do |i|
[id: i, name: “山田#{i}”]
end

Benchmark.bm(10) do |r|
r.report “no

元記事を表示

[Ruby] 配列の結合について

Rubyによる配列の結合処理について調べていみました。
間違っていればご指摘お願いします!

# 計測コード
“`
require ‘benchmark’

n = 10000
y = 10
hoge_array = Array.new(y, “hoge”)

Benchmark.bm(10) do |r|
r.report “flatten” do
n.times{ [hoge_array, hoge_array, “hoge”].flatten }
end

r.report “splat” do
n.times{ [*hoge_array, *hoge_array, “hoge”] }
end

r.report “+” do
n.times{ hoge_array + hoge_array + [“hoge”] }
end
end
“`

# ベンチマーク
“`
n = 10
y = 10
user system total real
flatten 0.000055 0.000

元記事を表示

間違えてmigrateした時の対処法について(初心者向け)

ポートフォリオ作成中に間違った`マイグレーションファイル`を`migrate`してしまった。
恐らく、今後も同じ様な失敗をすると考えられるため忘備録として記事にしました。

そもそも`モデル`、`マイグレーションファイル`、`マイグレーション`とは

__Model__ (名): _(服装品・自動車などの)…型、雛形_
__migration__ (名):_移住、転住、渡り、移住者群、移動する動物の群_
__migrate__ (動): _(…へ)移住する、定期的に(…に)移動する、渡る_
__マイグレーションファイル__:_データベースの更新処理を行う設計図のようなもの。これをmigrateすれば、SQLを書かなくてもデータベースにテーブルが設計できる。_

### つまり
– `モデル`は __主に__ データベースのデータのやり取りを行う`機能`を担っている。
– `マイグレーション`はSQLを書かなくてもデータベースの構造を操作できる`便利な機能`のこと。
– その操作して`反映する作業`を`migrate`といい。
– `マイグレーションファイル`は反映する内容が書い

元記事を表示

Bootstrap5系でのModalについて

## はじめに
Bootstrap5系を用いてモーダルを比較的簡単に実装できますが、記述するタグが多く、テキスト化して整理しておくことが必要だと考えました。
そこで、備忘録的に記事に残しておくことにしました。

## 実装環境
– Bootstrap 5.0.2
– Ruby 2.6.3
– Rails 6.1.6

※他の言語でも問題なく動くと思いますが、本記事ではRailsで動作確認をしております。

## モーダルとは
そもそもモーダルとは何かという説明をしますと、画面に設置されたボタンをクリックすることで、他の画面に遷移することなく、ポップアップでウィンドウが表示されるものです。設置することでUI/UXの向上につながります。

## Bootstrapでの実装方法
まず、はじめに全体の記述を示します。
以下の記述でモーダルを表示することができます。
ボタンとモーダル本体で構成されています。
“`html:modal.html.erb

元記事を表示

100日後くらいに個人開発するぞ!day062

## 今日はクラスメソッドを学んでみた!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2632394/9d4cde99-d5f7-7cbd-102a-9c8799c55c21.png)

## 「Ruby 学習レッスン V」コースを修了!

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2632394/90981a82-493c-1ca8-6b22-d057a38bce42.png)

## 今日の学び
### クラスメソッドの定義
* クラスメソッドは`def クラス名.メソッド名`とすることで定義できる
* 例
* `class Menu`
* `def Menu.is_today_sunday?`
* `処理`
* `end`
* インスタンスメソッドとの違いはメソッド名の前にクラス名を書く必要がある点

元記事を表示

html_safeの意味

# 背景
controller.rbにhtmlを埋め込んでもhtmlの下のようにソースコードが表示されてしまう

**失敗例**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177825/1b451b2c-80a3-f73d-9015-d792c62a6c8b.png)

# 結論
`render html: msg.html_safe`
このように、html_safeを入れること
**成功例**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177825/8781e6f0-a3b5-779c-afb6-acff8548bea1.png)

# 全体ソースコード
“`ruby:改善後sample
class HelloController < ApplicationController def index #render plain:"Hello, This

元記事を表示

Bash で alias_method_chain を実装する

Ruby on Rails (ActiveSupport) の alias_method_chain[^alias_method_chain_is_deprecated] を Bash で使えるように実装しました。ソースコードは GitHub (https://github.com/suzuki-kei/bash-alias-method-chain) で公開しています。

[^alias_method_chain_is_deprecated]: alias_method_chain は Ruby on Rains 5 で非推奨になりましたが、実現したいことが伝わりやすいと思い alias_method_chain と書きました。

# (Ruby) alias_method_chain とは

Ruby on Rails (ActiveSupport) の `alias_method_chain` を使うと、既存のメソッドの前後に処理を追加できます:

“`ruby
module Hello

def hello(name)
puts “Hello #{na

元記事を表示

50代・ほぼ独学・文系・未経験で2ヶ月半でWebアプリを開発するまで!【Rails+Nginx+Docker+AWS】

はじめに

コロナ禍の中で会社経営をあきらめ、50代目前にして「Webアプリの開発者に、オレはなる!」と決意し、2ヶ月半でアプリを作成した経緯をご紹介させていただきます。

アプリを実装するまで

今回のアプリを作成する「前」のおもな自分のスペックです。

+ アプリ開発前の年齢は限りなく50歳
+ 大学は思いっきり文系の大学。
+ 元WEBデザイナーなのでHTML,CSSなどの知識はある(JavaScriptはコピペ)。
+ 独学でProgateやRails Tutorialをやったことがある。
+ アメリカの大学卒なので英語の公式ドキュメントや記事は読める(ただしプログラミング関係は日本語でも理解がむずかしかったりするのでそこまで有利に感じなかった)。
+ 今回採用したDocker, AWS, Nginxの知識は「どこかでそんな単語を見たことあるような」のレベル

3年間ほど、書籍などを通して自分なりにアレンジをしたアプリを作成したことがあり、自社で

元記事を表示

RubyでYOLOv7を動かしたった

![fuga.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144608/44d704e6-a9ff-ff53-ebe2-8d1d2aef8a3a.png)

最近の若者はRubyとかやらん。

なので、数学や機械学習のことが全くわからないおっさんがRubyでYOLOv7やってみた記事を書く。
ONNX Runtimeがあるので、推論だけならだいたい何でも動く。

https://github.com/ankane/onnxruntime-ruby

(3年ぐらい前に onnxruntimeでYOLOv3をやった記事を書いたので流用)

https://qiita.com/kojix2/items/c113bb44c33083c3bb8c

こちらを経由して(しなくてもいいが)

https://github.com/ibaiGorordo/ONNX-YOLOv7-Object-Detection

こちらのプロジェクトからONNXのモデルをダウンロード。これの管理人が@PINTO さん。

http

元記事を表示

Sinatraのロギングを設定する

## これはなに

Sinatraのロギングについて調べたのでまとめる。

Sinatraのバージョンは`2.2.2`

## ロギングを有効にする

Sinatraのロギング設定はクラシックアプリケーションでは有効でモジューラアプリケーション(`Sinatra::Base`クラス)では**無効**となっている。

そのため、モジューラアプリケーションの場合は以下のように設定する必要がある。

“`app.rb
require ‘sinatra’

class App < Sinatra::Base configure :development, :production do enable :logging end end ``` ↑のように設定することで`Rack::CommonLogger`のログがWebサーバー側のログに出力されるようになる。 ただ、`STDERR`にログが出力されるため注意が必要。 別のファイルに書き込むようにしたい場合は、自分で`Rack::CommonLogger`ミドルウェアを設定する必要がある様。(↓のブログを参照) https:

元記事を表示

Tips: Rubyでクラス内に閉じたアクセスメソッドを宣言する方法

## これは何
Rubyには`attr_*`という宣言でインスタンス変数に対するアクセスメソッドを用意することが可能です。
ただ、単純に`attr_*`を使ってしまうと、クラス外部にもパブリックな形で公開されてしまいます。
内部だけで参照したい場合でも、アクセスメソッドを用意して変数へのアクセスを厳密に定義したい場合はあると思います。
今回はどうそれを実現するのかを説明します。

### バージョン3.0より古いバージョンの場合
実はアクセサメソッドのスコープの絞り方は、3.0以降かそうではないかで書き方が変わります。
まずはバージョン3.0より古いバージョンの場合はどう書くかを説明します。
方法は単純で、`private`などの宣言をした後に`attr_*`の指定を行えば問題ありません。

以下のようなイメージです。

“`rb
class Hoge
def initialize
@fuga = ‘fuga’
end

private

attr_reader :fuga
end
“`

### バージョン3.0以降の場合
バージョン3.0以降の場合、`a

元記事を表示

Rails5からRails6へのアップデート手順(Rails5.2.6.2→Rails6.1.4.7)

Rails5からRails6へのアップデートメモ
===================================

今更ですが、rails4からrails7までアップデートする必要があったため
[Rails4→Rails5](https://qiita.com/t_mapico/items/ddf423113225ac45b033)
Rails5→Rails6
[Rails6→Rails7](https://qiita.com/t_mapico/items/6f586842c15b33db3422)
のアップデートで手順をまとめていきます。

ここではRails5→Rails6の手順を書いていきます。

## 事前準備

### testが通るようにしておく
testを通るようにしておくと、アップデート後に、どこがエラーになるのか確認しやすいです。
事前にtestが全て通るようにしておきましょう。

### Ruby Version
今回はRuby 2.7.5 で対応してます

### gccのバージョンを確認しておく

mini_racerをインストールするためには、gcc6

元記事を表示

こんな感じでRailsコンテナーを作ると良いのではないか?

### やってみたこと

RailsでWebサービスを行うプロジェクトに参画したがどんな風にプロダクション用のDocker化をするのが良いか勉強がてらやってみた。

### これを書いてる人のスペック

ここ10年ぐらいの RubyとRailsの文化を知らない。出始めにちょっと触ったことはあるが、すごく流行っていた時期にはほとんど触れる機会がなく、今更だけどRailsを勉強中。

– 実は[RailsによるアジャイルWebアプリケーション開発](https://www.amazon.co.jp/dp/4274066401)の初版本は読んでいた。
– プロダクションレベルでRailsアプリの開発運用経験なし。(ゼロ年代にPoCや簡易ツールの為には利用あり)
– [gem](https://rubygems.org/profiles/hkato)パッケージを一つだけ登録したことがあるがゼロ年代の話(対象Adobeのサービスは終了済み)。
– Railsで書かれているRedmineからGitLabの[プロジェクト移行ツール](https://github.com/redmine-gitlab

元記事を表示

未経験からITエンジニアとして転職するためにテックキャンプに通ってみた

# テックキャンプを受講してみて
私は、未経験でのITエンジニアへの転職を行うためにテックキャンプというプログラミングスクールに通っていましたので、今後検討される方のために感想を中立な立場として記述したいと思います。
なお、こちらの記事の内容は一個人の見解ですので、参考程度にしていただければと思います。
その上で、私の属性は以下を参考にしていただければ幸いです。

# 前提条件
【当方の前提条件】
・大学は私立文系で3年次より金融専攻
・銀行の営業員として業務に従事
・新卒で入社した企業を1年で退社した、24歳の人
・在職中にHTML&CSSは本を使って学習
・スクール学習期間中は、11時間程度学習(土日関係なし)

# 結論
テックキャンプはお勧めできる。(条件付き)
考える上で「学習内容について」「費用面」「転職活動面」の大きく3つに分けてお話しします。みなさんが気になるであろう上記3つ以外にももちろんスクール選びのための要因や比較等もあると思いますが、ひとまずこちらの3点だけ記述させていただこうと思います。

### 学習内容について
他社サービスとは比較していないですが、テッ

元記事を表示

OTHERカテゴリの最新記事