Rails関連のことを調べてみた2021年12月19日

Rails関連のことを調べてみた2021年12月19日

herokuで急にrailsがdeployできなくなった

# 起こった事象

– 急にherokuでrailsがdeployできなくなった
– メールで「Automatic deployment of app名 failed.」とくる
– 構成は下記
– rails6
– webpacker 4.3.0

# 対処

結論から言うとherokuのnodeのversionが上がってwebpackerで使っていたnode-sassのversionが対応しなくなってdeployできなかった

対処法としては下記

– webpackerのversionを上げて現在のherokuのnodeに対応したものにする
– herokuのnodeのbuild packを入れてversionを指定する

後者が楽だがwebpackerが古すぎたのとwebpackerで使っているnode-sassがもう非推奨になっていたためこの機会にwebpackerをversionアップしてnode-sassも消そうと思った。

## webpackerのversionアップ手順

苦しんで覚えるwebpackerのバージョン更新
https://zenn.dev/t

元記事を表示

Ruby/Railsで画像に文字を入れ込む

こんにちは。エンジニアのronです。

SmartHRは、Rubykaigi 2021 Takeoutでスケジュールアプリを提供しました。
https://tech.smarthr.jp/entry/2021/11/02/204403

実はその中で、スケジュールページで設定した一言コメントがOGPに反映されるようにしていました。
これは、Twitterで自分の視聴予定をシェアしてワイワイ盛り上がってほしいという気持ちから実装したものです。

![スクリーンショット 2021-12-18 13.56.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87285/a9252262-b996-5e2d-08cc-9761190ac618.png)

今回は、どうやって画像の生成を行っているのかを解説していきたいと思います。

## 画像の生成方法
Rubyで画像を生成する方法はいくつかあります。
– imagemagick
– Thinreports
– wkhtmltoimage
などが候補になりま

元記事を表示

【Rails】deviseで複数モデル設定した時の遷移先変更方法【初学者の疑問点を簡潔に解説】

## はじめに
 本記事は、プログラミングの学習を始めて1ヶ月の初学者が、学習を進めていて疑問に思った点について調べた結果を備忘録も兼ねてまとめたものです。
 そのため、記事の内容に誤りが含まれている可能性があります。ご容赦ください。
 間違いを見つけた方は、お手数ですが、ご指摘いただけますと幸いです。

## deviseで複数モデル設定時の遷移先の変更方法

