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

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

【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)でのメールアドレス認証機能は実

元記事を表示

Gem「google_drive」を使ってスプレットシートを更新する(2022年7月版)

# 使用するGem
https://github.com/gimite/google-drive-ruby

これを利用します。How to Installにある通り、Gemfileに追加するなどしてインストールしてください。

ちなみに、Google純正のGemは[こちら](https://github.com/googleapis/google-api-ruby-client)。google_driveは純正GemのラッパーGemのようです。

# Google認証(2022年7月版)
認証の方法は[ここ](https://github.com/gimite/google-drive-ruby/blob/master/doc/authorization.md)に記載がありますが、少し古くこの通りで二はできません。

特に、このOtherが2022年7月現在は消えており、使用することができません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192137/1509ac7f-ddbd

元記事を表示

【Rails】【SQL】子モデルの最新レコードを基準に親モデルをソートする方法

大阪でRailsを中心に学習している薬剤師エンジニア(初学者)こと、ヨマ([@yoma_2003](https://twitter.com/yoma_2003))です!
Railsで`子モデルの最新レコード`を基準に`親モデルをソート`する方法をまとめます。

※おことわり※
断定口調でまとめますが、初学者であるため間違い等あればご指摘頂けると嬉しいです。

# はじめに
Railsで次のような親子関連を持ったモデルがあったとします。

“`character.rb
class Character < Application Record has_many :topics end ``` ```topic.rb class Topic < ApplicationRecord belongs_to :character end ``` ### charactersテーブル | id | name | describe | |:--:|:----:|:----------:| | 1 | 田中 | 初学者 | | 2 | 鈴木 | Rails学習中 | |

元記事を表示

rails7でomniauthで認証しようとしたらエラーばっかりでうまくいかなかった

# 最終的にはちゃんとできました。
他の言語にうつつを抜かしている間にRubyは3出てるし、railsは7系出てるしでまさに青天の霹靂。
ホスティングする環境によって最近使ってるdotnetをあまり使いたくなかったので、久々にrails触った。

# やりたいこと
ユーザー認証まわりはCognitoにおまかせして、さっと作りたかった。

## 参考にさせていただきました
こちら
https://qiita.com/yhirano55/items/272125c3ce3d7873002e
ありがとうございます。

## ですが動かない

### 最初は「OmniAuth::AuthenticityError Forbidden」が出る
![スクリーンショット 2022-07-07 22.02.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120789/7ca80e2f-48e9-6e64-c133-6871387d0779.png)
これですね。
これは
`gem ‘omniauth-rails_c

元記事を表示

【Rails】dotenv-railsの導入

# はじめに
* 学習の覚え書として書いています
* 自己解釈ですので参考程度にご覧ください

# dotenv-rails とは
* 環境変数を管理できるgem
* 環境変数 → **公開したくない情報(値)**
(メールアドレスやパスワードなど)

つまりGitなどにアップする際、公開したくない情報(値)をdotenv-rails(gem)で管理することができます。

# dotenv-rails 使用手順
①dotenv-railsの導入
②環境変数を記述するファイルを作成(.env)
③環境変数の記述
④ソースコード内で環境変数を使用
⑤GitHubの公開設定(.gitignoreに.envを追加)

## ①dotenv-railsの導入
* gemfileに追記(一番下の行に **gem ‘dotenv-rails’** を追記)
* ターミナルで **$ bundle install** を実行

## ②環境変数を記述するファイル **.envファイル**を作成
* ターミナルで **$ touch .env** を実行
(.envは既定のファイル名なので誤字が無いよ

元記事を表示

ZoomAPI(Server-to-server OAuth)でミーティング作成の自動化[技術検証]

[バヅクリ](https://buzzkuri.com)CTOの合原です。
ひさびさにqiita投稿です。

いいタイミングでこちらのキャンペーンも開催していたので、相乗りさせていただきました :sweat_smile:
https://qiita.com/official-campaigns/engineer-festa/2022

# やったこと
今回は、Railsアプリケーションからの利用を想定していたため、
Server-to-server OAuthアプリにて、実装Tryしてみました。
※Server-to-server OAuthの事例があまり見つからなかったのもあったので w

# 背景(こちらは読み飛ばしていただいても:smiley_cat::ok_hand: )

当社の主力事業[バヅクリ](buzzkuri.com)では、オンラインでのチームビルディングや研修をアソビを取り入れた、非常にユニークなプログラムを用意して、サービスとして提供しています。その際、Zoomミーティング機能を主に活用しています。

詳細は割愛しますが、これまで、イベント開催が確

元記事を表示

rails sができない(Address already in use – bind(2) for “127.0.0.1” port 3000 )

いつも通りrails sをしたら上記のエラーが出たので解決方法を載せておきます

現在動いてるRubyのプロセスを確認
“`
$ ps -ax | grep ruby
“`

このように表示される
“`
49551 ?? 0:00.00 /Users/UserName/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/rb-fsevent-0.11.1/bin/fsevent_watch –format=otnetstring –latency 0.1 /Users/UserName/Rails_product/you_conect/config/locales
49552 ?? 0:00.00 /Users/UserName/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/rb-fsevent-0.11.1/bin/fsevent_watch –format=otnetstring –latency 0.1
“`
動いてるプロセスを終了する
“`
例: kill 49551
$

元記事を表示

deviseのサインアップにenumを使用したら, ‘0’is not a validとエラーが出る

## やりたいこと
– Railsのユーザ認証を行うgem deviseでサインアップするモデルのカラムをenumにしたい
– 該当するモデルのカラムはInteger型

“`ruby
# app/models/user.rb
class User < ApplicationRecord devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable enum user_type: { user: 0, circle: 1 } end ``` ```ruby # db/schme.rb ActiveRecord::Schema[7.0].define(version: 2022_07_02_083714) do create_table "users", charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t| t

元記事を表示

Rails next if と break ifって何ですか?

#### はじめに
 自社製品のコードを見ていたら変なif文を見つけてしまいました。それは
– next if
– break if

というif文でした。条件のあるif文なのだろうくらいにしか捉えておらず、理解しました的な感じでしたり顔してましたら先輩から「この文の意味わかるよね」と言われたので取り繕っていたら詰められて白目になりましたので備忘録として残したいと思います。おかしな部分があれば教えていただければ幸いです。

#### 環境(今回検証した自分のPC)

Ruby 2.6.5
Rails 6.0.5

#### 前提
データを準備します。
booksテーブルを作り値を準備します。
– seeds.rbに次のように記述し、rails db:seedでDBにデータを登録します。
~~~ seeds.rb
Book.create!(
[
{
title: ‘hunter*hunter’,
price: 700
},
{
title: ‘SLAM DANK’,
price: 600
},

元記事を表示

[宇宙一わかりやすい] n + 1 問題とはなにが問題なのか

# はじめに

バックエンド側の開発を行っているとかならず遭遇するN+1問題。
今回は初心者向けにN+1問題はなぜ避けるべき対象とされているのか。例えを用いて分かりやすく解説していきたいと思います。

# 対象読者
– 初心者エンジニア
– Rails を触り始めたエンジニア

# N+1問題とは

> ループ処理の中で都度SQLを発行してしまい、大量のSQLが発行されてパフォーマンスが低下してしまう問題のことです。

まずはN+1問題の概要から。どうやらDB周りの処理によってパフォーマンスが低下してしまう問題のようですね。これだけだといまいちよく分からないかも知れません。ただパフォーマンスが低下するということはつまり非効率な動作を行なってしまっているという理解までできていれば問題ないです。

# 非効率性を身を持って体感してみよう
ではN+1を根底から理解するため、実際に検索行為という例えを通して非効率性を体感してみましょう。早速お好きなブラウザを開いて、以下の単語の検索結果を表示してください。そして一番最初の結果のURLをメモしておきましょう。

– ActiveRecord

元記事を表示

[Ruby] include, prepend, extend の違い

個人的に忘れがちなものなので、自分用でメモしておきます。

間違いがありましたら、ぜひご指摘お願いします!

# 用途による分け方
|用途|キーワード|個人的な
使用頻度|
|-|-|-|
| あるモジュールのインスタンスメソッドが欲しい
かつ、**今のクラスやモジュールの定義を優先したい** | [Module#include](https://docs.ruby-lang.org/ja/latest/method/Module/i/include.html) |高|
| あるモジュールのインスタンスメソッドが欲しい
かつ、**今のクラスやモジュールのインスタンスメソッド定義より優先したい** | [Module#prepend](https://docs.ruby-lang.org/ja/latest/method/Module/i/prepend.html) |底|
| あるモジュールのインスタンスメソッドが欲しい
かつ、**特異メソッドとして欲しい** | [Object#extend](https://docs.ruby-lang.org/ja/lat

元記事を表示

Rails Youtubeの動画投稿・編集

# 概要

Youtubeにアップロードされた動画をRailsアプリで投稿したいという方に向けたものです。
Youtubeの動画を投稿した時にYoutubeのURLのなかで最後の11桁の値のみを取り出し、他の変数に取り入れるようにしている記事が多い。
それだと編集する時に、末尾11桁を入力しないとエラーが起こってしまうので、それが起きないような、その実装方法を記載します。

# 事前準備

実装にあたって、私の開発環境を載せておきます。

“`rb:環境
ruby 3.0.4
Rails 6.1.6
“`

以下のコマンドを入力して、アプリケーションを作成していきます。

“`rb:ターミナル
cd desktop
rails new youtube_sample
cd youtube_sample
“`

# YouTubeURLの種類

## 1. パソコンでのYouTube閲覧時のURL

![Sc

元記事を表示

Rails開発環境でBootstrapが効かなくなってしまった時にしたこと

Railsの開発環境でassets:precompileは通常不要だが、やってしまったときにBootstrapがブラウザに反映されなくなり、しばらくはまってしまったのでその時にやったことを備忘録で記載します。

環境

macOS Big Sur(11.6.6)
rails 6.1.6
Bootstrap 4.5.3

:::note warn
警告
Bootstrapの導入にはWebpackerで入れる場合とassetsに入れる場合とがありますが、前者でやっています。
https://qiita.com/kazutosato/items/d47b7705ee545de4cb1a
:::

原因

開発環境でassets:precompileをしたことにより、public/assetsが生成されてしまい、そちらを見に行ってしまうようになり、以降のcssの変更なども反映されない。Bootstrapも読み込んでいない。

解決

assets:precompileによってできてしまったファイルを削除する。

念の

元記事を表示

【Ransack】セレクトボックスでソート機能

# はじめに??

Ransackを使い検索機能を実装している個人開発サービスにて
下記画像のようなソート機能を実装する際に少し面倒だったので、備忘録も兼ねて記します。

### 環境?
– Ruby `3.0.1`
– Ruby on Rails `6.1.4.4`
– 【gem】 [Ransack](https://github.com/activerecord-hackery/ransack)

### 想定読者?
– ransackでのソートをデフォルト表示からセレクトボックスでの選択に変えたい人

# ①セレクトボックスの選択肢にリンクを貼る?
まず、ただのセレクトボックスだと選択したところでリンク先に飛ばないので、
`

“`

元記事を表示

Goormで学習をすすめる “Web開発で学ぶプログラミング”

こちらの記事を参考に、Goorm にて開発を行いたい初学者の為に、
細かな変更箇所を追記しておきます。
https://zenn.dev/odentravel/books/e69a157daeecb3/viewer/379433

(追記予定)

![スクリーンショット 2022-05-24 12.28.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33092/a71ac3c5-7f42-4e2b-fa3b-2f583966f3a6.png)
右上にある**新しいコンテナ**をクリックしてください。
コンテナ名 **traveler**
地域 **Seoul (KOR)**
公開範囲 **Private**
テンプレート **基本テンプレート**
配備 **Not used**
ソフトウェアスタック **Rails**を選択
以上の情報を入力、選択し、コンテナを作成してください。
作成には時間がかかります。

作成されるとロードが入り、このようなページに入ります。
![スクリーンショット 202

元記事を表示

OTHERカテゴリの最新記事