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

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

rollbackできないエラーの時

rollbackをしようと実装していた矢先、以下のようなエラーが出て、少しはまってしまったため、その備忘録を書かせて頂きます。
“`
ActiveRecord::UnknownMigrationVersionError:
No migration with version number 20220703020507.
“`

このエラーはどう言う時に出るかというと、下記の表で上から三行目に
[********** NO FILE **********]と書かれてるように、NO FILEがあると、うまくrollbackができなくなってしまいます。
“`
database: starbuck_services2_development

Status Migration ID Migration Name
————————————————–
up 20220702022539 Sorcery core
up 20220702115611 Add role to users

元記事を表示

Claris ConnectでEコマースの在庫連携システムを作成する

# はじめに

この記事は、Qiita Engineer Festa 2022 「**[Claris Connect を使った SaaS 連携ユースケースを紹介しよう!](https://qiita.com/official-events/eeadea1de45a11be944e)**」に参加するために作成した記事です。

在庫連携システムを作成しますが、
実運用に使用できるほど仕様を考えていないので軽い気持ちで見ていただけると幸いです
また、Claris ConnectのIDや本記事で使用する各種サービスの登録方法は省略させて頂きます

# 概要

今回は複数のECを運用する事で必要になる「在庫連携システム」をClaris Connectを使って構築します
実際に運用する事をイメージして複数システムのデータ連携からSlack・Trelloのサービス連携まで行います

# 在庫連携システムとは

実装に移る前に在庫連携システムについて説明します

まずこちらが在庫連携を使用せずに複数のECサイトを運用している図になります
商品在庫を同期していないのでそれぞれのECサイトに在庫を振り分け

元記事を表示

Rails エラー「Runtime Error Your version of SQLite (3.7.17) is too old. Active Record supports SQLite >= 3.8」の対処法

# 開発環境
Rails 6.1.4
ruby 2.6.3

# 目次
– エラー全文
– 対処法

## エラー全文
アプリケーション作成後、`@rails s`でアプリケーションを起動。
サイトアクセス時、に下記エラーが発生。

![rails1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730324/74534efa-3a59-2d31-5c3c-3c47a9ce501e.png)

AmazonLinux2にはsqlite3のバージョン3.7がデフォルトでインストールされており、
これがyumで利用しているらしく、削除することはできません。
しかし、Rails6を動かすにはsqlite3のバージョン3.8以上が必要なので、
バージョンが古い!とエラーが出ている、、、というわけです。

## 対処法

既存のSQLiteはそのままで、3.8以上のSQLiteを別途インストールします。
sqliteの最新バージョンは[こちら](https://www.sqlite.org/download.

元記事を表示

Rails7で画像の保存にActiveStorage使ってみよう(導入からリサイズまで)

## はじめに

Ruby on Railsには、クラウドストレージサービスへのファイルのアップロードを行う機能を提供するActive Storageがあります。

Rails5.2から登場したActive Storageですが、当初はできることが少なく、CarrierWaveを利用する方も多かったのではないでしょうか。
Rails7まででActive Storageには様々な機能が追加され、新規開発の際はActive Storageを選択することが多くなると思います。

今回はActive Storageの導入からよく使うであろう画像のリサイズの方法までをご紹介します。

ViewやControllerまわりについては説明していないので[Railsガイド](https://railsguides.jp/active_storage_overview.html)などで確認してください。

## 開発環境

[こちらの記事](https://qiita.com/croquette0212/items/7b99d9339fd773ddf20b)を参考にRails7 + MySQLの開発環境

元記事を表示

Ruby初心者向けのVSCodeでの環境構築+実行環境構築+ショートカットキー紹介

プロを目指す人のためのRuby入門に書かれているエディタの環境構築をVSCode上で行いました。
この記事を最後まで読むことで、プロを目指す人のためのRuby入門に書かれている以下の環境構築をVSCode上で行えるようになります。
また、書籍内に書かれていたのおすすめ機能に加えてVSCode上でRubyを実行する設定も行います。
これによって簡単にVSCode上でRubyの実行ができるようになります。

>1.シンタックスハイライトを設定する
2.複数行の一括コメントアウト、コメント解除
3.矩形選択・矩形編集
4.タブキーによるインデント幅の設定
5.endキーワードの自動入力、自動インデント
6.複数ファイルの同時編集、タブ表示
7.ウインドウの分割
8.ファイルツリーの表示
9.インデントの可視化
10.やる気の出るカラースキームや背景画像
11.全角スペースの可視化(2020.2.29追記)
12.Rubyの実行環境を構築する
※1-11に関しては著者Qiitaより抜粋しました。
https://qiita.com/jnchito/items/0ad568263f341977

元記事を表示

Ruby on Railsをローカルで始めようとしてつまずいたこと(Windows)

# 概要
railsを触ろうと思ってWindowsでHelloWorld的なところをやろうとしたら、エラーが出てしまったのでその対応の備忘録。

## バージョン
* ruby 3.0.1p64 (2021-04-05 revision 0fb782ee38) [x64-mingw32]
* Rails 7.0.3
* Windows 10 Home

## エラー内容

`Windows PowerShell`でコマンド実行。
アプリケーションを作る際にエラー。

`$ rails new rails_practice`

エラーログ
“`
create
create README.md
create Rakefile
create .ruby-version
create config.ru
create .gitignore
create .gitattributes
create Gemfile
run git init from .
C:/Rub

