Rails関連のことを調べてみた

Rails関連のことを調べてみた
目次

【個人開発】起承転結でリレー小説できるアプリ「言の葉つむぎ」を作りました【Next.js×Rails】

# はじめに
はじめましてこんにちは、とぴ([@topi_log](https://qiita.com/topi_log))と申します。
オンラインプログラミングスクールにてRuby on Railsをメインに学習しつつ、自主学習としてフロントエンドも勉強しています。
3/30にリレー小説ができるアプリをリリースしたので、アプリ紹介と技術、感想をまとめさせていただきます。
こういった記事は初めてですのでお手柔らかにお願いいたします。

# 目次
1. 作成経緯
1. Webアプリ紹介
1. 技術スタック
1. こだわったところ
1. 反省点
1. 感想

# 1.作成経緯
オンラインプログラミングスクールにて文化祭のような受講生主催のイベントがあります。元々作っていたアプリの応募が間に合わないと判断し、急遽イベントのために別のミニアプリを作ることにしました。
そうして生まれたのが今回ご紹介するアプリ「言の葉つむぎ」です。
3/18に開発を開始し、3/30にリリースしたので制作期間は12日ほどです。

# 2.Webアプリ紹介
物語というバトンを繋いで1つの小説を完成させる、リレー小説を

元記事を表示

Wheneverのタイムゾーン適用

### はじめに
Railsアプリケーション開発時に、Whenever gemを使用してCronジョブをスケジューリングすることは非常に一般的です。しかし、サーバーのタイムゾーンとアプリケーションのタイムゾーン設定が異なる場合がよくあります。このような状況でWhenever gemを使用する際にタイムゾーンを適切に扱う方法について説明します。

### 基本設定の問題点
Railsアプリケーションで`config.time_zone`を設定しても、Whenever gemを使用して設定したCronジョブはこのタイムゾーン設定を自動的に認識しません。例えば、アプリケーションがAsia/Tokyoに設定されている場合、毎日9時30分にジョブをスケジューリングするためには、サーバーのタイムゾーン設定に合わせて時間を調整する必要があります。

### 対策
Whenever gemを使用する際にRailsアプリケーションのタイムゾーン設定を明示的に適用したい場合は、以下のようにTime.zone.parseメソッドを使用してタイムゾーンを処理することができます。

“`ruby
requir

元記事を表示

なぜ、Strong Parameters がいいのか

# はじめに
Railsを学習していて、
なぜ、Strong Parametersが重要なのか、マスアサインメントではなぜダメなのかを
整理したくて記事にしてます。
## この記事を読むと分かること
* Strong Parametersがどういうものか分かる
* なぜ、マスアサインメントがダメなのかが分かる
## Strong Parametersとは?
Strong Parametersは、Action ControllerのパラメータをActive Modelに
「マスアサインメント」で渡すことを良しとしない。:x:

開発者側はアップデートしたいパラメータを、
Active Controllerで明示的に指定する必要がある。

要は、Active Controllerのアクションで本当に使用したいパラメータだけを
厳密に指定してモデルに渡してあげる事でより安全だよねというお話。

## マスアサインメントではなぜ、ダメか?
まず、**「マスアサインメント」** とは、
チェックされていないパラメータをまるごとモデルに保存する行為の事を言います。

以下のコードでは「マスアサイン

元記事を表示

cloneしたリポジトリが要求するRubyバージョンが新しい時のアップグレード手順

# この記事を読んでほしい人

– rails6から7へのバージョンアップがうまくいかない人
Rubyのインストール時に`make: *** [build-ext] Error 2`のようなビルドエラーが出て、進めなくなっている人です。

– macOSで開発環境を構築している人
新しいプロジェクトを始める際や、職場や個人のプロジェクトで特定のRubyバージョンを必要としていて、それに合わせて環境をセットアップしようとしている人です。

# Ruby 3.2.0のインストールに失敗した時の対処法

Rubyの新しいバージョンのインストールは通常簡単ですが、たまに予期せぬエラーに直面することがあります。この記事では、`rbenv` を使用して Ruby 3.2.0 をインストールしようとした時に発生した問題と、その解決法について詳しく共有します。

## 問題の説明

`rbenv`を使用してRuby 3.2.0をインストールしようとすると、`make: *** [build-ext] Error 2`というエラーが発生し、インストールが失敗しました。
“`
rbenv install

元記事を表示

ECS Scheduled Tasksで複数のRakeタスクの定期実行を管理

# はじめに
EC2インスタンス上でRailsアプリを稼働していた副業先のいくつかの会社で、Rakeタスクやrails runnerコマンドを定期実行するためにwhenneverなどを利用していました。
Railsアプリをコンテナ化してECSで稼働する際、タスクの定期実行をどう管理するか改めて考える必要があったので、その一例を紹介します。
※実際に対応したのは2年前なので、今はもう少し良い方法もあるかもしれませんが、参考までに。

# 前提条件
共通する条件としては、以下のようなものがありました。
– 定期実行したいタスクだけが数個ある。
– タスク間の依存関係はなく、複雑なワークフローを組む必要はない。
– アプリがRuby on Railsで構成されており、ECS Serviceで稼働している。そこで利用されているDockerイメージを使い、Rakeタスクやrails runnerコマンドを実行したい。
– タスクの実行は15分以上かかる。

# ECS Scheduled Tasksの選定理由
前提条件のもと、なるべくシンプルな構成にすることを考えました。
ざっくりと以下のような

元記事を表示

【Rails7・Docker・Sidekiq】Sidekiq導入とメール自動送信のバックグラウンド処理の実装

## 自己紹介
はじめまして、はる([@lemonade_37](https://twitter.com/lemonade_37))と申します。
駆け出しエンジニアとして働き始めて約1ヶ月が経過しました🐣

## 概要
RailsアプリにSidekiq(redis)を導入し、メールの自動送信の機能を追加していきます。
この記事のために、メールを10分後に送信するだけのサンプルアプリを用意しました。
完成形のコードはこちらです。

https://github.com/satou-haruka-37/sidekiq_sample

### 環境
– Docker
– Ruby 3.2.3
– Rails 7.1.3
– Importmap
– Tailwindcss、daisyUI
– PostgreSQL

:::note warn
間違っている箇所や、紹介した方法よりも良い方法があるかもしれませんので、その際は教えて頂けると嬉しいです🙇
:::

## バックグラウンド処理とは?
Railsアプリケーションでは、ユーザーが特定の動作を行った際に「投稿する」「画面を表示させる」などのア

元記事を表示

Qiita で parallel_tests を後から入れた時にやった工夫

最近 Qiita で [parallel_tests](https://github.com/grosser/parallel_tests) による RSpec の並行実行を導入したので、どういう設定をしたかをまとめます。

## なぜ parallel_tests を導入したか

そもそもの導入のモチベーションは「CI にかかる時間と料金を減らせる」ということです。

Qiita では CI 実行に GitHub Actions を利用していますが、デフォルトのランナー (実行マシン) が CPU 2 Core になっています。(Ref: [GitHub ホステッド ランナーの概要 – GitHub Docs](https://docs.github.com/ja/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners#%E3%83%97%E3%83%A9%E3%82%A4%E3%83%99%E3%83%BC%E3%83%88-%E3%83%AA%E3%83

元記事を表示

【初心者】link_toの使い方【Rails】

# 初めましてlink_toと申します
私はrailsのview作成時、他のページに飛ばすため、使う目的のメソッドです。
ここ押したらサイト飛べるようにしたいな・・・
そういう気持ちから私は生まれました。
## 私はこういう風に使います。
“`ruby
<%= link_to 'untyoko', ヘルパーメゾットorURL %>
“`
こちらでuntyokoをひとつまみしていただきますと、
リンクに飛ぶシステムとなっております。

###### ※もちろんuntyokoでなくても結構です。

ヘルパーメソッドはorURLに関しましてはお好みのどちらかをご入力ください。

ちなみにヘルパーメソッドはルーティングエラーを出した時のHelperと書いてるものとなっております。
下のスクショで言うdashboads_pathとかproducts_pathとかですね。
rails内でページの移動をするときは、基本URLではなくヘルパーメソッドで書くのが嗜みとなっております。

![スクリーンショット 2024-03-31 20.02.28.png](https://qiita-image-

元記事を表示

【Rails 7】DBをテーブル表示

# DBをテーブル表示

## Gemをインストール
“`:Gemfile
group :development, :test do
gem ‘hirb’
gem ‘hirb-unicode’
end
“`
“`terminal:ターミナル
bundle install
“`
## コンソールで適用
“`terminal:ターミナル
rails console
Hirb.enable
“`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360425/a3383686-b7df-4b2d-3750-20023975c024.png)

元記事を表示

Railsチュートリアルのメールプレビューを見やすくした(gem letter_opener_web)

こんにちは!学びと成長しくみデザイン研究所の斉藤です。
Railsチュートリアルのメールプレビュー画面が見づらく使い勝手が悪いので、
`letter_opener_web` を導入して改善してみました。

# プレビュー画面(Before => After)

## Before

![1](https://raw.githubusercontent.com/SaitoJP/engineer_nootebook/main/images/202403/20240331_001.png)

## After

![2](https://raw.githubusercontent.com/SaitoJP/engineer_nootebook/main/images/202403/20240331_002.png)

– メリット
– URLが `http://localhost:3000/letter_opener` でシンプルでわかりやすい
– 複数のメールプレビューを確認できる

# 導入手順

gem追加
“`ruby:Gemfile
group :develop

元記事を表示

「Ruby on Rails チュートリアル」でローカル環境を構築して「git push」まで実施する方法・後編

## はじめに

こんにちは、@kosei-matsubaraです。

Web系エンジニアの転職を目指して「Ruby on Rails チュートリアル」の学習を始めました。

「Ruby on Rails チュートリアル」の第一章を後半まで進んだところ「GitHub Codespaces」の自動ログアウトおよび再接続が手間だと感じるようになりました。

今後ポートフォリオを作り、Web系開発企業ではローカル環境での開発が前提になると想定しています。

したがって最初からローカル環境で開発を行い、早々に今後の作業環境に慣れた方がいいと考えローカルで開発構築することにしました。

ローカル環境構築までの手順を公開することで、同じく「Ruby on Rails チュートリアル」をローカル環境を構築する方のご参考になればと思い記事を投稿しました。

なお、[前回記事](https://qiita.com/kosei-matsubara/items/977a322ffbd1369f1924)は環境構築開始からRailsインストールまで、当該記事でRailsインストール以降から「git push」

元記事を表示

OSS活動としてRuby on RailsのGitHubにプルリクエストを作成した話

## きっかけ

Ruby on Rails の GitHub プロジェクト(https://github.com/rails/rails) にあるドキュメントファイル内に、いくつかタイポがあることに気づきました。
![01-github-readme-before.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/945225/25bed7bb-e1ed-1bc6-824a-36ff7d57924f.png)
赤線部の1つ「Depedencies」は、正しくは「Dependencies」ですね。
これらの誤記を修正しようと思いました。

本記事では Ruby on Rails の GitHub プロジェクトをサンプルに、プルリクエストを発行する方法を紹介していきます。

## GitHub pull request 作成までの流れ

### 1. 貢献方法を確認

まずはコントリビュートする方法や注意点を確認します。

一般的には GitHub プロジェクトの `README.md` と `CONTRIB

元記事を表示

Rails・MySQLのアプリをFly.ioでデプロイする

## はじめに
Fly.ioはRailsアプリをデプロイすることも可能なサービスです。

Fly.ioを使ってRailsアプリをデプロイする手順は他の記事にも書いてあるのですが、MySQLを使う場合の手順が見つけられなかったので記載します(PostgresSQLだとターミナルに表示される指示に従えば、自動的に環境作れるのですが、MySQLだとちょっと手順が増えるため、覚え書きとして記載します)。

また、Fly.ioのデプロイは無料という記事が出ていますが、それは少し前までの話で、今は一番安いプランでも月に$5かかりそうです。

> Plan料金: https://fly.io/plans

## 実行環境
実行環境は以下になりますが、別のOSでも若干コマンドが違うだけで大まかな手順は一緒になると思います。
– MacBook Air M3チップ
– lima(ubuntu22.04イメージ,aarch64)
– Docker version 25.0.4

## 手順
### 手順0: Railsアプリを作成する
Fly.ioにデプロイするためには、まずはRailsのアプリを作成して

元記事を表示

Railsアプリの開発で使ったDockerコマンド集

# 概要

普段から開発環境はDockerを使っていて、
仕事でよく使うDockerコマンドをまとめました。

:::note info
**前提**
– Railsアプリケーション・データベース・バックグラウンドプロセス(例: Webpackerなど)がそれぞれ独立したDockerコンテナで稼動
:::

### 【基本】コンテナの作成・起動・停止・削除
まずは、基本的に使うコマンドから。[コンテナID]は「`docker ps`」から確認できます
| コマンド | 役割 |
|:-:|:-:|
| docker build [コンテナID] | コンテナの作成 |
| docker start [コンテナID] | コンテナの起動 |
| docker compose up | コンテナの作成・起動 |
| docker stop [コンテナID] | コンテナの停止 |
| docker rm [コンテナID] | コンテナの削除 |

### バックグラウンド上でコンテナの作成・起動
`-d`のオプションはデタッチド・モードと言います。
バックグ

元記事を表示

Mac(M1)でrbenv install時に BUILD FAILEDになった場合の対処法

### 概要
`brew upgrade rbenv ruby-bild`してから、`rbenv install 3.1.4`をしたら、ruby 3.1.4 のインストールに失敗。
BUILD FAILEDのログは以下のような感じ。
“`sh
# `rbenv install 3.1.4` build failure log

readline.c:1903:37: error: use of undeclared identifier ‘username_completion_function’; did you mean ‘rl_username_completion_function’?
rl_username_completion_function);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
rl_username_completion_function
readlin

元記事を表示

RSpecで学ぶbuildとcreateの違い

# 初めに

こんにちは!taisei_codeです。
「書いて、慣れろ!」をしてると、前提知識の理解が浅いことで苦しみます。
焦らずに、知識を定着させましょう。ということで、FactoryBotのbuildとcreateについて理解できたので書きました。

# 問題

メールアドレスのバリデーション
“`ruby
validates :email, uniqueness: { case_sensitive: false }
“`

FactoryBotでテストデータを生成
“`ruby
email { “info@example.com” }
“`

テストデータで生成した小文字のメールアドレスと大文字のメールアドレス “`{ build(:admin_user, email: ‘INFO@example.com’) }“` が重複するケースを作る
“`ruby
RSpec.describe AdminUser, type: :model do
let(:admin_user) {build(:admin_user)}

describe “バリデーションの検

元記事を表示

[Gem][Rails][Postgresql] gem pg がinstallできない (Your version of PostgreSQL (9.2.22) is too old) 解決法

# 概要

Centos 7に Rails にgem ‘pg’ を入れたい。
そのまま`yum install postgresql-server` だとversion `9.2` が入るが、(以下)
最近の gem ‘pg’ を使うには `>9.3` である必要があるため、エラー

https://www.postgresql.org/download/linux/redhat/

“`
$ bundle install

Your PostgreSQL is too old. Either install an older version of this gem or upgrade your database to
at least PostgreSQL-9.2.
Error..
“`

# 補足

CentOS 7 にpostgresql-15 installの流れは以下。
“`
# Install the repository RPM:
sudo yum install -y https://download.postgresql.org/pub/repos/

元記事を表示

【個人開発】webアプリを作成しました【Rails,Javascript,MySQL,GitHub Actions,AWS EC2】

# アプケーション名
Quick Clean Restroom Map

# アプリケーション概要
最寄りの綺麗なトイレの位置をリアルタイムで案内し、トイレの情報を提供します。

# URL
https://cleanrestrooms.net

# 備考
EC2インタンスは通常時停止です。

# アプリケーションを作成した背景
外出先で最寄りの綺麗なトイレを探すのが困難なことがあります。Google Mapsでは公共のトイレは多く表示されますが、綺麗なトイレをすぐに見つけることは難しいです。同様の問題を抱えている方が多いと思い、ユーザー同士で綺麗なトイレの情報を共有できるアプリケーションを開発することにしました。

# アプリの画像
![トップ画面](https://i.gyazo.com/3e037bbd56ac2b56cfcd9005adc9072b.jpg)
![個別施設情報](https://i.gyazo.com/9a9f268fc201a86e010502b5d4a88d66.jpg)
![ルート検索](https://i.gyazo.com/7054e19512b2bb

元記事を表示

Ruby on RailsとReactでBlogアプリを作りました。

##

使用技術一覧






PHPerがRuby(Ruby on Rails)を約3年経験した結果

# はじめに
Hubbleでバックエンドエンジニアをしている @power3812 です。オブジェクト指向大好きマンで、神クラスを作れないかと模索の日々です:innocent:

今回はHubbleに転職して約3年経つので、振り返りの意味も込めてPHPerで一切Rubyを触ったことがなかった僕が、約3年Rubyを使った所感を書こうと思います!

# 筆者のサマリ
大学は電子情報で大学院は技術経営を学んでしました。大学院は21卒なので21卒で就活をして、サマーインターンでWeb開発を知り、PHPと出会い、Web開発の沼にハマりました。

しかし、大学院にいるよりも早く実践を積みたいと、大学院を中退し、20卒としてソーシャルゲーム会社に就職しました。
ソーシャルゲームということで、PHPをそのまま経験、その後受託系の会社に転職し、そこにはPHPerKaigiの運営にも携わっている方にPHPの真髄を叩き込まれました。

その後、自分が完全未経験のRubyで開発しているHubbleに入社しました。

# 結論
RubyもPHPも本質はなにも変わらないです。
これはその通りと言えば、その通りのこ

元記事を表示

OTHERカテゴリの最新記事