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

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

【もうやらかさない】開発DBのデータを全部消しちゃったお話(改善策もあるよ)

## はじめに
どうも、もきおです。未経験から自社開発企業に入社して半年以上経ちましたがつい一週間前くらいに盛大にやらかしたのでその際のお話をしていきたいと思います。

Slackでの会話
先輩「あれ?開発DBのデータ消えた・・・?」
メンバー「僕もDB見れなくなりました、、」
先輩「全部消えてるよね、、」

この時ハンパない冷や汗を書いてたと思います。心当たりがめちゃくちゃあったからです。
そう、開発DBのおそらく何千万というデータというデータを消してしまったのは紛れもなく自分でした。

## なぜデータを消してしまったのか?
毎回テストを走らせるためにテスト用DBを作成しているのですが、テスト途中で止まってしまいそのまま進まないという事象が起きていました。
“`ruby:
rails db:create Rails_ENV=test
rails db:migrate Rails_ENV=test
“`
そのためmigrateが上手くできていないと感じ、一旦テストDBをリセットしようとしたら“test“を指定せず以下のコマンドを打ってしまい開発DBのデータを全てリセットしてし

元記事を表示

The resource ファイル名 was preloaded using link preload but not used within a few seconds from the window’s load event.

## はじめに
RubyonRailsでアプリを開発していた時にjsを用いて写真プレビュー機能の作成時に起こったエラーです。
今回は2つの解決法を使って解説しましたので自分に合った解決法が見つかれば幸いです。

### 使用する環境
– MacOS(M1)
– Rails 6.1.4
– Ruby 2.6.3
– yarn 1.22.17
– Homebrew 3.5.0

### エラー文
「The resource ファイル名 was preloaded using link preload but not used within a few seconds from the window’s load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally.」

## 解決法1:特定のページでのフルリロードを実行する

Before
“`application.html.erb
<%= javascript_pack_tag "application"

元記事を表示

undefined method `permit’ for “1”:String に手こずった。

# はじめに
本記事はプログラミング初心者が、railsの学習を進めながら、躓いた部分、解決した箇所、またそれらの解決方法を備忘録も兼ねてまとめているものです。
最初はprogate。そのあと、「現場で使える RubyonRails5 速習実践ガイド」(通称)「現場Rails」を参考に進めていきました。
そのため、記事の内容には誤りがある可能性があることをご理解ください。
誤りがあればお手数ですが、ご指摘いただければと思います。よろしくお願いします。

# 環境
Ruby 3.1.2
Rails 7.0.3.1