元記事を表示

railsでparams.require(モデル)を指定したときにparam is missing or the value is empty:エラーが発生する

Webアプリケーションを初めて作成していたときに困ったエラーでparamsから受け取ったデータを保存するときにparamsの値が存在しないとエラーが出て困ったので、初学者で同じように困る方もいるのではないかと思い、今回の記事を作成しました。

下記のような記述をしていてエラーが出ました。
“`posts_controller.rb
class PostsController < ApplicationController def index @posts = Post.all end def new @post = Post.new end def create binding.pry Post.create(post_params) end private def post_params params.require(:post).permit(:text) end end ``` ```new.html.erb

新規投稿ページ

<%= form_with url: '/posts

元記事を表示

【Rails】【Rspec】トランザクションのロールバックをテストする

## はじめに
未経験からエンジニアに転職して、3ヶ月経つエンジニアです。
![自己紹介.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916052/d4c50641-f785-5708-3e16-c93830a1d41d.jpeg)
今回は業務で経験した「トランザクションのロールバックをテストする」方法について書きます。

## トランザクションとは
>ブロック内のすべての処理が正常に行われた場合に保存
エラーが発生した場合は、ロードバック

https://railsdoc.com/page/transaction

これだけだとわかりませんよね、、
↓の記事などが参考になるかもしれません!

https://qiita.com/tomokiyao/items/8697b523a0a5b9cf0bec

## テストしていく
トランザクションを使っているということは、重要な処理をしている可能性が高いです。
つまり、コードにバグが含まれていると取り返しのつかないことになり得る危険性が高いともいえます

元記事を表示

【Rails】Rails6 + docker メール設定エラー 「Errno::EADDRNOTAVAIL (Cannot assign requested address – connect(2) for “localhost” port 1025)」

## 概要
Rails6とdocker環境でメール設定をした際に発生したエラーの備忘録です。

### 環境
– ruby 3.0.3p157 (2021-11-24 revision 3fb7d2cadc) [x86_64-linux]
– Rails 6.1.6
“`docker-compose.yml
# 中略
mailcatcher:
image: schickling/mailcatcher
ports:
– 1080:1080
– 1025:1025
“`

## エラー発生時のメール設定
“`development.rb
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = { address: ‘localhost’, port: 1025 }
config.action_mailer.raise_delivery_errors = true
“`

### エラー内容
– Railsサーバ側

元記事を表示

トランザクションの例外処理で参考にした記事(自分用)

https://prograshi.com/framework/rails/rescue_rais_retry_ensure/

元記事を表示

【個人開発】飲み方やおつまみの相性から直感的にウイスキーを探せるサービスを作った話?

![OGP.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1834267/71b87264-5ed3-7ff9-1ef0-41a88850138a.png)

飲み方やおつまみの相性、香りの強さ、口当たりの軽さなど
直感的な要素からウイスキーを探せるサービスをリリースしました!?

▼サービスURL
https://malt-mate.jp

▼GitHub
https://github.com/tarakish/whiskey_database

# はじめに??
はじめまして!駆け出しへべれけエンジニアの[みや](https://twitter.com/tarakish_23)と申します?
ウイスキーについても駆け出しのためネットで情報を探すことが多いのですが、
フレーバー?歴史?タイヤのような香り?カスクストレングス?etc…前提知識が必要だったり、
そもそもの情報量が多すぎて分からなくなることが多いな〜と感じてました。そこで
– 相性のいい飲み方やおつまみなど、**飲む際に実際に考えるような

元記事を表示

【Rails】ランダムにデータ抽出する(アンチパターンに注意)

# はじめに
DBからランダムに1件データを抽出するというお話です。

この機能を実現するにあたっては、初学者でも比較的簡単にできると思います。
しかし、この前たまたま目にした記事が「これは怖い予感がする?」という内容だったので、実際に怖さを検証してみました。

# どんな怖いコード?

以下が怖いコードの実例です。
“`ruby
sample_post = Post.all.shuffle.first
“`

全てのレコードを取得してからサンプリングしてるので、`時間がかかる` & `メモリを消費する` という問題があります。
(ちなみに`shuffle.first`は`sample`に置き換えられるという小さな問題もあります)

数百レコード程度であれば、目に見えるほどの影響はないかもしれません。
サンプル範囲が狭い場合であればこのようなやり方でも許容できるかもしれませんが、基本的には無駄な時間とメモリの消費は避けるべきです。

しかし実際にどのぐらい問題があるか体験したことがなかったので、検証してみようと思います。

# 検証してみる
100万件レコードがあれば結構な問題にな

元記事を表示

herokuとRDSを接続できないときの対処法

herokuとrds繋げるときに色々困ったので備忘録。
最終的な目標はherokuの環境変数であるDATABASE_URLを入力することです。

### RDS側のでやること

– RDSインスタンスのエンドポイントをメモっておく
– 「DBインスタンスの変更」→「接続」にて、セキュリティグループの確認。ここで設定をミスると全くRDSに接続できなくなる
– 「DBインスタンスの変更」→「接続」→「追加設定」にて、パブリックアクセスを許可するかどうかを確認

### herokuのDATABASE_URLの書き方(mysqlの場合)

– `mysql2://username:password@hostname/dbname`
– ここでのusernameとパスワードはmysql内のユーザとパスワードのこと。IAMユーザのことではないので注意
– hostnameはRDSインスタンスのエンドポイントを記入
– dbnameはmysqlに入って`show databases;`コマンドで確認可能

