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

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

GitHub Actions を利用し “.rubocop_todo.yml” を自動更新する

## はじめに

普段開発をしていると、定義ファイルや設定ファイルの更新を行う機会は少なくありません。
“.rubocop_todo.yml” を更新するような単純作業は機械にまかせていきたいなと思いこの記事を書きました。

## どのように実現するか

GitHub Actions には 定期実行を行う機能が存在します (`on.schedule`)
定期実行した job の中で `rubocop` を実行し生じた差分を利用し Pull request を作成します。

今回は `peter-evans/create-pull-request` を利用します。

https://github.com/peter-evans/create-pull-request

### GitHub Actions の設定例

`.githu/workflows` directory 以下に ファイルを作成します
yml に記載している 処理は以下の通りです。

– repository を checkout
– Ruby の install & bundle install
– ruboco

元記事を表示

private method `hogehoge’ called for のエラーで大混乱したお話

# 概要
最近GASとJavaScriptをお勉強中の @Keichan_15 です:v:

Railsの開発を行う際にとあるエラーに遭遇したのですが、参考記事があまり見当たらず解決に時間が掛かったので、備忘録も兼ねてまとめておこうと思います。
意外と解決方法はシンプルでした…:cry:

# 伝えたいこと
– **Classの外** でそのメソッド定義していない?
– def 式がクラス定義の **外** (トップレベル)にあれば **private**
– def 式がクラス定義の **内** にあれば **public**

早速見ていきましょう!

# 発生しているエラー
![2023-03-07 (2).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2798073/c9a039e5-e0e7-5623-d1ab-f4a761fbd884.jpeg)

“private method ‘hoge’ called for ~~“ のエラーが出ています。
特にモデル側(今回であれば `

元記事を表示

(Rails)クラス継承のメリット、デメリット

# class継承とは何か?

継承はあるクラスの機能を引き継いで、新しいクラスを作ることです。

例としてタクシーとバスを作成するとして考えてみます。
それぞれのクラスでは「残りの燃料」や「走行距離」といった属性(プロパティ)を持ち、
「走る」や「ガソリンを入れる」などの操作は(メソッド)は共通しています。

具体的に話すと新しく車クラスを作成し、その中に共通する属性や操作を書きます。
そしてタクシーとバスのクラスは車クラスの機能を引き継いで作成されます。

継承元のクラスを「スーパークラス」と言い、継承先のクラスを「サブクラス」と言います。

# 継承のメリット

継承が用意されていない場合、新しくブレーキの機能を追加したいとなったとき、
乗り物に関する個別のクラスに属性や操作を追加しなければならない!

こうするとコードが長くなってしまい乗り物のクラス全体に機能を追加したり、
修正したりするときに一つ一つを修正しなければならず大変になる。
そこで車のような基盤となるクラスを用意することで新たな乗り物を最小限の手間で作成することができる!

# 継承のデメリット

RubyやJa

元記事を表示

Ruby on Rails チュートリアル 第4章

# **組み込みヘルパー**

元記事を表示

DockerとRuby on Railsを使った基本的なトラブルシューティング

Ruby on Railsに再度親しむために、Open Food Networkでボランティアを始めたところです。彼らはオープンソースで、非営利の、食品店のためのオンラインマーケットプレイスです。独立した農家をハブや流通業者と結びつけるためのソフトウェアを提供しており、そのすべてがRuby on Railsで動いています。

多くのウェブアプリがそうであるように、彼らは物事を簡単にするためにDockerをセットアップしています。Dockerは、特定のソフトウェアパッケージがインストールされていなかったり、間違ったバージョンがインストールされていたりして、他の開発作業を悩ませる「私のコンピュータで動作する」という問題を解消するのに役立ちます。

Dockerは、OSの特定のバージョンを実行するシステムイメージをコンピュータに「ドッキング」させるソフトウェアの一部で、よく知られていません。Dockerは、ビルド時に特定のパッケージをインストールするようにカスタマイズすることができます。その上でRSpecを使ったテストを行ったり、サーバーを立ち上げて開発版のサイトを操作して、自分のコードが期