“`ruby:new.html.slim
– if @user.errors.present?
ul#error_explanation
– @user.errors.full_messages.each do |message|
li = message
dl
= form_with model: @user, url: ‘/users’, local: true do |f|
.form-group
f.label 名前

元記事を表示

初めてのウェブサービスに縦書きエディタを選んだ理由(2)

# 1.はじめに
 55歳を過ぎてWebの勉強を始め、[縦書きエディタ](https://www.sakubun.tokyo)を開発した[前回の記事](https://qiita.com/tategaki3/items/14266860629892376d29)が、思いのほかよく読まれたので、勝手に続編を上げさせてもらいます。コーディングも開発も技術系記事の執筆もなにもかも手探り。おかしい面も多々あることかと思いますが、遠慮なくご指摘ください。

# 2.縦書きにこだわる理由
 さて前回、縦書きエディタを開発した理由にGIGAスクールが関係していると書きました。児童・生徒が学校で使うChromebookのGoogle系ツールに縦書き機能がなく、国語の先生が困っているという話です。

 Googleは欧米の企業なので、Googleドキュメントなどが横書きなのは自然なことです。問題は日本語が縦書きも横書きもOKなことです。日本で出版される小説や文庫本、新書などは縦書きが主流ですが、技術系の雑誌や本はほとんどが横書きです。縦書きの文化を担ってきた出版、雑誌、新聞などのマスコミ業界はいずれも斜

元記事を表示

完全未経験が2ヶ月半で一からWebアプリを作ったお話

# はじめに
ポートフォリオとして作成したWebアプリの紹介記事です。
アプリを作成する際に自分が何を考えて作成したのか、その過程をご紹介します。
苦労したことや楽しかったことなどもまとめましたので、是非最後まで読んでいただければと思います!

# 簡単に自己紹介
* 商社の営業マンとして働く29歳
* ポートフォリオ作成前は、Progateで基礎学習、Railsチュートリアルを一通りした程度

# アプリの概要と開発背景
### アプリ概要
* 自分の欲しいものを管理して支出予測するアプリです。
* サービス名は『Wantest』にしました。
* 欲しいものを登録して一覧化し、その合計金額を表示させます。

### 開発背景
* アプリの制作理由
みなさんは欲しいものを買うか迷ったり、欲しいものを買ってみて後悔した経験はありませんか?
私自身、本を買っても読まなかったり、ゲームを買っても結局やらなかったりと、買って後悔した経験が多々あります笑。
このアプリはそんな経験を少しでも減らせればという思いで開発に至りました。

* 誰のどんな課題を解決するか
**欲しいものを買うか迷っている

元記事を表示

[Rails]HerokuでRedis+Sidekiqを使用したActive Jobを実行させる

### 前提
記事を書いている私は現役のエンジニアではなくエンジニアを目指して学習中の者です。
よって、気をつけてはいますが記述内容には誤った内容が含まれている危険性があります。
その為この記事は参考程度に読んで頂き詳しい内容は公式の記述を参考にすることをおすすめします。

### この記事で実装すること
Redis+Sidekiqを使ってactive jobを実装してそれをHeroku環境で実装する手順を説明します。
ローカル環境では既に実装している前提で進めるのでローカルでの実装方法が気になる方は以下の記事を参考にして下さい。

[Sidekiqってどんなキック?](https://dev.icare.jpn.com/dev_cat/sidekiq/)
[【Rails7】Redis+Sidekiq+Active Jobで指定した日時に非同期処理を行う](https://zenn.dev/yoiyoicho/articles/03863702867eb0)

### 使用技術
Ruby 3.1.2
Rails 6.1.6
Redis
sidekiq

### 実装手順
### 1,

元記事を表示

Userモデル、usersテーブル作成とバリデーション【10日目】

# 概要
– Userモデルを作成
– usersテーブルを作成
– TDDでバリデーション

# 1. モデルとマイグレーションファイルの作成
– `rails g model user`でモデルを作成
– 自動的にマイグレーションファイルが生成される
# 2.マイグレーションファイルの編集
– マイグレーションファイルの中身を編集
# 2. テーブル作成
– `rails db:create`でusersテーブルを作成
# 3. モデルの編集
– rspecでテストを書いてfailedを確認
– モデルにvalidation書く
– テストが通るか確認

# その他
– bcryptをgemでインストール
– has_secure_passwordでパスワードをハッシュ化
– パスワードのカラム名はpassword_digestへ
– 一意性(uniqueness)のバリデーションはDBレベルでも行う

# 参考
– [Ruby on Rails チュートリアル](https://railstutorial.jp/chapters/modeling_users?version=6.

元記事を表示

議事録

# 研修が終わって
一ヶ月半ほどの研修を終えて早々、プロダクトの機能の追加を頼まれた僕は意気揚々とコーディングに取り掛かろうとしたが、まず最初に立ちはだかった問題が多かった。

## 足りなかった知識
・linux
・TCP/IP(ネットワーク)
・git

### linux
まず最初に環境構築をする上でコマンドラインで色々設定する上で指示をされるのだが、ssh接続のコマンドの細かいオプションやIPアドレスを調べるコマンドを知らずにため息を疲れる場面が多々あった。また権限に関してもとても重要であるのにも関わらずうまく指示通りのコマンドを打てなかった。

### TCP/IP
基本的に指示をされる上で多くのカタカナが出てくるがほとんど理解できなかった。おそらくTCP/IPの知識が必要である。どのIPアドレスがどういうものなのかという理解がなかった。

### git
gitに関しては共同開発をする上での最低限の知識コマンドを必要である。

## rails
基本的なモデル、データベース操作の練習が足りない。どのようにコードを書いたらどのようなデータが取り出せるのかは、コードをひたすら

元記事を表示

Rails7をちょっと試す(turbo_frame_tag でページの表示を速くする編)

## はじめに

Rails 7.0.0 には、 [Turbo](https://github.com/hotwired/turbo-rails) が組み込まれています。
今回はその中で、 `turbo_frame_tag` を試してみたいと思います。
`turbo_frame_tag` を使ってページの表示速度を改善してみます。

以下のバージョンで確認しました。

– Ruby 3.0.2
– Rails 7.0.3.1

## 前準備をする

今回は前準備に少し手間がかかります。

## Rails プロジェクトを作る

新しくRailsプロジェクトを作ります。このとき `
(データベースオプションを指定しているのに深い意味はありません。)