元記事を表示

クラスとインスタンスとオブジェクト

## 概要

概念的で抽象的な物が苦手なので、これを機にまとめようと思います
説明するのはRubyですけど、どの言語において共通して使える考え方だと思います

### オブジェクトとは
そもそもオブジェクトとはなんだろう
Rubyの世界は全てのものがオブジェクトになります
配列ハッシュ以外にもnilもオブジェクトに当たります
つまり全部オブジェクトです
ただ抽象的すぎて分からないですよね
なのでたこ焼きで考えましょう
たこ焼きは紅生姜や青さ、鰹節、マヨネーズ、油、たこ、たこ焼き粉などの材料から作られています
つまりこれら全部がオブジェクトになります

### クラスとは
次にクラスとはどのようなものでしょうか?
こちらはオブジェクトを作るための設計書になります
簡単に示すと型です
こちらもたこ焼きで表すと分かりやすいです
1個ずつたこ焼きを作っていたらお客さんが怒ってしまいますので、一気にたくさん作りたいと思ったたこ焼き屋さんの店長さんはたこ焼き器を作りました
こうすることで一気に焼けてお客様を待たせることなく提供できます
またたこ焼き器を作ったことで、具材にチョコを入れたデザートたこ

元記事を表示

【rails】遷移元のページの種類によって処理を変える