“`application_controller.rb
class ApplicationController < ActionController::Base # ログイン後のリダイレクト先 def after_sign_in_path_for(resource_or_scope) if resource.is_a?(Admin) admin_orders_path else root_path end end # ログアウト後のリダイレクト先 def after_sign_out_path_for(resour

元記事を表示

そうだ、Batch処理を使おう!【Rails】【タグ機能】【Whenever】【cron】

# はじめに
こんにちは!DMM WEBCAMP Advent Calendar 2021 :christmas_tree: 19日目を担当させていただく@smasa1112です!

今回で初のqiita投稿ですのでお見苦しいところ多々あるかと思います
どうか温かい目で見守っていただけますと幸いです…

本日は初学者の方が中級者になるときに使うであろうBatch処理とそれを有効に使えるであろうタグ機能に関連することを書いていきます!

## 目次
1. [Batch処理とは](#anchor1)
1. [目標](#anchor2)
1. [完成系](#anchor2-1)
1. [ER図](#anchor2-2)
1. [実装](#anchor3)
1. [使用環境](#anchor3-1)
1. [タグ機能の処理](#anchor3-2)
1. [Batch処理](#anchor3-3)
1. [最後に](#anchor4)
1. [参考記事](#anchor5)

元記事を表示

RailsでFace APIを扱うので噛み砕いてみた◎

## はじめに
RailsでFace APIを扱う記事が少なく実装に一手間かかってしまったので、
初歩的ですが今後同じように開発する方がスムーズに実装できるようにこの記事が手助けになれば幸いです!m(_ _)m

## この記事に期待できること

– RailsでFace APIを扱うためのコードを理解できる
– リクエストするデータについての理解が深まる(おまけ)

前提としてREST APIについての知識があればより理解してもらえると思います。

## Face APIについて
本題に入る前にFace APIとは?の説明をしておきます。

Microsoftが提供するAzure APIと呼ばれるサービスの一つです。

公式サイトは[こちら](https://azure.microsoft.com/ja-jp/services/cognitive-services/face/)
Face API詳細については[こちら](https://westus.dev.cognitive.microsoft.com/docs/services/563879b61984550e40cbbe8d/o

元記事を表示

【Rails】ModelのPKをULIDに変更する

## やりたいこと
モデルのPKをULIDに変更し、モデル生成時に自動でULIDがPKとして設定されるようにしたい。

### なぜULIDをPKに利用しようと思ったか
Railsは初期値としてPKが`bigint auto_increment`で設定されています。
そのため、`edit`や`show`などのPKを含むルーティングを行う際、PKがURIに表示されており、`rails generate model xxx`で生成したものをそのまま利用すると、別レコードのIDが推測できる状態になってしまいます。

“`url
http://localhost:3000/user/1/edit
-> もしかしたら、user/2/editというルートもあるかも。。。?
“`

-> もし適切なアクセス制限ができていなければ、ユーザが直接URIを変更すると、ユーザに関係のないデータまで閲覧・編集ができてしまう恐れがあります。

## 開発環境
* WSL2
* Ubuntu 20.04 LTS
* Rails 6.1.3.1
* ruby 2.7.3p183 (2021-04-05

元記事を表示

【Rails】ログイン、ログアウトって結局なに?

# 概要
Railsのログイン関連処理について、
Railsチュートリアルの第8章をもとに整理。

## 環境
ruby 3.0.2
rails 6.1.4

## ログイン関連の用語

### HTTP
– ステートレスなプロトコル
– ブラウザページを移動した時に、ユーザーのIDを保持しておく手段が無い

### session
– 半永続的な接続
– コンピュータ間(ブラウザとサーバの間)に設定する
– HTTPプロトコルより上の階層のため、HTTPの特性とは別に接続を確保できる
– sessionメソッド:ブラウザを閉じると自動的に終了する一時セッションを作成。

### cookies
– ユーザーのブラウザに保存される小さなテキストデータ
– ページ移動しても破棄されないので、ユーザーID等を保存可能
– アプリケーションは、このcookiesのデータを使用してDBから情報を取り出せる
– cookiesメソッド:ブラウザを閉じても終了しないセッションを作成。

## ログイン機能の実装

### RESTfulなセッション
セッションをRESTfulなリソースとしてモデリ

元記事を表示

【docker-compose】 railsで Unknown MySQL server host ‘db’ (-2)が出た時の対処法

# 概要

ついさっきまで動いていたはずのmysqlコンテナが動かなくなりました。
`docker-compose logs`を実行すると以下のようになってました。

![スクリーンショット 2021-12-18 17.52.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461885/bfbc165c-5624-9fe2-97e6-525dc3ff075d.png)

# 試したこと①

なんとなく下記のエラーが怪しいのでは?と思い`ib_logfile`を削除してみましたがダメでした。

“`
db_1 | 2021-12-18T08:42:07.483929Z 0 [ERROR] InnoDB: redo log file ‘./ib_logfile1’ exists. Creating system tablespace with existing redo log files is not recommended. Please delete all redo log file

元記事を表示

Ruby on Railsでアプリを作る【Progateまとめ】

#はじめに
まずは、railsがしっかり起動するかを確認する。
以下、全てターミナルで作業する。
Macの人はSpotlightでターミナルを検索して、表示させる。

##railsのインストール確認
“`terminal
rails -v
“`
これで、「Rails is not currently installed on this system.」と表示されたら、railsがインストールされていないので、インストールする。

##インストール方法
“`terminal
gem install rails
“`
これでインストールされるはずだが、「You don’t have write permissions for the /Library/Ruby/Gems/2.6.0 directory.」と表示される場合は、こちらのやり方がおすすめです。
非常に丁寧に記載されており、初心者の私でも躓くことなくrailsをインストールすることができました。
https://qiita.com/nishina555/items/63ebd4a508a09c481150
https:/

元記事を表示

M1 MacでGCP Cloud RunへRails6デプロイするtutorial試したので詰まったポイントをメモ

