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

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

Docker環境でrails 6以降の構築しました。あ、macはM1チップです。

私はサラリーマンである。
ITエンジニアである。明日も7時前に起きて出社の準備をしないといけない。今深夜1時。

この記事を書き終わる頃には2時とかだろう、早く寝ろ俺。

しかし一個だけ言わせてほしい。

dockerお前の仕事は環境の差異をなくすことちゃうんか!?お前が一番差異に困惑しとるやないかぇぇぇぇぇぇウェえええええええ!!!

# 失礼しました

タイトルの通りrailsをDockerに走らせるだけの簡単なお仕事でミスりまくってものすごい時間を費やしたので書いてます。

# 試したこと

https://zenn.dev/tmasuyama1114/articles/rails-docker-5x-how-to

自分が作ったdeviceでログイン + 文章投稿する という簡単なアプリケーションを
上記リンクを参考にDockercomposeファイルを足してコンテナ化しようとしました。

# そもそも使てるアプリケーションがrails 6~

まず手始めにエラーが出たのは

“`ターミナル
bundler: command not found: rail……..
`

元記事を表示

authenticate_user!メソッド

# authenticate_user!メソッドとは
ログイン状態によって表示するページを切り替えるdeviseのメソッドで

ユーザーがログインしていなければ、そのユーザーをログイン画面に遷移させる事が出来ます
以下のようにcontroller内にbefore_actionを記述する事で、アクションを実行する前にログインしていなければログイン画面に遷移させられます。

“`:ruby
before_action :authenticate_user!
“`

##### indexアクションではログインをしていなくても閲覧できるようにしたい場合は以下のように記述する

“`:ruby indexはログインせずに閲覧できる
before_action :authenticate_user!, except: :index
“`

##### このように複数のアクションにも適用する事も出来ます

“`:ruby indexとshowをログインせずに閲覧できる
before_action :authenticate_user!, except: [:index, :show]
`

元記事を表示

exec user process caused: exec format errorの原因と対処法 (ECS)

Rails+Docker環境にて、ECS側(Fargate使用)のコンテナ起動時に下記エラーに悩まされたのでシェアをしたいと思います。
“`
standard_init_linux.go:228: exec user process caused: exec format error
“`

## 原因
結論から言うとM1 Macで作成したイメージを、コンテナが動作するFargateのCPUアーキテクチャ側が読み込むことができないのが原因のようです。CPUアーキテクチャとはその名の通りCPU側の設計を指しており、この設計には種類があります。有名どころで言うと、x86(intel)とARM(ARM)が存在します。今回問題だったのは、このCPUアーキテクチャがM1でビルドした際はARMで作成され、FargateのCPUアーキテクチャではARM作成されたイメージは対応できない為でした。
試しにターミナルから下記コマンドで、自分のMac(M1)のCPUアーキテクチャを確認したところ確かにARMであることが確認できました。
“`
uname -m
“`

## 対策
対策として、以下の2

元記事を表示

【Rails】既存Userモデルのカラムと,deviseで生成したUserモデルのカラムが重複し,エラーとなったときの対応

# はじめに
deviseの導入時に遭遇したエラーと対処法について記事にしました.初学者の学習の一助となれば幸いです.
### 環境
Ruby 3.1.2
Rails 6.1.7
### 前提
以下のコマンドで既にUserモデルを作成しており,データベースに“`email“`カラムをデータベースに適用済みという状況で,deviseを導入しエラーが発生しました.
“`db:コマンド
rails g model User (略) email:string
rails db:migrate
“`
個人開発を前提にしてます.

# エラー内容
devise導入のため,Gemfileに“`gem ‘devise’“`を記述後,以下のコマンドを実行したところ,以下のエラーが発生しました.
“`db:コマンド
bundle install
rails g devise:install
rails g devise User
rails db:migrate
“`
“`db:エラー内容
== 20220928040542 AddDeviseToUsers: migrating ==

元記事を表示

MySQLがうまくいかない〜掲示板作成〜

## ポートフォリオ作成開始!
今日から掲示板作成するぞ!([作成する掲示板の内容はこの記事に記載](https://qiita.com/takumi-1016/items/a4c80341aa2b917c0e9e))
ということで、プログラミングスクールで学んだRailsを用いてアプリを作成していきます。

## アプリの作成
例によって
“`:ターミナル
rails new アプリ名 -d mysql
“`
でアプリを作成していきます。(参考サイト:[【Rails/MySQL】RailsにMySQLを導入する方法【プログラミング学習149日目】](https://qiita.com/fuku_tech/items/a380ebb1fd156c14c25b]))

## MySQLで問題発生!
いろんなIT系の求人によく載っていたMySQLを今回は使用します。しかし
“`:ターミナル
mysql.server start
“`
すると
“`:ターミナル
Starting MySQL
.. ERROR! The server quit without updating PID

