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

Ruby関連のことを調べてみた2022年08月15日
目次

【Rails】turbolinksが原因で、一度リロードしないとjsが反応しない

# はじめに
[【Rails】javascriptで入力フォーム(textarea)の高さを自動で変えたい](https://qiita.com/vaza__ta/items/4a8895889ed8da683845)
上記の記事で書いたものが、一度ページをリロードしないとjsが動かない(高さが変わらない)ことが起こった。
これを改善するために、turbolinksを修正していく。

# 環境
| No | 項目 | 内容 |
|—:|————-|————|
| 1 | OS | Mac |
| 2 | Ruby | 2.6.3 |
| 3 | rails | 6.0.4 |
| 4 | turbolinks| 5.2.0 |
| 5 | webpacker | 4.0.7 |

# 実装
[【Rails】リロードしないとJavaScriptが動かない!【簡単に解決】](htt

元記事を表示

【Rails】モデルに複数のタグを付ける方法

## はじめに
近年のSNSやブログ等では、1つの投稿に対して、複数のタグを付けられることが一般的になっています。
しかし、これらの機能の実装を丁寧に説明した記事はあまりないと思いました。
そこで、自分の復習も兼ねて具体例を交えながら細かく丁寧に解説するために、記事にまとめてみました。

## 実装環境
Ruby 3.1.2
Rails 6.1.6
## アソシエーション
まず、今回の設定条件は以下にします。
– トピック(Topic)にタグ(Tag)をつける
– タグは自身で入力する仕様になっている
– 1つの記事には複数のタグを付けられる
– 1つのタグも複数の記事に使用される

以上より、Topicモデルの中にタグのカラムを設けるのではなく、TopicモデルとTagモデルを分けて作成します。
また、TopicモデルとTagモデルは、多対多の関係になります。
従って、中間テーブル(Tagging)を設ける必要があります。

ER図は以下のように設定します。
![ER図.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaw

元記事を表示

【Rails】エラーメッセージや時刻表示を日本語化する。

# はじめに
デフォルトで英語表記になってしまうところが散見される。特にバリデーションをかけた時のエラーメッセージや、投稿した記事のタイムスタンプなどがよくある。
それを日本語化するため、実装した内容を記載していく。

# 環境
| No | 項目 | 内容 |
|—:|————-|————|
| 1 | OS | Mac |
| 2 | Ruby | 2.6.3 |
| 3 | rails | 6.0.4 |
# 実装
# 1. エラーメッセージを日本語化
[こちら](https://qiita.com/kents1002/items/509ea32715bb78c6d3e2)を参考にエラーメッセージの日本語化を目指す。
“`config.rb
# 以下を追記
I18n.config.available_locales = :ja
I18n.default_locale = :ja
“`
conf

元記事を表示

IPアドレスを取得するone-liners

## 概要
WSL2 で ip adder コマンドから IPアドレスを取得したくなることがる。通常は awk など使うが、他の言語だとどうやるのか気になったので試してみた。

それぞれの言語の特徴を垣間見られる点で興味深い。

### 環境

* Ubuntu 18.04 LTS

## 表示内容

ポイント
* IPv4 アドレスは `inet` の行のみにある
* `inet` と `inet6` の行があるので行を抽出する場合は区別が必要

“`console
$ ip address show dev eth0

inet xxx.xxx.xxx.xxx/24 brd xxx.xxx.xxx.255 scope global dynamic
valid_lft forever preferred_lft forever
inet6 xxxx:xxxx:xxx:xxxx:xxxx:xxxx:xxxx:xxxx/64 scope global dynamic
valid_lft 86398sec preferred_lft 14

元記事を表示

壁にぶち当たりながらDockerで環境構築をする(Rails6 + PostgreSQL)

# はじめに
久しぶりに個人開発をするにあたってDockerで環境構築をしようと思いましたが、
– 転職時のポートフォリオに開発環境で使ったときは、使えそうなコードを見つけ、コードの意味を調べて導入するも、あらためて見るとあまり理解できていない
– 業務でもすでに準備されているDockerfileなどにより環境構築し、日頃はコンテナを起動して開発を進めるだけなので理解が深まっていない

ということに気がつき、危機感を覚えました。

というわけで、今回は自分で考えながらDockerでの環境構築に取り組んでみました。
その過程を記事にすることで頭の整理をするとともに、同じような状況の人の気づきになってくれれば嬉しく思います。

ちなみに、当面の目標はRails6 + Vue3 + PostgreSQLの開発環境をDockerで構築することですが、いきなりあれもこれも手を出すことはせず、まずはRails6 + PostgreSQLに絞ることにしました。

# 目次
[1. 開発環境](#1-開発環境)
[2. 今回のゴール](#2-今回のゴール)
[3. この記事で扱わない内容](#3-この

元記事を表示

devise_token_authで[“Missing ‘confirm_success_url’ parameter.”]のエラーが出た話

はじめに

現在、rails api + react(typescript)でポートフォリオを開発しています。
こちらの記事がとてもわかりやすく参考にさせて頂いているのですが、curlコマンドでアカウント作成とログインができるかを確認する際にエラーが起きてしまいました。
英語の記事を翻訳して解決することができたのですが、同じエラーで詰まっている人もいるかもしれないのでqiitaに投稿しておこうと思いました。

https://qiita.com/kazama1209/items/caa387bb857194759dc5#%E5%8B%95%E4%BD%9C%E7%A2%BA%E8%AA%8D

“Missing ‘confirm_success_url’ parameter.”が発生

参考にしている記事の手順通りに進めると、本来は下記のcurlコマンドで記載したカラムの内容に応じてアカウントを作成とログインを行えるはずなのですが、コマンドを叩くと”Missing ‘confirm_success_url’ parameter.”のエラーが返されます。
~~~
#アカウント

元記事を表示

ruby on rails を AWS Cloud9で実施 7 css レイアウト変更の活用

https://qiita.com/TaichiEndoh/items/35294ff656499d9bbf8d

https://qiita.com/TaichiEndoh/items/9c19319df04a279403a3

https://qiita.com/TaichiEndoh/items/057d35eff8cadbd434ba

https://qiita.com/TaichiEndoh/items/522e956d569e5bbd7b8d

https://qiita.com/TaichiEndoh/items/809d7e94195265c0a201

https://qiita.com/TaichiEndoh/items/e45521cd2c96dc6edf4f

# 今回は表示スタイルの変更を実施します

環境 AWS Cloud9
environment type EC2
instance type t2.micro
platform ubuntu server 18.04 LTS

## リファクタリングの復習

リファクタリング(英:refactorin

元記事を表示

[Rails]ランキング機能、同率順位も考慮に入れ、順位ごとに色分けする

この記事は投稿機能といいね機能が出来ている前提で進めています。
gurumeと書かれてるところは、僕用なので皆さんが作りたいプロダクト用に変えてください。あと、カラムも自分用に書き換えてください。
まず、コントローラーに以下のコードを書きます。

“`
@rank_gurumes = Gurume.all.sort {|a,b| b.liked_users.count <=> a.liked_users.count}.first(3)
“`

このコードはいいね数が多い順に並べるものになっています。first(3)はいいね数が多い3つを並べるという意味です。
次に、htmlに以下のコードをコピペしてください。
“`

いいね数ランキング

<% last_like = 0 %>
<%

元記事を表示

Docker環境でbinding.pryを使用→binding.pryで処理が止まらない

# 概要
pry-byebugを使ってデバッグしようとしたところ、binding.pryで動作が止まらずデバッグできなかった。
# 目次
– [環境](#環境)
– [現状](#現状)
– [対策](#対策)
– [結果](#結果)
– [おわりに](#おわりに)

# 環境
Ruby 3.1.2
Rails 7.0.3
# 現状
このようにデバッカーの入力待ちにならず、HTMLが生成されてしまいます。

“`
my_app $ docker attach my_app_web_1
Started GET “/boards/new” for 172.18.0.1 at 2022-08-13 11:38:59 +0000
Processing by BoardsController#new as HTML
Rendering layout layouts/application.html.erb
Rendering boards/new.html.erb within layouts/application
Rendered boards/new.html.er

元記事を表示

【Rails】gem ‘rails-erd’を使用するとFailed: ActiveSupport::MessageEncryptor::InvalidMessage: ActiveSupport::MessageEncryptor::InvalidMessageが発生

# 環境
| No | 項目 | 内容 |
|—:|————-|————|
| 1 | OS | Mac |
| 2 | Ruby | 2.6.3 |
| 3 | rails | 6.0.4 |
|4|Homebrew|3.5.9
# はじめに
gem ‘rails-erd’を使用してER図を作成してもらおうと思った。そこで以下のところでつまづいたため、どう解決したかを記載していく。

# 現状
[こちら](https://qiita.com/TaichiroHasegawa/items/4195cef3865b89589dd9)を参考にgemのインストール〜実行まで進めていった。
homebrew経由でgraphvizをインストールする。
“`:ターミナル
$ brew install graphviz

Disable this behaviour by setting HOMEBREW_NO_INSTALL_C

元記事を表示

CloudWatchのログでメールアドレスをキーに検索する

「Aws::CloudWatchLogs::Errors::InvalidParameterException (Invalid filter pattern)」って出るだけで、なんかうまくいかないなーと思ったんですが、なんてことはなくて、コンソールで「**”test@sample.co.jp”**」とするように、「”」で囲むだけで出来ました。

これより難しいfilter_patternの書き方については色々情報が出てくるんですが、こういう初歩的な情報が思うように見つからず(もしくは読み解けず)結構苦労しました。

start_time、end_timeの方も微妙に詰まって、「UNIX時間の**ミリ秒**」と書いてあったのを「秒」で指定していただけでした。
1000倍すればよかったんですね。

以下、コードはrubyです。

“`
client = Aws::CloudWatchLogs::Client.new({credentials: Aws::Credentials.new(API_KEY, API_SECRET)})
resp = client.filter

元記事を表示

【Bootstrap】ヘッダーをレスポンシブに横スクロール対応

# はじめに
ウィンドウを小さくすると、ヘッダーのレイアウトがくずれてしまう。
これを解決するために、Qiitaと同じように、表示部の幅を超えた所で横スクロールできるようにする。

**完成図**
![responsive.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2684787/b243e006-57dd-7044-a9d9-4d7c90178c06.gif)

# 前提

使用環境は以下の通りである。
| No | 項目 | 内容 |
|—:|————-|————|
| 1 | OS | Mac |
| 2 | Ruby | 2.6.3 |
| 3 | rails | 6.0.4 |
4|bootstrap-sass| 3.4.1 
5|sass-rails|5.1.0
# 実装
https://csshtml.work/side-no

元記事を表示

学んだこと乱雑まとめ

# 今週学んだことまとめ

### [0..n]と[0…n]の違い
…は、最後の値を含めない
[0..5]なら0〜5
[0…5]なら0〜4

### Array.newで配列をつくる
Array.new(size , val )
入力値分の配列欲しい時に使う?
sizeで要素数、valでようの値設定
ex.
`Array.new(3,0)
=>[0,0,0]`

### seedファイルでデータを作る
db/seeds.rbに
`Model.create(key: ‘value’, key: ‘value’, …)`でデータをあらかじめ用意できる。
rails db:seedで反映。

“` ruby
Item.create(name: ‘ペン’, price: 100)
Item.create(name: ‘ペン2’, price: 200)
Item.create(name: ‘ノート1’, price: 400)
Item.create(name: ‘ノート2’, price: 600)
Item.create(name: ‘ペンケース1’, price: 8

元記事を表示

あり得ないエラー集(エラーが解決しないときには試してみよう!)

プログラミングをしていると時々、あり得ないエラー、予期していなかったエラーに遭遇することがあります。
今回は、そんなエラーを簡単にまとめてみました。調べても調べてもわからない場合は、ぜひ試してみてくださいね!

① ファイルが更新されていなかった。
このエラーが疑われるパターン
-1, ファイルを変更しているのにもかかわらず、git statusを行っても全てup-to-dateと出てくる
-2, Gemfileの場合、bundle installなどを行ってもGemfile.lockに変更が保存されない、gem      listを行ってもインストールしたものが出てこない。

解決方法は簡単。一度タブを閉じて改めて開くだけ。
改めて開いたときに、変更したはずのものが記載されていなければ、エラーの原因はこれで確定です。

②cloud9が原因。

元記事を表示

json-jwt gem の JWK Set キャッシュ戦略

## JWK Set 取得タイミング

* OIDC ID Tokenの署名検証時
* その他 JWT 署名検証時
* e.g.,) Apple の Server-to-server Notification

## JWK Set 取得頻度とキャッシング

JWK Set には複数の鍵が含まれており、固定の URL から取得可能になっていることが多い。
OpenID Connect では `/.well-known/openid-configuration` にアクセスすることで JWK Set が公開されている URL (`jwks_uri`) を取得できる。

このエンドポイントから返される鍵は、一定期間ごとに新しいものに差し替えられたりするが、`jwks_uri` は固定であるため署名検証者は常にこのエンドポイントにアクセスすれば署名検証に必要な鍵が得られるようになっている。

しかし、ID Token や Server-to-server Notification が届くたびにこのエンドポイントにアクセスするのは負荷が高いので、一定期間この JWK Set をキャッシュ

元記事を表示

【Rails】画像投稿機能の実装【Active-Storage】【Heroku】【S3】

# はじめに
Active Storageを使用して、画像投稿機能を実装する。
本番環境では、AWSが提供しているクラウドストレージサービス S3(Simple Storage Service)に画像データを保存し、Heroku環境で実行できるようにしたい。

# 前提

| No | 項目 | 内容 |
|—:|————-|————|
| 1 | OS | Mac |
| 2 | Ruby | 2.6.3 |
| 3 | rails | 6.0.4 |

# Active Storageについて
**これを使うと、ファイルのアップロードができるようになる。**
Railsガイド: [Active Storage の概要](https://railsguides.jp/active_storage_overview.html)から引用する。

>Active Storageは、Amazon S3、Google Cloud S

元記事を表示

【Rails】エラーメッセージを表示させたい!

# はじめに
文章を投稿するときに、空文字にしてエラーをバリデーションで検知、それをエラーメッセージとして表示させたい。

# 前提
| No | 項目 | 内容 |
|—:|————-|————|
| 1 | OS | Mac |
| 2 | Ruby | 2.6.3 |
| 3 | rails | 6.0.4 |

# 実装
# 1. バリデーションを実装
まず最初に、投稿内容にvalidationをかける。項目は空欄と5000文字以上。
“`言語名:app/models/post.rb
validates :content, presence: true, length: { maximum: 5000 }
“`

# 2. コントローラーの設定
postコントローラーのnewアクションに、**current_userが投稿したオブジェクト(@post)** を渡す。これがエラーメッセージの情報を格納するための箱とな

元記事を表示

Railsの環境構築

# はじめに

Railsのインストール方法を下記のぺージをお手本にして行いました。
わからないことばかりなので、間違っていた際や改善点がありましたらアドバイスをいただけると幸いです。

https://serip39.hatenablog.com/entry/2020/12/17/233500

## 要件定義

・EC2 (t2.micro) ←無料で使用できます。
・Amazon Linux2
・Ruby Ver 2.6.3
・MySQL Ver 5.7.32
・Node.js Ver 14.15.2
・Nginx Ver 1.18.0
・Rails Ver ~~5.2.3~~ 5.2.8.1

# 更新処理を実行

“`
$ sudo yum update
“`

gitのインストール
“`C++
$ sudo yum install git
$ git –version
git version 2.37.1
“`
## rbenv インストール
ディレクトリを作成して、そのパスを環境変数 RBENV_ROOT に設定します。
“`C++
$ sudo mk

元記事を表示

【sampleメソッド】collection_selectで取得するデータをサンプルデータに取り入れる

# はじめに
seedsにform.collection_selectで取得するデータを保存する方法を紹介します。

#### サンプルコードについて
ユーザーの新規登録には、name、email、password、prefecture_idが必要です。
prefecture_idは、Prefectureテーブル(47都道府県)からcollection_selectでデータを取得します。

### newアクション

“`rb:/app/controllers/users_controller.rb
def new
@prefectures = Prefecture.all
@user = User.new
end
“`

Prefectureテーブルから全レコード取得

### 作成フォーム

“`rb:/app/views/users/new.html.haml
%h1 Sign up
.row
= form_with(model: @user, local: true) do |f|
= render ‘shared/error_messag

元記事を表示

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

## 今日は投稿一覧ページを作成してみた!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2632394/01209a0d-70fa-f246-dc78-eb94f56d3161.png)

## 今日のアウトプット

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2632394/ae1876d3-686f-1272-f6a0-83367654ee1d.png)

## 今日の学び
### データベースと投稿一覧ページ
* データベースとはデータを保存しておく場所のこと
* 投稿一覧ページではデータベースから投稿を取り出し1つずつ表示する
* 一覧ページの作成にはindexというアクション名を使用することが一般的

### コントローラの作成
* 新しくコントローラを作成する際は`rails generate controller コントローラ名 アクション名`というコマンドで作成を実

元記事を表示

OTHERカテゴリの最新記事