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

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

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も本質はなにも変わらないです。
これはその通りと言えば、その通りのこ

元記事を表示

Railsで不定期タスクを簡単に管理する:Sidekiqの活用法

# 1. はじめに
自分は10月よりAPPRENTICE SHIP(内定直結型エンジニア学習プログラム)のカリキュラムに2期生として参加しています。
この記事はオリジナルアプリ開発の際に使用した、Sidekiqの備忘録として書いています。
間違いがありましたらご指摘いただけると幸いです
#### 読者対象
– Ruby初学者の方
– これからSidekiqを使おうか悩んでいる方
– RubyまたはRailsで非同期処理を行おうとしている方
– 不定期な時間で動く処理を実装しようとしている方
以上がこの記事の対象者となります。
# 2. Sidekiqとは?
[Sidekiq公式リファレンス](https://github.com/sidekiq/sidekiq)
SidekiqとはRubyで非同期処理を簡単に実装するためのライブラリになります。
#### 補足:そもそも非同期処理って?
– 簡単に言えば、サーバーのタイミングをみて手隙の時間に処理してもらう方法です。他の処理とタイミングが被っても他の処理が止まりません。
– 逆に同期処理にしてしまうと、重い処理を走らせた時に、完了する

元記事を表示

【個人開発】野球歴16年男が「野球の成績を記録して友達とランキング形式で共有できる」サービスを開発しました

## はじめに
私は小学校〜社会人2年目までの**約16年間**、野球漬けの毎日を過ごしていました。そんな野球男が**全ての野球人**に向けた **「野球の成績記録・共有サービス」** を開発しました。

このサービスは、試合ごとに**個人成績を記録**することで、**自動で「打率」や「防御率」**などを**計算**し管理することができます。そして、**LINEのグループ機能**のように簡単にユーザー同士でグループを作成し、グループ内のメンバーで **「打率」や「防御率」などの個人成績をランキング形式で共有・比較** することができます。

このサービスを作成したいと思った背景としては、私が野球部のキャプテンを務めている際に、選手の野球に対するモチベーション向上に課題を感じることが多くあり、その課題を解決するサービスを作成したいと思ったことがきっかけになります。そのため、ユーザー同士の成績をランキング形式で比較することで、ユーザーに対して競争心を与え、少しでもモチベーション向上のサポートに繋げたいと考えました。

そして、今回 **「BUZZ BASE | 野球の個人成績をランキング

元記事を表示

【個人開発】歯ブラシの情報収集と、リサイクルでの地球環境改善を目指すアプリを開発しました

## はじめに
はじめまして、Ryuseiと申します。
プログラミングスクールでRubyとRuby On Railsを中心に学習しているのですが、
歯ブラシの情報収集を行いながら、歯ブラシのリサイクルを広めていくアプリとして「歯ブラシLife! ~Make up environment~」(以下歯ブラシLife)を作成しました。

アプリURL: https://www.haburashi-life.com
Github URL: https://github.com/TAMETOMO8/Haburashi_Life

## なぜこのアプリを作ったのか?
以前からドラッグストアなどで、「歯の間が磨けていない気がするからこの歯ブラシを使おう」「今回はどんな歯ブラシを使おうか?」と店頭で見比べたり、実際に使ってみたりと歯ブラシに関心がありました。そんな中で、ふと「他の人はどんな歯ブラシを使用しているのか?」と疑問に感じました。他の人が使用している歯ブラシを知るサービス、アプリがないか調べましたが、調べた限りでは見つけることができなかったので、無いなら自分で作ってしまおうと考え、このアプリを

元記事を表示

【Rails + Docker】Render.comでMulti Environment Credentialsに対応する

## はじめに
Render.comでなにも考えずデプロイしたら、development環境でデプロイされてしまいました。
production環境でデプロイしたくて試行錯誤したのでその方法と詰まった点を簡単にまとめてみました。
Render.comに環境変数を追加するために今までdashboardから追加していました。
`.env`で環境変数を管理することも考えましたが、チーム開発の際の障害が大きすぎるので`credentials.yml.enc`での管理を考えました。

## Multi Environment Credentialsとは
credentialsは`rails5.2`からサポートされ始めた機能です。
機密情報を暗号化し、安全に保護するためのものです。
Credentialsを使えば、復号化キーを紛失、もしくは盗難にあわない限り、機密情報を保護することができます。
`rails6`よりMulti Environment Credentials機能が追加され、環境毎に秘匿情報を設定できるようになりました。

## 実際に設定する
最終的な`credentials.yml

元記事を表示

【Rails】find_eachで大量データを扱う

# この記事で言いたいこと
大量データのループ処理を扱う際には`find_each`がメモリ節約に有効である。

# きっかけ
先日、Ruby on Railsで大量データを扱う機会がありました。
その際`find_each`というメソッドがあることを学んだので、`each`との違いを明らかにしながらまとめていこうと思います。

# eachを用いた例
`Student`というモデルがあると仮定します。
studentsテーブルにある生徒の名前(nameカラム)を全員分出力したい場合、皆さんはどのようなコードを書きますか?

“`ruby
Student.all.each do |student|
puts student.name
end
“`

上記のように`Student.all`でレコードを全件取得してから`each`メソッドを使用することで、studentsテーブルにいるすべての生徒の名前を出力することができます。

レコード数が少ない場合は上記の例のように書くのがよいでしょう。
しかしレコードが大量にある場合は、上記のようにレコードを一気に取得する方法だとメモリ

元記事を表示

かんたんLINE botをつくろう!【クイズをつくる】

# はじめに

前回記事で物足りなかった方向けの記事です。

https://qiita.com/kohki_takatama/items/88927cf75ae1a5f683f2

## 課題:`postback`を使用してクイズを3問つくる

こんな課題を、前回記事の最後に出しました。
その解答例を載せておきます。

# 解答例

ヒント

`postback`を使うメリットは、
– `message`と違い、(非正規の)ユーザー操作で呼び出すことができない
– 「正しい回答」と「間違った回答」で処理をまとめられること(問題を増やしたときに、同じ処理を繰り返し書かなくてすむこと)

です。

特に、「正しい回答」と「間違った回答」で処理をまとめられること
これを実現してみてください。

条件分岐には、すでにあるものが使えます。
`def callback`の中の、`case event ~ when Line::Bot::Event::Message ~`を拡張しま

元記事を表示

RailsのModelで定義したenumの対応関係を確認する

## 背景
enumを設定したはいいものの、
一定数を超えると数字と文字の対応関係がわかりにくくなると思います。

そんな時にconsoleでパッと確認できますよ〜という内容です。

## 確認方法
まず、例として次のようなUserモデルがあるとします。

“`ruby
class User < ApplicationRecord enum :status, [ :active, :inactive, :suspended # ...省略 ] end ``` このモデルで定義されたstatus enumの数値と文字列の対応関係を表示するには、 rails consoleで以下のコマンドを実行します。 ```ruby User.statuses ``` これにより、以下のような出力が得られます。 ``` { "active" => 0,
“inactive” => 1,
“suspended” => 2,

}
“`

めでたし*2。

元記事を表示

【Rails】Youtube APIを使ってIDで動画を検索する

# はじめに
この記事では学習中に出会ったエラーとその解決までの道のりを自分のために記録しています。
初学者のため、理解が不十分なところがあるかもしれません。
その場合はご指摘いただけると幸いです。

# やりたいこと
YouTubeの動画IDから動画情報を検索し、タイトル・概要欄・サムネイルを取得する

# 準備
– APIキーの取得
– APIキーを環境変数に設定
– YouTube Data API v3を使うためのgemをインストール

この3つを準備していきます。

## APIキーの取得
– Google Cloud Consoleにログイン
– 新しいプロジェクトを作成

![77772AA8-87F8-4842-93B5-FAAF741B9554_1_105_c.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3671013/b59aafd9-fba9-448f-e181-76b62371327a.jpeg)

– 使用するAPIの有効化

**APIとサービス**の**ライ

元記事を表示

かんたんLINE botをつくろう!【Rails 応用編】

# はじめに

前回記事で作成した、以下のコードを改造していきます!

https://qiita.com/kohki_takatama/items/278b1f47e355e08df43a

“`ruby
class LinebotController < ApplicationController def callback body = request.body.read events = client.parse_events_from(body) events.each do |event| case event when Line::Bot::Event::Message case event.type when Line::Bot::Event::MessageType::Text message = { type: 'text', text: event.message['text'] }

元記事を表示

OTHERカテゴリの最新記事