元記事を表示

郵便番号・都道府県別データをデータベースに保存する(Sqlite3)

# データの取得

今回は郵便局のサイトからデータをダウンロードします。
– 都道府県一覧 > 全国一括(1,691,560Byte)

[日本郵便:郵便番号データダウンロード](https://www.post.japanpost.jp/zipcode/dl/kogaki-zip.html)

> 全角となっている町域部分の文字数が38文字を越える場合、また半角となっているフリガナ部分の文字数が76文字を越える場合は、複数レコードに分割しています。
この郵便番号データファイルでは、以下の順に配列しています。
1. 全国地方公共団体コード(JIS X0401、X0402)……… 半角数字
1. (旧)郵便番号(5桁)……………………………………… 半角数字
1. 郵便番号(7桁)……………………………………… 半角数字
1. 都道府県名 ………… 半角カタカナ(コード順に掲載) (注1)
1. 市区町村名 ………… 半角カタカナ(コード順に掲載) (注1)
1. 町域名 ……………… 半角カタカナ(五十音順に掲載) (注1)
1. 都道府県名 ………… 漢字(コード順に掲載) (注1,

元記事を表示

未経験からITエンジニアになる〜ポートフォリオ作成〜

大学院を中退してITエンジニアを目指しています。
今回はエンジニア就活に必要なポートフォリオ作成について考えたことを備忘録としてここに残します。
# 何を作るか
現在は自身が所属していたアルティメットサークル(フリスビーを使うスポーツです)の反省用掲示板を作成しよう考えています。
現在も掲示板自体は存在しているのですが以下の点において改善したいと考えていました。

– トピックごとに分かれていない
– 有益な投稿に関してバックナンバーで振り返りづらい
– タグ付け機能がなく先輩の知恵を検索で探せない

そこで見た目や本来の掲示板機能を備えつつ、①トピックを設定、②お気に入り機能(いいね機能?)、③タグ付け機能を追加した掲示板を作成し、後輩たちに使ってもらいたいと思います。

# Qiitaの使用
何かやりだすと夢中で先に進んでしまうため振り返りの機会をもつためにQiitaに投稿を始めようと考えました。稚拙な文章力は表現力も向上できればなと思います。

今回はこの辺で、それでは!!

元記事を表示

【Rails】SQlite3から本番環境だけPostgreSQLに変更する方法をどこよりも優しく伝える!

# 目的
[Render.com](https://render.com/)というPaasを利用して本番環境にアップする際に、データベスはPostgreSQLが指定されていました。
RailsのデフォルトDBはSQlite3ですので、PostgreSQLに乗り換える必要があるということです。
本記事では、テストと開発環境はSQlite3のまま、本番環境だけPostgreSQLに変更する手順を記録します。

# 手順

## Rails newで新しいアプリを作成する
今回は最終的にRender.comにデプロイするところまで説明しますので、`Render_app`というアプリを作成します。

ターミナルにて
“`terminal
$ rails new Render_app

$ cd Render_app
“`

このタイミングで[GitHubにレポジトリを作成](https://qiita.com/ysk91_engineer/items/a87f95fbf76018963782)しておきます。

### 環境
私が作成したプロジェクトのバージョンは以下です。

“`t

元記事を表示

Railsの基礎を使って、メッセージ投稿アプリを作ってみた 【第4章】(7.Bootstrapでスタイルをつける)

## 概要
前回の記事で作成したアプリの続きです。
[Railsの基礎を使って、メッセージ投稿アプリを作ってみた 【第3
章】 (6.エラーの処理)](https://qiita.com/web_fumiya/items/9c5dec049e6fa754fddb)

今回が最終章となります。
Bootstrap FontAwesome を導入し、簡単に見た目の良いサイトに仕上げていきます。

## 開発環境
– Ruby 2.7.3
– Rails 6.1.6.1
– Postgresql

## 開発手順
1.アプリの作成 (第1章)
2.CRUD処理で簡単なメッセージ投稿アプリを実装 (第1章)
3.リファクタリング (第2章)
4.フラッシュの実装 (第2章)
5.バリデーションの設定 (第2章)
6.エラーの処理 (第3章)
7.Bootstrapでスタイルをつける (第4章)

## Boots

元記事を表示

Docker環境下でRailsアプリをHerokuにデプロイする手順

# 目的
Dockerfile, docker-compose.ymlを用いた開発環境でRailsアプリを構築したので、Herokuに手動デプロイする手順を備忘録としてまとめておくこと

# 前提
2022.9.27現在
後日CDで対応する予定のためHeokuの構成はheroku.ymlに記載、Dockerfileは開発環境のものとは分けて作成(Dockerfile.production)
## ミドルウェア
– Ruby 2.7.2
– Ruby on Rails 6.0.5
– docker 20.10.13
– docker-compose 1.29.2
– node 17.6
– PostgreSQL 14.5
– heroku 7.52.0(darwin-x64/node-v12.21.0)

## 構成
– API Rails(Rails.env=production)
– データベース PostgreSQLのみ
– フロントエンド Nuxt.js
– platform linux/amd64
– ディレクトリ
– MyApp(アプリ名)
– app

元記事を表示

“rails g”コマンドを叩いたらターミナルが固まってしまった時の対処法

はじめに

DBテーブルを追加する必要があり、”rails g model”コマンドを叩いたところ、ファイルが作成されずうんともすんとも言わなくなり固まってしまいました。

“ctrl + c”で終了したところ、下記のようにエラー文っぽいものが見当たらない文章が出力されて焦ったので、同じ場面の時に焦らないように備忘録にまとめようと思います。

~~~
~# bundle exec rails generate model ~
※↑ここで固まりうんともすんとも言わなくなる

※↓”ctrl + c”で下記が出力された(エラーっぽい単語が見えなくて焦りました。)
^C/usr/local/bundle/gems/spring-4.0.0/lib/spring/client/run.rb:117:in `gets’: Interrupt
from /usr/local/bundle/gems/spring-4.0.0/lib/spring/client/run.rb:117:in `verify_server_version’
from /usr/local/bundle/gems/

元記事を表示

Railsバージョンの問題解決

こんにちは!!

今回は**Rails6**のバージョンで開発を進めたいのに
**Rails7**のバージョンでしか開発ができない人に向けての記事になります!!!

**①ターミナルに以下のコードを入力**

“`ruby:ターミナル
gem install -v 6.1.5 rails
“`

**②バージョン6が入っているか確認**
“`ruby:ターミナル
rails -v
“`

以下のように表示されれば良き!!
*rails 6~のようになっていればなんでもいいよ!!
“`ruby:ターミナル
Rails 6.1.7
“`

**③アプリの作成**
“`ruby:ターミナル
rails _6.1.5_ new app_name
“`

以上になります!
開発頑張っていきましょう!!

元記事を表示

RailsエンジニアがRustでWebアプリを作るまで(1日目)

## 概要と注意
– 本記事は、完全未学習の状態からRustでAPIを書くまでの学習過程です。
– 筆者が普段主務で使っているのがRuby(Rails)のため、Railsに例えた比喩が度々出ます。
– Rustに関しての正確な説明はしていません。それどころか、間違った説明が度々出ます。あくまで学習の記録として読んでください。(訂正のコメントは大歓迎であります。)
– 習得したら、全ての過程を1つの記事にまとめます

## 1日目 (学習時間: 1h)

### Rustをinstallするよ!
兎にも角にもまずは環境を作らねばということで、Rustのinstall方法を検索
ありがたいことに[公式の日本語ドキュメント](https://www.rust-lang.org/ja/tools/install)があったので、書いている通りにinstall

“` sh
curl –proto ‘=https’ –tlsv1.2 -sSf https://sh.rustup.rs | sh
# 使っているshellでPATHを通す
“`
ふむ、はいったようだ
“`
> rustup

元記事を表示

Rails6, activerecord-sqlserver-adapterでinsert_all!は使えるのにinsert_allが使えない問題

Rails6でのSQLServerにて“`insert_all“`が使えなく、調査したのでメモ。
出るエラーは以下

“`Bash
Model.insert_all([{name: ‘test’}])
ArgumentError: ActiveRecord::ConnectionAdapters::SQLServerAdapter does not support skipping duplicates
“`

## 環境

“`lock
activerecord-sqlserver-adapter (6.0.0)
activerecord (~> 6.0.0)
“`

## Railsのコードを読む

結論を先に言うと、“`ActiveRecord#insert_all“`は以下で“`on_duplicate: :skip“`という主キーが重複するレコードをスキップする引数をデフォルトで渡しているが、“`activerecord-sqlserver-adapter“`ではこれをサポートしていないのが原因。

“`Ruby
def insert_all(att

元記事を表示

【Rails】データベースのテーブルを新設し,カラムを編集する

# はじめに
学習中で躓いた箇所を記事にしました.初学者の学習の一助となれば幸いです.
また,内容に不備,間違いがあればご指摘いただければと思います.

### 環境
Ruby 3.1.2
Rails 6.1.7

# 目次
**1. 基礎知識**

**2. データベースにテーブルを新設する**
2-1. マイグレーションファイルを作成する
2-2. マイグレーションファイルをデータベースに適用する
2-3. データベースのテーブル定義を確認する

**3. テーブルのカラムを編集(修正,追加,削除)する**
3-1. カラム名を修正する
3-2. カラムを追加する
3-3. カラムを削除する
3-4. マイグレーションファイルの直接編集によりカラムを編集する
3-5. 極力,マイグレーションファイルは直接編集しない

**4. まとめ**

# 1. 基礎知識
データベースのテーブルカラムを編集するためには,マイグレーションファイルを作成し,データベースへ適用します.マイグレーションファイルとは,データベースのテーブル仕様(カラム名,データ型等)を記載した.rbファイルです.Rai

元記事を表示

【ActiveModelSerializer】undefined method `read_attribute_for_serialization’

## 環境
Rails 6.0.1
Ruby 2.6.3
PostgreSQL 11.16

## 状況

serializerを指定するところで下記のエラーが発生。

“`
NoMethodError:
undefined method `read_attribute_for_serialization’ for #
“`

“`ruby
def show
posts = …
render json: posts,
serializer: HogePostSerializer
end
“`

## 解決法
“`serializer“`ではなく“`each_serializer“`に変更する。
大体の場合“`each_serializer“`は“`index“`アクションで使うイメージがあったし、ドキュメントにもそう書いてあった
>To specify which serializer to use on ind

元記事を表示

【Ruby】ひらがな/カタカナ変換や全角/半角変換や漢字にマッチする正規表現などなど

# 目次
1. [概要](#概要)
2. [参考文献](#参考文献)
3. [使用した正規表現](#使用した正規表現)
4. [作ったメソッド達](#作ったメソッド達)
– [全角半角変換](#全角半角変換)
– [ひらがなカタカナ変換](#ひらがなカタカナ変換)
– [記号の削除](#記号の削除)
5. [破壊的メソッドにしたい時!](#破壊的メソッドにしたい時)
6. [Railsにおける便利な文字列操作のおすすめ記事](#Railsにおける便利な文字列操作のおすすめ記事)

# 概要
日本語の表記揺れなどに対応する必要があり、Stringクラスに定義する形で色々作ったのでメモしておきます。

# 参考文献
– https://easyramble.com/japanese-regex-with-ruby-oniguruma.html
– https://docs.ruby-lang.org/ja/latest/class/String.html#I_TR
– https://docs.ruby-lang.org/ja/latest/class/NKF.ht

元記事を表示

【Ruby】ダックタイピングとは

## 環境
Rails 6.0.1
Ruby 2.6.3
PostgreSQL 11.16

## ダックタイピングとは
特定のクラスと結びつかない、クラスを跨ぐパブリックインターフェースを取り決め実装する作法。
下記の例は“`bark“`メソッドがダックタイプされていると言える。
もっと複雑な実装になってくると“`bark“`メソッドをmoduleにまとめて共通化する方が良さそう。

“`ruby
class Cat
def bark
puts ‘ニャーニャー’
end
end

class Dog
def bark
puts ‘ワンワン’
end
end

mike = Cat.new
poti = Dog.new

mike.bark
#=> ‘ニャーニャー’
poti.bark
#=> ‘ワンワン’
“`

### 継承よりもダックタイピングを積極的に使うこと
ダックタイピングを知ったとき継承とどう使い分けるのか気になった。
継承が設計上必要でなければ、ダックタイピングで楽しようとのこと。

“`ruby
class Animal

元記事を表示

Xcode CLTはインストール済みだが、bundle installに落ちる場合の対処法

## 状況

[この記事](https://k-koh.hatenablog.com/entry/2022/09/01/114030)と同じ状況で、pumaを5.6.5に上げてbundle installをしたらエラーが出てinstallに失敗してしまった。

xcode CommandLineTools(CLT) がインストールされてるか確認してみたが、

“`shell
$ xcode-select –install
xcode-select: error: command line tools are already installed, use “Software Update” to install updates
“`

と、すでにインストールされていた。

## 解決した方法

xcodeを開く。
以上。

xcodeを開くと自動でアップデートが走って直りました。

元記事を表示

マイグレーションのステータスで表示される、NO FILEを表示させなくするには

## 環境
Rails5.2
Ubuntu20.4

## 内容
不要になったため、マイグレーションファイルを**rm**で削除したのだが、不用意であったため、マイグレーションのステータスを表示すると、**NO FILE**で残ってしまうこととなった。
“`
$ rails db:migration:status
up 20220819003642 ********** NO FILE **********
“`

この**NO FILE**をステータスから削除することとする。まずは、20220819003642_test01.rbという空ファイルを作成してやる。test01の部分は、どのような名前でもOKです。すると、**NO FILE**から、マイグレーションの履歴が復活しました。
“`
$ rails db:migration:status
up 20220819003642 Test01
“`

20220819003642_test01.rbの状態は**up**になっています。削除するには、**down**にする必要があります。空ファイルに、空のc

元記事を表示

OTHERカテゴリの最新記事