元記事を表示

主な計算~Ruby~

#### 数値と足し算・引き算

– プログラミングの世界では文字列と数値は別物である。””を使う事で、認識される。

足し算→+
引き算→-

“`Ruby
puts 5+2
puts “5+2”
“`
出力結果
“`
7
5+2
“`

#### 掛け算・割り算・余りの計算

– 掛け算は「*」(アスタリスク)
– 割り算は「/」(スラッシュ)
– 「%」を用いると、割り算の余りを計算できる。

“`ruby
puts 3*5
puts 6/2
puts 9%2
“`
出力結果

“`
15
3
1
“`

元記事を表示

【decodeJWT(無料)】JWT decode API【JSON Web Tokens decoder】

# Usage( 文法 )
“`bash
toekn=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
curl https://jwt.deno.dev/$token
“`

# Example( 実行例 )

## ウラル?( URL )
[https://jwt.deno.dev/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c](https://jwt.deno.dev/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIi

元記事を表示

Ruby on Rails アプリ作成 序盤に出たエラー

# はじめに
新しくアプリケーションを立ち上げて
“`ruby
rails db:create
“`
を実行したときにでたエラーを解決したため、忘れないうちに記録したいと思い投稿します。

# どんなエラーが出たのか
“`ruby:実行していたこと①
rails _6.0.0_ new xxx -d mysql
“`

“`ruby:実行していたこと②
rails db:create
“`

そうすると、以下のようなエラーが出ました。
“`:ターミナル
/Users/admin/.rbenv/versions/2.6.5/lib/ruby/2.6.0/net/protocol.rb:66: warning: already initialized constant Net::ProtocRetryError
/Users/admin/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/net-protocol-0.2.1/lib/net/protocol.rb:68: warning: previous definition of

元記事を表示

いいね機能(非同期通信)

1. 序論
Rails初心者が詰まりやすい非同期通信を用いたいいね機能の追加方法をまとめました。

2. 環境
Rails 6.1.7
deviceによるuserモデルと本を投稿するbookモデルが存在するサンプルアプリを使用

3. モデル作成
以下のコマンドでfavoritesモデルを作成

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3157044/295dee8f-03e8-7676-158d-8b9abf48894a.png)

今回、favoritesモデルはuserモデルとbookモデルの中間テーブルなので、マイグレーションファイルに外部キーを記述し、rails db:migrateを行う。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3157044/600e3d0f-b30e-b078-00ac-f15319174d7b.png)

各モデルにhas_manyとbe

元記事を表示

「Rails7にBootstrap5を導入した」件

# 前書き
Rails7にBootstrap5を入れようと思い、公式ドキュメントの手順を踏んでみたものの各所でエラーを吐いてしまった。

エラーを回避した方法を含め、Bootstrap5の導入手順をここにまとめたい。
なお、既存のアプリに対して導入する手順なので、新規アプリ作成時に導入する方法は記載しない。

# 環境
WSL2
Ubuntu
Docker
Rails7
Ruby 3.1.3

# 実行手順
基本的には[公式ドキュメントに記載の手順](https://rubygems.org/gems/bootstrap)に従うものとする。

“`:Gemfile
gem ‘bootstrap’, ‘~> 5.2’
gem ‘mini_racer’
“`

railsサーバー起動時にExecJS::RuntimeUnavailableというエラーが出る。これの対応としてmini_racerをGemfileに追記する。

[参考記事]
* [ExecJS::RuntimeUnavailableの解決方法](https://qiita.com/Kawanji01/i

元記事を表示

投稿出来ない不具合について紹介(備忘録)!

## 今回の目的

こんばんは!昨日に続く投稿となりました!

今回は実装方法の紹介というよりも、
備忘録の意味合いが大きいので、「こんなことも起きるんだな〜」と思っていただければ幸いです!

## エラー内容の概要

・ポートフォリオの作成中に起きた現象は以下の通りですので、箇条書きで記載します。

-投稿画面で何も反応がない。
-投稿画面をリロードすると反応がある。

## エラー内容の詳細

投稿画面に遷移した後に、フォームへの入力は出来る。
しかしながら、`submitボタン`を押しても何も起こらない。

ターミナル上で確認を行うものの、DBへの保存もできてない様子。
リロードを行い再度記入したところ、`submitボタン`で投稿が可能になりました。

## エラーの原因について

■結論
form_with(今回はnested_form_for)をdiv要素を越えて記載をしてしまっていました…

“`ruby:review_form.html.erb

<%= nested_form_for review, local

元記事を表示

Rubyで文字列の長さを取得する

***Ruby***で文字列の長さを取得するサンプルプログラムです。

“`Ruby
input_line = gets.chomp
num = input_line.length
puts num
“`

文字列の長さは
“`Ruby
num = input_line.length
“`
と**length**プロパティを使います。

元記事を表示

文字列の左から何番目の文字を出力する

文字列の左から何番目の文字を出力するpaizaの問題集の課題を解きました

“`Ruby
# 文字の左から何番目の文字を取り出す
# 標準入力
input_line = gets
# 文字列を1文字ずつ配列に格納する
array1 = input_line.split(”)
#
num = gets.to_i
# 表示する
puts array1[num-1]
“`

元記事を表示

【個人開発】生体管理ポートフォリオ 命どぅ宝

はじめに

こんにちは沖縄県出身の@names_mumuと申します。
エンジニアという職業さえ知らなかった私が2022年11月より4ヶ月間
プログラミングスクールに通い製作した生体管理アプリについて記録しておこうと思います。

【アプリURL】
https://sheltered-gorge-63657.herokuapp.com/

【GitHub URL】
https://github.com/mutsumisadara/OG_app

アプリ開発の経緯

私自身犬を飼っているのですが、何匹も飼えるわけではなく、動物保護団体様へ支援を行っております。
そんな中、たまたまSNSを見ているとその動物保護団体さんが日々の生体管理を
一匹一匹のケージに紙を貼り付け管理をしているところを目の当たりにしました。
「こんなにたくさんいるのに、この管理方法では大変ではないか?」
と思ったのがきっかけで、生体管理情報共有アプリケーションを作ろう!と思いました。

アプリ名前の由来

命どぅ宝(ぬちどぅたから)は沖縄の方言で、
「命は何よりも大切であり、尊く、一番大事な宝である。命を粗末にしては

元記事を表示

RailsでDDDってどうなの?そもそもRailsってどんなフレームワーク?

Railsを学習していて発生した素朴な疑問、 **RailsでDDDってどうなの?そもそもRailsってどんなフレームワーク?** に対して自分なりに納得できるよう調査したので記録しておきます。

## RailsでDDDってどうなの?

### DDDって何?
聞いたこともない、という方は[こちら](https://www.ogis-ri.co.jp/otc/hiroba/technical/DDDEssence/chap1.html)
一般に[クリーンアーキテクチャ](https://qiita.com/nrslib/items/a5f902c4defc83bd46b8)とかに相性がいいとされるこのDDD。完全に思想通りと言わずとも(そもそも完全に思想を理解していない)、エンティティを中心に開発するとDBの都合とロジック側の都合とがいい感じに折衝されて、アサインされたプロジェクトに採用されているとちょっと嬉しい設計思想。
完全に理解したい人は[エリック・エヴァンスのドメイン駆動設計](https://www.amazon.co.jp/%E3%82%A8%E3%83%AA%E3%83

元記事を表示

(Rails)データ型「float型とdouble型」

# float型とdouble型の概要

# 変数と変数の型
変数はプログラミングにおける値を入れておく箱です。
処理の途中で値を入れたり逆に取り出したりできます。
変数の方とはこの箱にはどのような種類を入れてもいいですよといった決まりになります。

# float型

プログラミングの話で出てくる変数の種類の一つであり
その変数用の箱には(有効桁数の大きくない)少数を一ついれていいよという決まりのことになります。
日本語では「単精度浮動小数点型」と表現される場合もあります。

# double型

float型の仲間に「double型(倍精度浮動小数点)」という形があります
float型とdouble型の違いは箱の大きさにあります。

具体的にはfloatの変数には「0.000000002」はゼロが多すぎて(小数点以下が多い)変数の箱に収まりません。
変数の箱が大きいのでdouble型であれば収まります。

これがfloat型とdouble型の違いです。
double型の方が有効桁数の大きい(小数点以下が多い)数字を扱えます。

ですが箱が大きいということはそれだけ場所をとり

元記事を表示

データ型について(rails)

# データ型に関して
データベースのデータ型はいろいろな種類があってわかりにくいです。
どういったときにどのデータ型を使えばいいのかわからなくなるので言語化できるようまとめて行きます。

# データ型の概要

rubyではデータとデータの処理の集まりをオブジェクトと言います。
「プログラミングを行うと気に便利な単位」がデータ型と呼ばれるものです。

プログラミングでは各データがどのようなデータを示しているか区別するためにデータ型というものがあります。
ネコは名前(文字列)なのか数字(数値)なのかです。

# データ型種類一覧

<

検索機能の実装について(Rails)

## 今回の目的

昨日に引き続きこんにちは!
今回はRailsでの「検索機能」についてまとめさせていただきます。

今回の内容はポートフォリオでの実装などにも向いているかと思いますので、
是非ご確認いただければと思います!

## 目次
・開発環境と前提条件
・実装について
-ルーティング定義
-検索フォーム作成
-Searchesコントローラーの作成
-検索方法の定義(モデル内)
-検索結果の一覧表示

## 開発環境と前提条件

■開発環境
・ruby: 2.6.3
・rails: 5.2.4.5
・OS: macOS Catalina ver10.15.7
・Cloud9

■前提条件
・Userモデル
・Bookモデル
・device導入済
・Bootstrap導入済

## 実装について

・ルーティング定義
→ まずはルーティングの定義から進めていきます。

“`routes.rb
get “search” => “searches#search”
“`
このコードを記載したことにより、
検索ボタンを押したとき、
Searchesコントローラーのsearchアクション

【Rails】Chart.jsで1週間の投稿数をグラフ表示する

# 完成形
過去1週間で投稿された本をグラフにしてみます!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3231090/28629dc9-ced5-b78b-4a8f-85264c115c22.png)

# chart.jsをインストール
### 環境
* Ruby 3.1.2
* Rails 6.1.7
* yarn 1.22.19

### 手順
“`
$ yarn add chart.js
“`
Yarnでchart.jsをインストールします。

“`app/javascript/packs/application.js
import Chart from “chart.js/auto”;
global.Chart = Chart;
“`
application.jsに記述を追加し、インポートします。

## グラフを表示
ここからは実際にグラフを表示していきます!

### 1週間に投稿された本の数を取得
今回はユーザーの詳細画面でグラフを表示するので、showアクシ

【Rspec】カラム更新処理のテストをワンライナーで書くときの小ネタ

## 要約
モデルの更新処理のテストが失敗する場合は、changeメソッドをブロックで書くことで更新後の値と比較されるようになってうまくいくかも?
“`rb
it { expect { subject }.to change { some_model.reload.changed, true } }
“`

## 課題
このような`changed`というカラムを持つシンプルなモデルがあるとします。

“`rb
# changed :bool not null
class SomeModel
validates :changed, presence: true

def initialize
self.changed = false
end

def change
self.changed = true
# このメソッド内でレコード保存する何らかの処理
end
end
“`

このモデルのテストを以下のように書いて

「あれ、changedの値を更新したはずなのに

HTMLの要素
データ型 概要
integer 整数型(4バイト)
bigit 整数型(8バイト)