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

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

【個人開発】正規表現を学ぶ狩りに出ませんか?モンスターを倒しながら正規表現が学べるゲーム「Regex Hunting」を作りました

## はじめに
はじめまして!
個人開発者の[ハガユウキ](https://twitter.com/KvOKJo6SH85w2Q8)と申します。

突然ですが、皆さん正規表現はお好きですか?
私は好きです。「複数の文字列を一つのパターンで表現できる」部分にすごく面白味を感じています。
もっといろんな方に正規表現を知っていただきたい、好きになってほしいと思っています。

しかし、現状では2つの課題があると感じています。
– 正規表現の勉強自体がそもそも面白くない。
– 正規表現を勉強しても、しばらく使わないと忘れる。

この2つの課題を突破できるサービスは、現状存在しません。
そのため、楽しみながら正規表現を学べるサービスがあれば良いなと思いました。

**作りました。**

▼スライド型正規表現学習ゲーム【Regex Hunting】
https://www.regex-hunting.com/
(※) 端末はPC、ブラウザはChromeが推奨です。
![ogp.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.co

元記事を表示

【開発未経験】Railsでサ活(サウナ活動)を管理できるアプリを作成しました。

# 1.はじめに
本記事を閲覧いただきありがとうございます!
転職活動用のポートフォリオとしてRailsでサ活(サウナ活動)の記録を管理するためのアプリを作りました。この記事はアプリの紹介や作成した経緯をまとめたものです。

## 自己紹介
– メーカー勤務の24歳。4月で新卒3年目になりました
– 働きながら毎日プログラミング学習中
– サウナとサッカーが大好き

# 2.作成したアプリについて
サウナ好きがサ活(サウナ・水風呂・外気浴の時間)を記録して管理するためのアプリです。
– アプリ名: **『ととのい』**

– アプリURL: https://totonoi.org/
– GithubURL: https://github.com/matsuken314/onsen_app

ホーム画面からゲストログインできます。(その他、新規登録画面からも可能です。)
![guestlogin.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1584967/bd92403f-750e-2f50-3801

元記事を表示

【Rails】1つのform_withで複数のテーブルに保存をかける

こんにちは。

既存の投稿フォームからジャンル情報を保存できるように
form_withを加筆修正することになりました。
その際様々な記事を参考にさせていただきましたが、
中々に上手くいかず多くの時間を溶かしました。
非常に非常に非常に苦労を要したので、ここにアウトプットし
知識の整理と共に同じく苦労している人の一助となればいいなと思います!

尚、今回試行錯誤を繰り返して実装したので
指摘箇所がございましたらご教授いただけますと幸いです。

## :ok_woman: 対象

– 一つの`form_with`で複数のテーブルに保存をかけたい。
– `accepts_nested_attributes_for`を使用せずに実装したい。
– `to_model`を使用せずに実装したい。
– Form Objectで実装したいけど、詰まっている。

## :rolling_eyes: はじめに

前提として、通常の新規投稿と編集削除ができる状態からスタートします。
また、今回は`CarrierWave`と`Devise`を使用しており、それらの実装などは省略いたします。
Railsバージョ

元記事を表示

deviseを使用時に名前を表示できない時の解決方法

## 困っていたこと

以下のコントローラ、ビューの記述でサインイン後ユーザのnameが表示されると思っていましたが表示されません。
rails cなどで調べるとそもそも新規登録時に名前が保存できていませんでした。

*users_controller.rb
“`ruby
def show
@user = User.find(params[:id])

end
“`
*/users/show.html.erb
“`ruby

Users#show

<%= @user.name %>
“`

userテーブルにもnameの記述をしているしどこが原因を調べていました。

“`ruby
create_table “users”, force: :cascade do |t|
t.string “email”, default: “”, null: false
t.string “encrypted_password”, default: “”, null: false
t.string “reset_password_

元記事を表示

【超簡単】RubyonRails 投稿時間をInstagramのようにする 〜 ◯日前,◯時間前,◯分前 〜

# はじめに
とっても雑な記事ですが、少しでも誰かに役に立てばと思い記事にしました。

## 前提
簡単な投稿機能が実装済みであること
Railsの基礎的な知識を身につけていること

## 実装方法

### コントローラー
投稿時間を計算するために、コントローラーで今日の日付や、現在時刻を取得します。

“`tweets_controller.rb
class TweetsController < ApplicationController def index @today = Date.today #今日の日付を取得 @now = Time.now #現在時刻を取得 @tweets = Tweet.all #tweeetsテーブルの全レコードを取得 end (略) ・ ・ ・ end ``` ### ビュー 投稿時間に関するところの解説は下に記載しております。 ```erb:tweets/index.html.erb

<% @tweets.each do |t| %>

元記事を表示

WindowsでのVagrantを用いたRails6環境構築

# 初めに
ローカルでRailsの環境構築を行いCloud9(AWSの統合開発環境)の環境をローカルで再現したかったが、Rails5とRails6を切り替えて開発を行いたい・という背景と仮想環境はかっこいい!!という安直な発想からVagrantを用いて環境構築を行うこととした。
今回はRails6の環境構築を行います。
間違えたことをしていたらコメントにてご指摘いただけれると大変助かります。

# 使用環境
Windows 10

# Vagrantで構築したい環境
大雑把に以下の構成で構築したいと考えています。
– ruby 2.6
– rails 6.1.4
– ImageMagick
– sqlite
– mysql(本番環境用)
– Node.js 16
またrailsではjavascriptランタイムが必要になるためNode.jsのインストールも行います。

# 手順
目次になっているので以下を参考にしてください
1. [VirtualboxとVagrantのダウンロード](#1-virtualboxとvagrantのダウンロード)
1. [Vagrantを用いたCentOS

元記事を表示

さくらvpsにRailsアプリをデプロイするまで (4) Homebrew導入

# 1. Homebrewを入れたい
 ローカルと同様に、さくらvpsにもHomebrewを入れてみようと思った。ひとまず公式ページから以下の文面をコピペしてやってみる。

https://brew.sh/index_ja

“`
# /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”
“`

そうするとエラーが出た。

“`
略….
curl: (1) Protocol “https” not supported or disabled in libcurl
“`

curlがhttpsに対応してないらしい。なんと。ためしに`curl -V` とやるといっぱいでてきたけどhttpsの文字はなかった。
コピーをとってなかったが、たしか初期にあったバージョンはcurl v 7.2くらいだった。

yumでcurlのバージョンアップをしようとしたが、バージョンが上がらなかった。どうしよう。パッケージからやっていくことにした。

# 2.

元記事を表示

Rails x Nuxt.jsのSPAをECSのfargateへデプロイする際にハマったこと・その対処法

## はじめに
[こちらの記事](https://zenn.dev/hibriiiiidge/books/49ee4063b10cec1df1a2/viewer/2ac314f5633e674d4b0c)を参考にデプロイしてハマったこととその対処法を備忘録として書いていきます

# 1. Zeitwerk::NameError
Railsアプリのタスクが起動せず以下エラーが発生
“`
Unable to load application: Zeitwerk::NameError: expected file /app/app/controllers/hoges_controller.rb to define constant HogesController, but didn’t
“`
ディレクトリ構成が`controllers/v1/コントローラのファイル`となってるところを、1つ上を読み込んでしまっている状態

## 対処法
application.rbに以下を追加
“`:api/config/application.rb
config.autoloader = :class

元記事を表示

プロジェクトのgem, 端末にインストールされるgem,どっちを使うか指定する方法

## gemとは?
2つの意味があります。
1. **Rubyのライブラリ** のことです。詳細は[こちら。](https://www.ruby-lang.org/ja/libraries/)
1. **gemを管理するパッケージ管理ツール**の名前

ただ、gemというツールでパッケージを管理すると、依存関係で問題が発生することがあります。
そこでBundlerが登場します。

## bundlerとは?
依存関係を考慮してgemを管理してくれるパッケージ管理ツールです。
https://bundler.io

## Gemのインストール方法は大きく2種類

1. 端末全体で使えるタイプ(globalインストール)
mac,windows内のどこでも使えるようになる。
1. プロジェクト(特定の階層)でのみ使えるタイプ(localインストール)
作っているアプリの中で使えるようになる。

# 結論

### `bundle exec`をつける = ローカルインストールのgemが呼ばれる
例)
“`
bundle exec rails g controller users

元記事を表示

ActiveSupport::Concernでモジュールを作る

## Concernとは
Concerntとは「関心事」という意味で、Railsではコントローラやモデルの一部の概念や機能を実装するモジュールのことを指します。Concernを用いることで、ある特定の概念や機能をコントローラやモデルから切り出すことができ、複数のコントローラやモデル間で使い回すことができます。クラス、モジュール間のincludeやextendの説明はここでは省きます。

## スコープ
以下のようにPhotoモデルとVideoモデルに共通のスコープが定義されていたとします。

“`ruby:photo.rb
class Photo < ApplicationRecord scope :display_member_only, -> { where(member_only: true) }
end
“`

“`ruby:video.rb
class Video < ApplicationRecord scope :display_member_only, -> { where(member_only: true) }
end
“`

このとき、以下

元記事を表示

【Rails エラー】 NameError (uninitialized constant クラス名)

Rails cで、Rails: NameError (uninitialized constant クラス名)のエラーに遭遇。

以下を試したところエラーが消えました。

“`
$ exit #rails cから一旦出る
$ spring stop
$ rails c #もう一度、rails c
“`

元記事を表示

rails db:seed 重複データを削除する方法

rails db:seedは上書きされると勘違いしており、
rails cで確認するとデータが重複していた。
データベースの中身をリセットしてから、再度 rails db:seedを実行する。

“`
$ rails db:seed:reset
“`

“`
$ rails db:seed
“`

元記事を表示

【Rails・備忘録】deviseについて

## はじめに
こんにちは、だいごです。
今回は、Railsにおいてユーザー管理機能を簡単に実装することができるdeviseについてまとめていきます。
よかったらご覧ください。

## deviseとは
![ダウンロード.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2600899/ca14f8c0-fd99-61b1-a4cc-58424d886b96.png)

ユーザー管理機能を簡単に実装するためのGem(※1)。
ログイン、サインアップなどのログイン機能を1から構築するのはかなり大変ですが、Deviseを利用することで簡単に実装することが出来ます。

deviseで実装できる主な機能としては、
– サインアップ機能
– サインイン機能
– アカウント編集機能
– パスワード変更機能
– メール認証機能
– アカウント凍結機能

(※1)RubyGemsにはたくさんのライブラリがあり、それぞれをGemと呼ぶ。

## deviseの使い方
ここからはdeviseのインストールからデバイス関連の

元記事を表示

RailsでHerokuに初期データが反映されなくてハマってました

# はじめに
seeds.rbを本番環境に反映させようとしたがうまくいかずに困ってました。
無事にherokuに反映することができたので、メモ用に投稿します。
## 自分の環境
* Rails 6.0.3
* Ruby 2.6.3
* AWS Cloud9
## 前提
seeds.rb作成済み
## 初期データの投入方法
### ローカルの設定を完了させる
“`
$ rails db:migrate:reset
$ rails db:seed
“`
### gitにプッシュする
“`
$ git add -A
$ git commit -m “メッセージ”
$ git push
$ git push heroku
“`
### Herokuのデータベースをリセットする
“`
$ heroku pg:reset DATABASE
“`
### herokuでマイグレーションを実行する
“`
$ heroku run rails db:migrate
“`
### seedデータを投入
“`
$ heroku run rails db:seed
“`
これで初期データの

元記事を表示

【M1 mac】 An error occurred while installing mysql2 (0.5.3), and Bundler cannot continue.

### M1 macでmysql 0.5.3がインストールできない

データベースをMySQLでrails newをしたところ、下記のエラーに遭遇。
“`
$rails new myapp –webpack=react –database=mysql -T

….省略
An error occurred while installing pg (1.3.5), and Bundler cannot
continue.
Make sure that `gem install pg -v ‘1.3.5’ –source ‘https://rubygems.org/’`
succeeds before bundling.

In Gemfile:
…省略
“`

[こちら](https://zenn.dev/kosuke_ito/articles/0d508035bcd570)の記事のおかげで無事にインストールできました!!

“`
$ brew install openssl
$ echo ‘export PATH=”/opt/homebrew/opt/openssl

元記事を表示

RailsでSafariとChromeでPDFを表示する

## ブラウザ対応

– Active Storage

| ブラウザ | iframe | object | embed |
| —- | —- | —- | —- |
| Chrome | ○ | ○ | ○ |
| Safari | ○ | x | x |

– Carrier Wave

| ブラウザ | iframe | object | embed |
| —- | —- | —- | —- |
| Chrome | ○ | ○ | ○ |
| Safari | ○ | ○ | ○ |

Carrier Waveを使用している場合は何も気にしなくて良いけど、Active Storageの場合は`object`や`embed`を使用するとPDFが表示されないため、`iframe`を使用する必要がある。

## 記述方法

– iframe
“`rb