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

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

【Rails】カラム追加したいんだけど

# カラムを追加するには
## 先に結論
カラムを追加するには以下のコマンドを実行します。
“`bash
$ rails generate migration Addカラム名Toクラス名 カラム名:データ型
$ rails db:migrate
“`

## 例
クラス名**PostImages**に、**user_id**というカラム(データ型は**integer**)を作るのを忘れていたので、追加したい。
“`bash
$ rails generate migration AddUser_idToPostImages user_id:integer
“`
このコマンドを実行すると、db/migrateの下に、

**(作成日時)_add_user_id_to_post_images.rb**

というファイルができます。`(作成日時)_add_{カラム名}_{クラス名}`

“`bash
$ rails db:migrate
“`
最後にこのコマンドを実行して、カラムを追加できました。

元記事を表示

Railsで複数のレコードを一つの塊として管理してみた

# はじめに
フロントにNuxt.js、バックエンドにRailsを使用してサービスを作っているのですが、データ量が多くなり一個ずつデータを送るのに時間がかかってしまったので配列でまとめてRailsに送って処理をしてもらおうと思ったのですが躓いたので記事にします。
# 目次

1. [JSから送るデータ](#Chapter1)
1. [Railsでの実際の処理](#Chapter2)
1. [参考文献](#reference)



# JSから送るデータ
今回のケースではJSから60または250個のデータをバックエンド側に送る必要がありました。
実際のデータは以下のような感じです。
“`js
[
  {“id”:7,”name”:””,”color”:”#2196F3″,”start”:1649115900000,”end”:1649116800000,”timed”:true,”long_time”:true,”post_id”:null,”long_term_id

元記事を表示

webサーバーにNginxを組み入れる【Docker環境】

# はじめに

以前に、railsとvueのアプリ構成でdocker環境を構築した。

https://qiita.com/Shuhei_Nakada/items/148ce4c7c5bd4d11bcf0

しかし、Railsの開発用サーバーをpuma単独で動かしていたので、
役割分担して構成を変更した。

* webサーバー: nginx  
* applicationサーバー: puma

作業内容を備忘録として残す。

# アプリ構成イメージ

![スクリーンショット 2022-04-05 5.58.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1380401/2fbdff58-d8e8-5900-0018-372fc4b56eb8.png)

# 使用技術

* Rails: 6.0.4.4
* nginx: 1.21.6

# 前提

* dockerでrailsの開発環境を構築済み

# nginxの初期設定を理解する

実装前にnginxのデフォルト設定がどう動作し

元記事を表示

【Rails】Rails7.0でバリデーションのエラーメッセージが表示されない時の解決法

## はじめに
 本記事は、プログラミング初学者が学習を進めていて疑問に思った点について調べた結果を備忘録も兼ねてまとめたものです。
 そのため、記事の内容に誤りが含まれている可能性があります。ご容赦ください。
 間違いを見つけた方は、お手数ですが、ご指摘いただけますと幸いです。

## Rails7.0でバリデーションのエラーメッセージが表示されない時の解決法
### 状況
– Ruby 3.1.1
– Rails 7.0.2.3

上記の環境でフォームにバリデーションを設定した際にエラーメッセージが表示されませんでした。

![スクリーンショット 2022-04-05 3.38.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342443/9b44385d-8128-bad3-945c-2def0209ff33.png)

以下のような記述をしていました。

“`enquetes_controller.rb
:
:

def create
@enquete = Enquete.n

元記事を表示

Dockerとは 開発環境やファイルについて解説

# はじめに
Dockerの開発環境とはどのようなものか、Dockerでの環境構築の際に作成するファイルについてまとめました。
*この記事は環境構築のやり方を解説した記事ではないため、この記事を参考にして環境構築した場合の動作の保証は一切しません。
# Dockerの開発環境
Dockerのソフトウェアをインストールすると、Moby LinuxというLinuxの軽量な仮想マシンが裏で作成されます。
そして、DockerでRubyの実行環境を立ち上げると、Moby Linux上にコンテナという仮想環境が作成されます(RubyのコンテナはDockser HubというサイトにあるファイルをDLして作成される)。
コンテナのもとになるファイルをまとめたものをイメージと呼びます。Rubyのイメージには、RubyそのもののプログラムやRubyに関するライブラリが含まれています。また、Linuxとして動作するために最低限必要なファイルも含まれています。このコンテナにPC上のRails用のフォルダをマウントして開発を行う。これによって動作確認が行えるわけです。
![image.png](https:/

元記事を表示

icu4cがアップデートされ、rbenvが起動しなくなった時の対処

## エラー内容
ある時、何気なく`rails s`として、railsサーバーを起動した際に以下のようなエラーが発生しました。

“`
Library not loaded: /opt/homebrew/opt/icu4c/lib/libicudata.69.dylib
“`

## 原因
どうやら`icu4c`のバージョンがbrewをいじっている間に勝手に上がってしまい、エラーになったようです。
実際、rbenvが見ているバージョンが`69`なのに対し、`70`となっていました。

“`
$ brew info icu4c
icu4c: stable 70.1 (bottled) [keg-only]
“`

実際`/opt/homebrew/opt/icu4c/lib`の中身を見てみると、

“`
$ ls /opt/homebrew/opt/icu4c/lib
libicui18n.70.dylib … ←バージョンが70になっている。
“`

## 対処
参考文献の[icu4c がバージョンアップされたせいでphpが動作しなくなったときの解決策](https:

元記事を表示

アイコンモジュールエラーを解決した流れ。Uncaught Error: Cannot find module ‘@mdi/font/css/materialdesignicons.css’

#言語
HTML/CSS/JavaScript
Ruby 2.6.3

#フレームワーク
Vue 2.6.12
Vuetify
Rails 6.1.3.2

#タイトルにあるエラーがブラウザコンソールで表示されました。

私はカレンダーアプリを作っていて、Vuetifyのカレンダー関連が表示されなくりました。

エラーを訳してみるとVuetifyで使っているアイコン(Material Design Icons)のモジュールが読み込めていない模様。

#私が試した解決策(あくまでも一例として)

私の場合yarnを使用。再度インストールをしました。ターミナルでインストールコマンドを実行。

~~~~~
$ yarn add @mdi/font
~~~~~

Railsサーバーを起動すると表示が元通りになっていました。

元記事を表示

rails form_with とは

# 結論

ユーザーがデータベースに情報を送信するための記入欄を

“`html.erb

<%= form_with model: @モデルクラスのインスタンス, url: "/hoge", method: :post, local:true do |f|%>
# 記入欄をここに設けるよ
#ユーザーが入力した情報が、すでにテーブルにないか確認し、存在していなければcreateアクション、存在していればupdateアクションに自動でツーティングする
“`

form:形、方式、記入用紙
with:〜と共に

# ちなみに

`form_with`はrails5.1から追加されたヘルパーメソッド。
ではそれ以前に使われていた似たような機能のヘルパーメソッドは何か。

# form_with 誕生以前に使われていたヘルパーメソッドとは
`form_tag`:ユーザーが入力したデータを保存する必要がない時
`form_for`:データを保存する必要がある時

この書き換えが面倒だということで`form_with`が生まれたらしい。

多分この内容は間違っていると思います。いつか修正します

元記事を表示

RESTとは

## RESTとは

– RESTとはアプリを作る時の考え方のこと!
「ネットワーク上に置かれたデータ(リソース)に対して表示、作成、更新、削除などの操作を行う」という考え方のこと!

“`
Representational : 代表的なもの
State : ある状態
Transfer : 転送、伝達
“`

この考え方に基づいて作られたアプリをRESTフルという。
このRESTフルなアプリ作ることで、結果的に何度も同じことを書かずに済み、開発や保守がより簡単になる

## QどうやってRESTフルなアプリなアプリを作るのか。

ルーティング(routing)

ルーティング(routing)とはURLとアクションを結びつけるもの

URL
URLとはインターネット上に存在するデータを場所を示すもの。身の回りのもので例えると住所と似ている。
“`
Uniform :ユニフォーム、画一的、同じ
Resource :資源、資料、仕様
Locator :位置情報、所在地
“`

元記事を表示

久々にアプリをローカルサーバーで立ち上げようとしたらPG::ConnectionBad (FATAL: role “postgres” does not exist)

久々にアプリをローカルサーバーで立ち上げようとしたら、`PG::ConnectionBad (FATAL: role “postgres” does not exist):`になりました。

postgresなんてroleはないぞと。
database.yml(下記参照)に定義しているDBのusernameを見て、そんなのがpostgresにないぞと言っているのかな?

“`yml:config/database.yml
default: &default
adapter: postgresql
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
timeout: 5000
encoding: unicode
username: postgres
password:
host: localhost
“`

postgresのユーザー(ロール?)を見てみる。

“`
$ psql postgres
psql (13.6)
Type “help” for help.

postgres=# \du

元記事を表示

Railsのコーディング規約を作る際に参考にしたもの

# 初めに
Rails/Rubyのコーディング規約やコーディングルールを整備した時に参考にしたもの、使ったものなどをまとめました。

# コーディング規約
独自の規約を作るよりは、一般的なコーディング規約を参考にしましょう。
– Ruby
– [Rubyアソシエーション: コーディング規約](https://www.ruby.or.jp/ja/tech/development/ruby/050_coding_rule.html)
– Rails
– [The Rails Style Guide](https://github.com/rubocop/rails-style-guide/blob/master/README.adoc) / [日本語訳](https://github.com/satour/rails-style-guide/blob/master/README-jaJA.md)
– Rspec
– [Better Specs. Testing Guidelines for Developers.](https://www.betterspecs.o

元記事を表示

Railsの認証ソリューション deviseを使おう

# 初めに
ちょっと前の記事でOpenID Connectを書いたは良いものの、そもそもdevise導入しなきゃな…
ということでdeviseの導入をやっていきます。ただ、OpenID Connectやるだけだったらdevise入れなくても大丈夫です。

# deviseとは
Railsで最もメジャーな認証系のgemです。ログイン機能やパスワード変更など簡単に行えます。

– [heartcombo/devise: Flexible authentication solution for Rails with Warden.](https://github.com/heartcombo/devise)

# 環境
– OS: Windows11 Pro 64bit
– Version: 21H2
– OS build: 22000.493
– WSL2: Ubuntu 20.04.4 LTS
– Ruby: 3.1.1p18
– Rails: 7.0.2.2

# deviseの導入
公式の[Getting started](https://gith

元記事を表示

RailsでOpenID Connectするときの前提知識

# 初めに
既存のRailsでシングルサインオン(以下SSO)を実装したいときによく出てくるのが、OpenID Connect。入門解説やフロー解説はありますが、実際にRailsで実装するときはどうすれば良いのかわからない…ということで調べてまとめてみました。実装前の前提知識ということで、ざっくり説明します。

## 参考

– [第一回 認証基盤のこれからを支えるOpenID Connect | オブジェクトの広場](https://www.ogis-ri.co.jp/otc/hiroba/technical/openid-connect/chap1.html)

# OpenID Connectとは?
分かりやすい解説がすでに幾つかあるので、そちらに任せます。ここの例はすでに存在するサードパーティ(Yahoo)のアカウントを使って自社サービス(Gree)のアカウントを紐づけるSSOの概要です。