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

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

Corsを倒す

# React側の設定
– axiosの第三引数に“`{withCredentials: true}“`を入れる

“`tsx
const hundleSubmit = (e) => {
e.preventDefault()
const url = `http://localhost:5000/signup`
const params = {
name,
email,
password,
password_confirmation: passwordConfirmation
}
axios.post(url, params, { withCredentials: true })
.then(res => console.log(res)).catch(res => console.log(res))
}
“`

# Rails側の設定
– rack-corsを入れる

“`ruby:gemfile
gem ‘rack-cors’
“`

– application内で

元記事を表示

【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

元記事を表示

Heroku+Railsでバッチ処理を作成する

# 目的
個人開発のRailsアプリで、1日1回メール配信を行うバッチ処理を作る必要があり、調べて実装した時の備忘録です。

メール配信はsidekiqで非同期処理させており、開発環境ではsidekiq-schedularで24時間周期で起動させていました。
しかし、本番環境で利用しているHeroku(無料枠)では、30分でWebサーバがIdleになるため、うまく動作しませんでした。このため本番環境ではHerokuのアドオン(Heroku-schedular)を使った構成にしています。

スモールスタート等でRails+Heroku構成を選択される方は多いと思いますので、参考になれば幸いです。

# 開発環境
+ Rails 6.0.3.3
+ Heroku FreeDyno

# 手順
手順はシンプルです。1はRails、2と3はHeroku側で行います。順を追って説明します。

1. 実行したいタスクをrakeファイルに書く
2. Heroku-schedularをアドオンする
3. Heroku-schedularにスケジューラを設定する

### 1. 実行したいタスクをr

元記事を表示

SIerのSEからWeb系エンジニアに転職して1年間の振り返り

# はじめに
はじめまして。
私はちょうど1年前に大手SIerから実務未経験でWebサービス(SaaS)を運営する少人数ベンチャーに転職しました。
1年経ったので、どんな感じだったか、少し細かめに振り返りを書いていこうと思います。

# 前提
### この記事の意図
今後の自分のために整理しておきたく、自分の中だけにとどめておくのも勿体ないので、
少しでも誰かの参考になれたらと、アウトプットしておこうと思ったのが背景です。
あと、私が所属しているのはメガベンチャーのような恵まれた環境でなく、創業期の少人数ベンチャーで結構変わった環境です。
このような環境から発信されている情報は少ないと思うので、同じような環境にジョインを検討しているような、
特に未経験の方の参考になればと思っています。

### どんな環境?立場?
– サービス開始から10年、創業は5年ほどの少人数ベンチャー
– toB&toCの両機能がある自社開発のSaaSを展開
– エンジニアチームは計5〜7名、内訳は以下
– 代表取締役(エンジニアマネージャーも兼ねる)
– 私(エンジニア:最近はシステム運用面の

元記事を表示

本番環境でFailed to upgrade to WebSocketエラー

### 状況
ローカルでは投稿に対してのコメントができる(ajax)のに、本番環境ではできていなかった。

### 原因
本番環境でactioncableが使えない状況だった

### 解決方法
“`ruby:EC2内
$ sudo vim /etc/nginx/conf.d/rails.conf
“`
以下を貼り付ける。
“`ruby:/etc/nginx/conf.d/rails.conf
upstream app_server {
server unix:/var/www/アプリケーション名/shared/tmp/sockets/unicorn.sock;
}

server {
#省略
# ——————-ここから——————-
# /cableのパスに対してwebsocketの仕組みを用いるための設定
location /cable {
proxy_pass http://app_server/cable;
proxy_http_version 1.1;
proxy_set_header

元記事を表示

【Rails基本編】美少女と学んだ気になれる講座

この講座は、Web業界未経験の**吉野 桜**と、その先輩である**堀切 あやめ**のかわいさをお楽しみいただくため、邪魔にならない程度の差し障りのないWeb技術の話を、お楽しみいただく番組です

## キャラクター

![20220920_resize.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208060/de425bd4-b556-4140-4e9f-52c22fdcd657.png)
吉野 桜: Web業界未経験

![20200920_resize.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208060/8e061b61-cc55-072c-118d-f5f86c2b61ed.png)
堀切 あやめ: Web業界三年目

## 本編

桜「うちのバックエンドってRuby on Railsですよね?」
あやめ「うん、そうだね」
桜「桜、実はRuby on Railsからっきしで……」
あやめ「そうな

元記事を表示

【入門】Ruby eachメソッドの様々な使い方を具体的に紹介

# はじめに
今回は、Rubyに標準で組み込まれている`eachメソッド`について、備忘録としてまとめます。

※おことわり※
基本的に学習内容のアウトプットです。
初学者であるため、間違い等あればご指摘いただけますと嬉しいです。

# この記事の目的
Rubyに標準で組み込まれている`eachメソッド`についてアウトプット

# この記事の内容
1. each_with_index
2. each.with_index
3. eachの入れ子
4. each_slice
5. each_key
6. each_value

# 1. each_with_index
eachメソッドと同様に、要素の繰り返し処理を行いつつ、その要素が何番目に処理されたものなのか表示するメソッドです。
eachでループを回しつつ、それぞれのデータ(要素)に番号を振りたい時などに使います。

– 書き方
“`ruby
配列名.each_with_index do |item, index|

end
“`
– 基本的な書き方
“`ruby
#書き方①
foods = [“あんぱん”, “メロンパン

元記事を表示

[Rails7]JavaScriptでTurboを無効化する方法

# リロードしないとJavaScriptが動かない

Rails7のTurboが原因。
JSファイルで`turbo:load`イベントを使用する。

“`javascript:test.js
document.addEventListener(‘turbo:load’, function() {
console.log(‘turbo無効化’);
});
“`

`turbolinks`ではなく`turbo`なので気をつけてください。

参考

https://blog.willnet.in/entry/2021/02/14/154101

元記事を表示

OTHERカテゴリの最新記事