遷移元ページが違うなら処理を変えたい。そんな時に利用するメソッドを紹介。
“`ruby
request.referer
#中身
“http://localhost:3000/〜(略)”
“`
これで遷移元のリクエストパラメーターを取得できます。中身はurlとなっています。個人的なおすすめは正規表現で利用するmatchを使い、条件分岐させることです。
“`ruby
if request.referer.match(/issue/)
処理①
else
処理②
end
“`
上記の場合だと、urlに”issue”が含まれている場合は処理①を実行し、それ以外は処理②を実行します。これで、ある特定のページから来た場合には、他のページと違った処理をすることができます。
### 参考サイト
https://railsdoc.com/page/request

https://docs.ruby-lang.org/ja/latest/doc/spec=2fregexp.html

元記事を表示

【Rails】URLにaタグを付ける

RailsはURLテキストを入れて投稿しても、自動的にリンクを付与してくれません( ꒪⌓꒪Ⅲ)

ユーザーに全く優しくないので、
URLリンク先に遷移できるようにしましょう!

まずは、ヘルパーにメソッドを書いていきます。

ヘルパーは、**application_helper.rb** or **コントローラー名_helper.rb**に記述可能です。
今回は、複数箇所で使用したいので、application_helper.rbに書いていきます!

“`ruby:helpers/application_helper.rb
module ApplicationHelper
require “uri”

def text_url_to_link text

URI.extract(text, [‘http’,’https’]).uniq.each do |url|
sub_text = “”
sub_text << "” << url << "

元記事を表示

【Rails】Sorceryで外部認証 〜LINE編〜

# はじめに??
現在個人開発しているサービスにて
SorceryのExternalモジュールを利用して外部認証を実装する際に
LINE認証を実装している例がなかったため、備忘録も兼ねて記します。

※下記の記事にてGoogle認証についても解説しています!
内容に一部重複している部分があるため、実装済みの部分に関しては都度読み飛ばしていただければと思います。

https://qiita.com/tarakish/items/8e61106fa2473a9d97e8

### 環境?
– Ruby `3.0.1`
– Ruby on Rails `6.1.4.4`
– 【gem】 sorcery `0.16.2`

### 想定読者?
– sorceryのexternalモジュールでLINE認証を実装したい人

### 前提?
– [Simple Password Authentication](https://github.com/Sorcery/sorcery/wiki/Simple-Password-Authentication)でのメールアドレス認証機能は実装済みであること。

元記事を表示

database “…” is being accessed by other userが出た時

rails db:resetの際に
database “…” is being accessed by other userが出た時の対処法を説明します。

PostgreSQLを再起動させたらrails db:resetは正常に実行される。
“`
macの場合
停止
brew services stop postgresql
起動
brew services start postgresql
その後
rails db:reset
“`

元記事を表示

firebaseAuthの開始方法およびfschuindt / firebase_id_tokenの実装をみる

# 概要
RailsでfirebaseAuthのJWTを用いて認証するまでの流れです。

# firebaseAuth
1. firebaseプロジェクト作成
1. firebaseAuth開始
スクリーンショット 2022-07-08 10.29.00.png

## (APIを直接実行する場合)
SDKではなくAPIを直接叩きたい場合は以下手順。(ユーザー作成APIの例)

### APIキー
プロジェクトの概要の右のアイコンから開ける
`https://console.firebase.google.com/u/0/project/{project_id}/settings/general`
スクリーンショット 2022-07-08 10.31.03.png

元記事を表示

【Rails】Sorceryで外部認証 〜Google編〜

# はじめに??
現在個人開発しているサービスにて
SorceryのExternalモジュールを利用して外部認証を実装する際に
google認証を実装している例がなかったため、備忘録も兼ねて記します。

※下記の記事にてLINE認証についても解説しています!
内容に一部重複している部分があるため、実装済みの部分に関しては都度読み飛ばしていただければと思います。

https://qiita.com/tarakish/items/a4c73104375878ad61c5

### 環境?
– Ruby `3.0.1`
– Ruby on Rails `6.1.4.4`
– 【gem】 sorcery `0.16.2`

### 想定読者?
– sorceryのexternalモジュールをベースとしてgoogle認証を実装したい人

### 前提?
– [Simple Password Authentication](https://github.com/Sorcery/sorcery/wiki/Simple-Password-Authentication)でのメールアドレス認証機能は実

元記事を表示

OTHERカテゴリの最新記事