- 1. 【Rails】カラム追加したいんだけど
- 2. Railsで複数のレコードを一つの塊として管理してみた
- 3. webサーバーにNginxを組み入れる【Docker環境】
- 4. 【Rails】Rails7.0でバリデーションのエラーメッセージが表示されない時の解決法
- 5. Dockerとは 開発環境やファイルについて解説
- 6. icu4cがアップデートされ、rbenvが起動しなくなった時の対処
- 7. アイコンモジュールエラーを解決した流れ。Uncaught Error: Cannot find module ‘@mdi/font/css/materialdesignicons.css’
- 8. rails form_with とは
- 9. RESTとは
- 10. 久々にアプリをローカルサーバーで立ち上げようとしたらPG::ConnectionBad (FATAL: role “postgres” does not exist)
- 11. Railsのコーディング規約を作る際に参考にしたもの
- 12. Railsの認証ソリューション deviseを使おう
- 13. RailsでOpenID Connectするときの前提知識
- 14. rails app 取得したデータを並び替えるには orderメソッド
- 15. Sidekiq・Sidekiq-Cronの導入
- 16. Nuxt.js、Auth0でログイン画面作成
- 17. AmazonSNSを使ったpush通知の実装について
- 18. 【selenium】session not created: This version of ChromeDriver only supports Chrome version XXX
- 19. railsがアプリを新規作成できないエラーを治す方法
- 20. migrateのステータス確認
【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作業内容を備忘録として残す。
# アプリ構成イメージ

# 使用技術
* 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上記の環境でフォームにバリデーションを設定した際にエラーメッセージが表示されませんでした。

以下のような記述をしていました。
“`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用のフォルダをマウントして開発を行う。これによって動作確認が行えるわけです。
 [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の概要です。
rails app 取得したデータを並び替えるには orderメソッド
# 結論
orderメソッドを使う。
取得したデータを並び替えるメソッド。“`
モデル名.order(並び替えたいカラム名:)
“`## 具体例
モデル名:userの時
“`app/controller/モデル名_controller.rb
class UsersController < ApplicationController def @users = User.order(:id) end # @usersに格納している、右の内容を # idの順番で並べる。 end ``` 一旦、以上です。
Sidekiq・Sidekiq-Cronの導入
Sidekiq・Sidekiq-Cronを導入して定期実行のバッチを管理する機構を作った記事を書きます!
## 概要
定期実行バッチを管理するためにsidekiq、sidekiq cronを導入
https://github.com/mperham/sidekiq
https://github.com/ondrejbartas/sidekiq-cron## Sidekiqの前提をまとめておく

RailsとSidekiqはRedis(同じエンドポイント)に対してJobをenqueue/dequeueするため、双方からアクセスする構成です。
– Active Job は Rails におけるバックグラウンドジョブを動かすための共通インタフェース
– RailsのActive Jobで提供されるのはジョブをメモリに保持するインプロセス
Nuxt.js、Auth0でログイン画面作成
自分が参加しているネイティブアプリ開発のプロジェクトでは、webの管理画面をNuxt.jsを使い、SPAで作成しています。アプリで使っているAPIのロジックなどをそのまま使いまわせる部分も多くあり、割とスムーズに作れています。
アプリ側の認証にAuth0を使っているので、管理画面のログイン機能についてもAuth0で簡易的に作ってしまおうということで、その内容で今回記事を書きました。
ログインは基本はemailとパスワードの簡易なもので、管理者はみんなgoogleアカウントを持っているので、googleログインも一番簡易にできるようにしようと言うことでgoogleログインのみSNS認証を入れました。(チェックを入れるだけでサクッと入れることができました。)
一番簡易なやり方を記事にしているので、実際の運用している構成とは異なりますが、最低限のログイン機能はこの記事を見ればできると思います。
## バージョン情報
– node v14.13.1
– yarn v1.22.10
– nuxt v2.15.7
– Vue 3 Composition API## Auth M
AmazonSNSを使ったpush通知の実装について
iOSアプリ開発で、AmazonSNSを使ってpush通知を実装したことについて書きます。
バックエンドはRailsで、フロントはSwiftです。
主に、バックエンドでpush通知を送付する機構を構築し、アプリ側ではそれを受け取ることだけをやってもらうような構成で実装したので、主にバックエンド側でのお話になります。
## push通知とは?
言葉の定義(前提)を確認しておいた方がいいので、あえて書きます。
push通知を設計していて、自分が一番よく混乱したのが、push通知とお知らせ通知の概念を混同していたことでした。基本的にpush通知はアプリのフォアグラウンドで受け取るため、push通知で来たメッセージを見た後は、その通知の内容の履歴を永続化しておくことはできません。
アプリ側のキャッシュ領域のようなところで持たせて保存しておく方法もあるようですが、アプリを再インストールすると、どっちみち消えてしまうため通知の履歴を永続化したい場合はあまり意味はないようです。
AWSにも問い合わせたのですが、AmazonSNSでは、push通知の内容を履歴として保持しておいて、例え
【selenium】session not created: This version of ChromeDriver only supports Chrome version XXX
# 1. 環境
“`Ruby:terminal
$ ruby -v
ruby 2.6.9p207 (2021-11-24 revision 67954) [x86_64-darwin19]
$ rails -v
Rails 5.2.7
“`
“`Ruby:Gemfile
gem ‘rspec-rails’, ‘~> 3.7’
gem ‘factory_bot_rails’, ‘~> 4.11’
“`
– System Specを実行するドライバとして、“`Headless Chrome“`を使うため、“`selenium_chrome_headless“`をドライバーとして設定。# 2. はまったこと
– [「現場で使える Ruby on Rails 5速習実践ガイド」](https://www.amazon.co.jp/%E7%8F%BE%E5%A0%B4%E3%81%A7%E4%BD%BF%E3%81%88%E3%82%8B-Ruby-Rails-5%E9%80%9F%E7%BF%92%E5%AE%9F%E8%B7%B5%E3%82%AC%E3%82%A4%E3
railsがアプリを新規作成できないエラーを治す方法
railsがアプリを新規作成できない原因は
ホームディレクトリに直接railsアプリをすでに作成していて
その状態でフォルダを作って新規作成しても
アプリのファイルはすでにあるとして作れないためでした。
なので、この状況を治すためには
ホームディレクトリに直接作られたrailsのアプリファイルを
全て削除することです。
面倒なようですがどれがrailsファイルなのか見分けがつきやすいので
すぐにファイルを全て削除できます。全部削除し終えて新しくフォルダを作りcd で新しいフォルダに移動している状態でターミナルで rails _6.1.4.1_ new sample-appとすると無事フォルダを作成できます。
作ったフォルダをvscodeに貼り付ければ編集ができるようになります。
https://qiita.com/nakamurau1@github/items/bd86c9e8d6ad93cb4039
https://supportdoc.net/support-ror3/cannot_initialize.html
https://fukatsu.tech/create-
migrateのステータス確認
rails g migration XXX
などをタイポして、実行してしまった時にどうすれば良いのか調べました。今回は、
“`
rails g migraiton add_name_to_user name:string
“`
を
“`
rails g migraiton add_name_to_users name:string
“`のように、userをusersとしてしまいました。
### db:migrate実行前
今回は、db:migrate実行前だったので、以下のコードを実行しました。データベースへの反映段階によって対処法が異なっているようです。“`
rails db:migrate:status
“`すると、upとdownが出てきました。
“`
Status Migration ID Migration Name
————————————————–
up 20220403064432 Devise create users
down 20