“`shell
mkdir rails_sandbox
cd rails_sandbox
rails new . –database=postgresql
“`

## model を2つ作る

`User` と `Book` の2つの model を作ります。

“`shell
bin/rails g model User nam

元記事を表示

Gitコマンドでrbenv version ruby-2.7.4′ is not installedtというエラーが出る

# はじめに

この記事は2022年4月にまとめていた「細かいつまずいたことをメモしておく(4月編)をそれぞれ投稿した内容になります
解決方法が最新でない可能性もありますのでご了承ください

# 問題

Gitコマンドを叩くと以下のエラーが出るようになってしまった

“`
rbenv version ruby-2.7.4′ is not installed
“`

またブランチを変更してもでてしまう

# 解決方法

これはovercommitをインストールしたことに起因していた
overcommitは.gitのホックに直接設定を書き込むためにブランチを変更してもその設定は引き継がれている
そのためブランチを変更して`overcommitがはいっていない状態`にしても動いてしまうのでエラーが発生する

overcommitを追加したブランチを早くマージする必要がありました

元記事を表示

Railsのコントローラ

### コントローラの作成コマンド
今回はBooksコントローラを作成します
“`ruby
rails g controller books
Running via Spring preloader in process 51297
create app/controllers/books_controller.rb
invoke erb
create app/views/books
invoke test_unit
create test/controllers/books_controller_test.rb
invoke helper
create app/helpers/books_helper.rb
invoke test_unit
invoke assets
invoke scss
create app/assets/stylesheets/books.scss
“`

このように表示させる

元記事を表示

RailsのbrakemanでSexpTypeErrorがでる

# はじめに

この記事は2022年2月にまとめていた「細かいつまずいたことをメモしておく(2月編)をそれぞれ投稿した内容になります
解決方法が最新でない可能性もありますのでご了承ください

# 問題

Brakeman実行すると以下のエラーが表示された

“`
/myapp $ brakeman
Loading scanner…
Processing application in /myapp
Processing gems…
[Notice] Detected Rails 6 application
Processing configuration…
[Notice] Error while processing /myapp/config/application.rb
[Notice] Escaping HTML by default
Parsing files…
Processing initializers…
/usr/local/bundle/gems/brakeman-4.7.2/lib/ruby_parser/bm_sexp_processor.r

元記事を表示

RspecでMissing host to link to!とエラーがでる

# はじめに

この記事は2022年2月にまとめていた「細かいつまずいたことをメモしておく(2月編)をそれぞれ投稿した内容になります
解決方法が最新でない可能性もありますのでご了承ください

# 問題

Rspecを実行したところ`Missing host to link to!`というエラーが発生した

# 解決方法

test環境のデフォルトURLを追加すれば解決する

“`rb:/config/environment/test.rb
config.action_mailer.default_url_options = { host: ‘localhost:3000’ }
“`

# 参考

https://qiita.com/daik/items/41a9bc8dec5ccec37f40

元記事を表示

Rspecでuninitialized constant Rack::MiniProfileがでて実行できない

# はじめに

この記事は2022年2月にまとめていた「細かいつまずいたことをメモしておく(2月編)をそれぞれ投稿した内容になります
解決方法が最新でない可能性もありますのでご了承ください

# 問題

Rspecを実行したところ以下のエラーが発生した

“`
Failure/Error: require_relative ‘../config/environment’

NameError:
uninitialized constant Rack::MiniProfiler
Did you mean? MiniMime
“`

# 解決方法

`Gemfile`の`rack-mini-profile`に`require: false`をつけて、`/conifg/environment/rack-profile.rb`を編集する

“`Gemfile:Gemfile
gem ‘rack-mini-profiler’, ‘~> 2.0’, require: false
“`