前回[M1 MacでGCP Cloud RunのQuickstart(ruby版)試したので詰まったポイントをメモ](https://qiita.com/ryan5500/items/ddb74f0b0bb5751647d6)で、sinatraアプリをCloud Runにデプロイした。

次はRailsを試してみる。

* GCP Cloud Runに
* Ruby v3.0.3で Rails 6のアプリを
* M1 Macの環境から

デプロイしてみる。

ちょうどRails6を利用したチュートリアルが用意されているので、それをやっていく。

[Cloud Run 環境での Rails の実行](https://cloud.google.com/ruby/rails/run)

# 準備

今回実験に使うプロジェクトをgcloudのデフォルトプロジェクトとして設定したい。
プロジェクトIDを探しにブラウザを動かすのがめんどくさい場合、CLIでも探すことができる。

“`bash
$ gcloud projects list
PROJECT_ID NAM

元記事を表示

なぜModel::ActiveRecord_RelationオブジェクトはModelに定義されたクラスメソッドを呼び出せるのか調べてみた

こんにちは。株式会社iCAREでサーバーサイドエンジニアをしている越川と申します。
この記事は、[iCARE Dev Advent Calendar 第2レーン](https://qiita.com/advent-calendar/2021/icaredev) の18日目です。

今回は、なぜModel::ActiveRecord_RelationオブジェクトはModelに定義されたクラスメソッドを呼び出せるのか調べてみました。

環境
Ruby 2.6.9
Rails 6.1.4

# 前準備

pry-railsとpry-byebugをinstallしておきます。

“`ruby
# Gemfile

group :development, :test do
gem ‘pry-rails’
gem ‘pry-byebug’
end
“`

“`terminal
$ bundle install
“`

次に、ApplicationRecordを継承した適当なクラスにscopeとクラスメソッドを定義しておきます。

“`ruby
class User

元記事を表示

【Rails】deviseで使用できるヘルパーメソッド一覧

## はじめに
 本記事は、プログラミングの学習を始めて1ヶ月の初学者が、学習を進めていて疑問に思った点について調べた結果を備忘録も兼ねてまとめたものです。
 そのため、記事の内容に誤りが含まれている可能性があります。ご容赦ください。
 間違いを見つけた方は、お手数ですが、ご指摘いただけますと幸いです。

## deviseで使用できるヘルパーメソッド一覧

“`

before_action :authenticate_user!   # コントローラーにの先頭に記述して、ログイン済ユーザーのみにアクセスを許可する。onlyで特定のアクションのみに設定したり、exceptで特定のアクションを除外することができる。

user_signed_in? # ユーザーがログイン済みか否かを判定する

current_user # サインインしているユーザーを取得する

user_session # ユーザーのセッション情報にアクセスする

“`

上記の`user`の箇所については、他のモデル名を使用している場合には、そのモデル名に書き換える必要があります。

### bef

元記事を表示

reCAPTCHA v3 に対して Autify でテスト自動化してみた

この記事は [Autify アドベントカレンダー2021](https://qiita.com/advent-calendar/2021/autify) の17日目のエントリです。

こんにちは! Autify カスタマーサポートエンジニアの hiroxyy です。
Qiita 初投稿となる本エントリでは、 reCAPTCHA v3 が導入されているサイトに対して Autify でテストを実行したらどうなるのか、その結果をまとめました。

# reCAPTCHA v3 とは
Google が提供している、人間と bot を識別するための API です。
以下のような特徴があります。

– サイトに訪問したユーザーにチェックボックスのチェックや文字識別のアクションを求めないため、ユーザビリティを低下させない
– API が返却するスコア(0.0 ~ 1.0)に応じてどう処理するかを、 **サイト側で実装する必要がある**
– サイトへのアクセスが増えるほど、API は学習し返却するスコアもそれに基づき変わる

また以下の公式の FAQ には、過去のバージョンである reCAPTCHA v

元記事を表示

refinarycms-blogの使い方

# 概要
refinarycms-blogの使い方について説明します
この内容について書かれている記事が少なかったので助けになれば幸いです
# 前提
既にrefinarycmsを導入したサイトにblog機能を追加する形で実装していきます
その実装方法については[こちらの記事](https://qiita.com/nanaho_mu/items/11c3c76b50217d4ad1be)で紹介しています
# 実装

## install
作成したrefinerycmsを導入したサイトのgemfileを開いて、一番下の行に下のコードを追加します。

“` :Gemfile
gem ‘refinerycms-blog’, git: ‘https://github.com/refinery/refinerycms-blog’, branch: ‘master’
“`

その後ターミナルで`bundle install`をしてください

※うまくいかない場合は`bundle update`をするとうまくいくことがあります

次にターミナルで以下のコマンドを実行して、blogのbackend

元記事を表示

refinarycmsの使い方

# 概要
・refinarycmsについての記事が少ない
・versionによってうまく動かない方法が多い
 などの理由で使い方を習得するのに苦労したので作成方法をまとめます

#準備
RefineryはImageMagickに依存するので、まずそれからインストールします。
OSXの場合一番簡単なのはHomebrewを利用する方法です。必要な作業は以下のコマンドを実行するだけです。

“` :terminal
$ brew install imagemagick
“`
# 実装
## install
Refinery gemをインストールします。

“` :terminal
$ gem install refinerycms
“`
## create application
新規のRefineryアプリケーションを作成するために、refinerycmsコマンドをアプリケーション名を指定して実行します。

“` :terminal
$ refinerycms refinary_sample
“`
※refinary_sampleはアプリ名なので自由に変えてください

#

元記事を表示

[devise][sorcery]ActionCable内でcurrent_userを使えるようにする方法

簡単に認証機能を実装できる`devise`, `sorcery`それぞれの`current_user`メソッドをActionCableにて使えるようにする方法を記載します。

## 前提

1:1のチャット機能を想定しております。

ActionCableの導入や説明などは割愛させて頂きます。

それぞれ`app/channels/application_cable/connection.rb`に記述していきます。

## devise

“`rb
module ApplicationCable
class Connection < ActionCable::Connection::Base identified_by :current_user def connect reject_unauthorized_connection unless find_verified_user end private def find_verified_user self.current_user = env['w

元記事を表示

error /node_modules/node-sass: Command failedの解決策

タイトルの通り、/node_modules/node-sass: Command failedのエラーが発生し、うまくWebpackが動作せず`Webpacker::Manifest::MissingEntryError`が発生しました。

その解決方法を残しておきます。

## 環境

“`
ruby 2.7.2
rails 6.0.3.4
node –version v16.0.0
“`

## エラー内容

`bundle rails webpacker:intall`コマンドを実行するとこのようなエラーが出ました。

“`
error /Users/xxx/xxx/xxx/node_modules/@rails/webpacker/node_modules/node-sass: Command failed.
Exit code: 1
Command: node scripts/build.js
Arguments:
Directory: /Users/xxx/xxx/xxx/node_modules/@rails/webpacker/node_modules/nod

元記事を表示

[Ruby on Rails]MVC仕組みについて「ひと言」「簡単に要約」(初心者)

###はじめに
初学者でたくさんのことを学ぶ中で忘れていたり、言語化してアウトプットするのが苦手なため書かせていただいております。

#まずMVCの各役割を説明

###Mについて

**要約**

“`
Modelは、データベース管理に関する役割
データベース内の該当するテーブルに対して、データの保存や保存されているデータの取得。
“`

###Vについて

**要約**

“`
Viewは、ブラウザに表示される見た目の役割
クライアントサイドに画面上に表示される見た目の事
“`

###Cについて

**要約**

“`
Controllerは、モデルやビューに処理を指示する橋渡しとなる役割
クライアントサイドからのリクエスト内容に基づきレスポンスを用意する。
“`

#MVCのメリット
###3点あります

“`
1,それぞれの役割が明確 (どこに何を書けばいいのかはっきりしている)
2,保守性が高い (処理の流れを把握しやすくエラーなどが起きた時に原因を特定しやすい)
3,チーム開発がしやすい (MVCによって分けるなど、効率的な開発ができる)
“`
#MVCの

元記事を表示

作品:フェイスブックの複製(Facebook Replica)

#概要

Odin Projectレッスンに従って作ったSNS。

レッスンURL: https://www.theodinproject.com/paths/full-stack-ruby-on-rails/courses/ruby-on-rails/lessons/rails-final-project

Github: https://github.com/RistoLibera/Facebook_Replica

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613718/6c8a0623-6e73-d559-7b8d-8efb7992305a.png)

作品URL: https://a-facebook-replica.herokuapp.com/

#使用技術
・HTML、CSS、Bulma
・Javascript
・Ruby、Ruby on Rails
・Heroku
・Git
・GitHub
・Oracle VM VirtualBox

#機能一覧
##ユーザー登録機能

Cr

元記事を表示

Rails 7.0 のリリースノートまとめ

## はじめに
2021年9月15日、Rails 7 のアルファ版がリリースされました。
通常、Rails のアルファ版リリースは行わないのですが、フロントエンドに大きな変更が加わることによって、慎重に検証する必要があると判断したみたいです。

ちょうど社内で Rails 7 についてアウトプットする場があり、良い機会なので情報をまとめてみたいと思います。

## 1. フロント面のリニューアル
まず Webpacker が廃止され、フロント面がリニューアルされます。
ES6 / ESM のブラウザサポートの進歩、HTTP/2 の普及、importmap の新標準に対応するためです。
具体的には、Turbllinks と Rails UJS が Stimulus と Turbo の Hotwire コンビに置き換わります。
node_modules、bundler の設定に依存せず、フロントの開発にありがちな問題も発生しません。

また、Rails と JavaScript + CSS bundler の統合も劇的に改善されたそうです。
Rails の新しい JavaScript と

元記事を表示

OTHERカテゴリの最新記事