“`rb:/config/environment/rack-profile.rb
if de

元記事を表示

Railsのdevice_token_authでパスワード再設定で参考にした記事

# はじめに

この記事は2022年2月にまとめていた「細かいつまずいたことをメモしておく(2月編)をそれぞれ投稿した内容になります
解決方法が最新でない可能性もありますのでご了承ください

# 参考

https://footlog-blog.net/posts/20220103-the-event-of-no-redirection-by-resetting-the-password-of-devise_token_auth/

元記事を表示

React + Rails + AWS Fargate の構成を実現したい – 00 全体概要編

## 概要

現在正社員としてバックエンド + インフラをメインにWeb系エンジニアをしている。
技術力の向上を目的に個人開発を行いたいと常日頃考えているが、現時点で開発したいアプリケーションがない状況である。
このまま考えてるだけでは時間がもったいないため、まずはモダンかつ定番なWebサービス構成を作ることにした。
これにより、いざ個人開発でサービスを作りたいと思った時にアプリケーション開発に注力できるようにする。

## 自分のスキル

– 実プロジェクトではJavaScriptをメインで使用している
– TypeScriptは使っていない
– Reactはある程度読むことはできるがガリガリ書いていない

– AWSの設計・構築をメインで担当している
– ECSなどのコンテナサービスは使っていない
– CDKによるインフラコード化は経験あり
– CI/CDに関して一定の知見はある

## やりたいこと

以下技術も用いた構成を実現し、いざ個人開発でサービスを作りたいと考えた時にアプリケーション開発に注力可能とする

– 共通
– Docker

元記事を表示

【RSpec】Railsのモデルスペックでバリデーションのテストは書くべきか否か?

## はじめに:単純なバリデーションならテストコードは不要(という私見)
Railsでモデルスペックを書くとき、バリデーションのテストを書く人をよく見かけます。
たとえば以下のようなイメージです。

“`ruby
class User < ApplicationRecord validates :name, presence: true end ``` ```ruby RSpec.describe User, type: :model do # こういうテストは書く?書かない?? describe 'validation' do example 'nameは必須' do user = User.new(name: '') expect(user).to be_invalid user.name = 'Alice' expect(user).to be_valid end end end ``` 決して、バリデーションのテストを書くことが悪いことだとは言いませんが、個人的には単純なバリデーションで

元記事を表示

React + Rails + AWS Fargate の構成を実現したい – 01 バックエンド環境構築編(Docker + Rails)

# 概要

https://qiita.com/memomaruRey/items/746f9cff0ceefe8b6157

# 本記事のゴール
以下を参考にDocker + Railsの環境構築を行う。

https://zenn.dev/hibriiiiidge/books/49ee4063b10cec1df1a2/viewer/dc751838fa3715f814dd

以下つまづいた点をメモする。

# つまづいた点
## 1. Dockerfileの修正

参考のDockerfileだとエラーが発生したので、修正

“`diff
FROM ruby:2.6.6

ENV LANG C.UTF-8
ENV TZ Asia/Tokyo

RUN mkdir /app
WORKDIR /app

ADD Gemfile /app/Gemfile
– RUN apt-get update -qq && \
– apt-get install -y build-essential \
– libpq-dev \
– sudo \
– gem install bundler:2.0.

元記事を表示

N+1問題のイメージ画像

![スクリーンショット 2022-08-21 10.35.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1667538/8af891e4-c146-6488-7379-531b670a4e49.png)

N+1問題の説明です。1:Nというのは1ユーザーに対してN個の投稿データが存在することをさします。

![スクリーンショット 2022-08-21 10.25.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1667538/61c96efb-1d08-f07d-a868-f12d3e294db7.png)

![スクリーンショット 2022-08-21 10.25.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1667538/b70935c0-1141-c2ad-b83e-2a99edf9eb48.png)

![スクリ

元記事を表示

【Railsチュートリアル】リスト10.29のテストをより詳細に書いてみる

# 目的
Railsチュートリアル10.2.3章では「フレンドリーフォワーディング」について学んでいきます。
https://railstutorial.jp/chapters/updating_and_deleting_users?version=6.0#sec-friendly_forwarding
ただこの章、初学者にとって理解しにくい箇所だと思ったので自分のためにもまとめておきます。
最終的にはリスト10.29のテストをより詳細にし、ふりがなを振っていきます。

# 前提
リスト10.33まで進め、リスト10.29のテストコードがGREENになる状態にしておいてください。

# 解説
## そもそもこのテストで何をしようとしているのか?

リスト10.29にふりがなを振っていきます。

“`ruby:test/integration/users_edit_test.rb
require ‘test_helper’

class UsersEditTest < ActionDispatch::IntegrationTest # @userにfixturesで定義したmic

元記事を表示

OTHERカテゴリの最新記事