Rails関連のことを調べてみた2023年10月01日

Rails関連のことを調べてみた2023年10月01日

ログを確認するのに毎回Railsアプリを立ち上げるのは意外と辛い

# はじめに
Railsの開発を進める中で、rails serverが起動するまでの待ち時間が意外とストレスでした。
一方で、development.logに出力されるログは多すぎて…

そこで、リクエスト時のログを各コントローラのアクションごとに管理できるよう、各フォルダに分割して出力するgemを作成してみました。

[custom\_log\_space \| RubyGems\.org \| コミュニティのgemホスティングサービス](https://rubygems.org/gems/custom_log_space)

# インストール方法
Gemfileに以下のように`gem ‘custom_log_space’`を追加して、`bundle install`を実行してください。

“`diff
group :development do
+ gem ‘custom_log_space’
end
“`

# 使い方
ローカルでrailsアプリを立ち上げて、画面にアクセスすると、log/custom_log_spaceディレクトリ配下に、以下の命名規則で、ログが出力

元記事を表示

ngrokにアクセスできない!

# はじめに
### ngrokとは?
ローカル環境のwebサーバを外部公開できるサービス。
ngrokをインストールし、以下コマンドを入力すると外部公開用のURLが発行され、
localhost:3000の内容を外部に公開することができます。
`ngrok http ポート番号`
※公開を止める時は「Ctrl + c」でいつでも公開停止できます

インストール方法については多数公開されているので割愛。
参考ページ:
https://labo.kon-ruri.co.jp/ngrok/

### 使いどころ
自分は以下のケースでよく利用します。
①自分は一時的にクライアントに挙動を確認してもらう時
②外部サービスとの連携時

# 本題
### 発生した問題
使いどころ②の外部サービスとの連携時に発生。
拡張機能を使用してwebサイトからエンドポイント(本番環境)にアクセスする実装があり、
エンドポイントをngrokで発行したURLに変更してテストを行っていたところ、
拡張機能からのアクセスがうまくいかない現象が発生した。

### 原因
ngrokは無料で使えるツールですが、無料の場合

元記事を表示

SorceryとDeviseの違いについて

# はじめに
皆さん、初めましてマッチョ?
現在、プログラミングスクールにて学習をしている “のぞみ” と言います。
私は現在、未経験からのエンジニア転職に向けて今年の4月から本格的に学習をスタートし、現在6ヶ月目に突入しております。
今回、学習中に気になった点があり深掘りする機会がありましたので、初めて技術記事を書かせていただきました。
# 概要
現在、《Ruby on Rails》を用いたポートフォリオについてアイデアを考えている段階なのですが、
その際 ”認証機能” の実装について調べている時に、ふとこう思いました。

**「認証機能実装のGemって、”Sorcery” と “Devise” の2種類あるけど、どう違うの??」**

今回はそんなふと感じた疑問点について、初学者なりに纏めた内容となっております。
ですので、内容に誤り等がある場合がございますのでご了承下さい。
もし誤りに気づかれた際は、コメント等でご教授いただけると助かります?‍♂️
# Sorcery・Deviseについて
まず、”Sorcery”と”Devise”について軽く説明をしたいと思います。

“Sor

元記事を表示

ゲストログイン機能

ポートフォリオを作成するにあたってお試しで使いやすくするために、ゲストログイン機能を作成しました。

参考記事:[簡単ログイン・ゲストログイン機能の実装方法(ポートフォリオ用)](https://qiita.com/take18k_tech/items/35f9b5883f5be4c6e104)

(1)ルーティングに記述。
“`
devise_scope :user do
post ‘users/guest_sign_in’, to: ‘users/sessions#guest_sign_in’
end
“`

(2)「guest_sign_in」アクションを設定するため、「session_controller.rb」を作成し記述。
sign_in user でユーザーとしてログイン。
“`
def guest_sign_in
user = User.guest
sign_in user
redirect_to posts_top_path
end
“`

(3)ゲストユーザーを作成するメソッドをUser.rbに記述。
– 「find_or_create_b

元記事を表示

【Rails】renderで独自ドメインを公開する手順

# はじめに
お疲れさまです。
おおくまです。

以前にRailsで実装したアプリをrenderでデプロイしました。
以下は、独自ドメインを公開した手順になります。
備忘録として残したいと思います。

# 環境
Ruby 3.2.2
Rails 7.0.8
Webアプリケーションサーバ render
データベース PostgreSQL
**renderにてデプロイ済み**
**お名前.comにて独自ドメイン取得済み**

# 注意点
:::note warn
私はプログラミング学習中で、初学者です。
内容に誤りがある場合があります。
コメント等で教えていただけると幸甚です。
:::

# 手順

まず、renderにログインします。
ダッシュボードからデプロイしたアプリを選択します。
左のタブから「Settings」をクリックします。
下の方にスクロールすると「Custom Domains」という項目があります。
そこの「Add Custom Domain」というボタンをクリックします。
![スクリーンショット 2023-09-30 9.03.24(2).jpeg](https://q

元記事を表示

Rails + DockerでRails7を爆速環境構築する

# はじめに

– エンジニア歴半年 + αの備忘録
– 多分また使うからメモ
– 環境はMac Appleシリコン
– 今回はチームでの開発なので、各PCの環境に依存せずに開発できるように構築する〜

# やりたいこと

– Rails APIモード + Dockerでの環境構築

# 早速やっていく

### 今回作るディレクトリ構造

“`
app-name
├── // ここにRailsの各ディレクトリが生成されます(appなど)
├── Dockerfile
├── docker-compose.yml
├── Gemfile
└── Gemfile.lock
“`

これだけ〜〜〜超楽だわ

### Gemfileを編集

“`yaml
source “https://rubygems.org”
gem “rails”
“`

railsのバージョンは今回は指定しない。Gemfile.lockで固定していきます。

### Gemfile.lockを編集

Gemfile.lockは空でおけ

### Dockerfileを編集

“`yaml
FROM ruby

元記事を表示

スクールを卒業して実務経験4ヶ月で思ったこと

## はじめに
[Happiness Chain](https://happiness-chain.com/)というスクールを卒業してWebエンジニアとして4ヶ月働きました。
スクールと実務の違いや、未経験からエンジニアになった感想を書いていきます。
Web系エンジニアへの転職を目指している人の参考になれば嬉しいです。

## 私について
韓国人なので日本語がおかしいところがあると思います。
読みにくい点もあるかと思いますのでご了承ください。
未経験からエンジニアになった経緯は[この記事](https://qiita.com/parkon_hhs/items/5a63810866743cc7a3f6)で書いています。

## 実務の内容
自社開発に従事しており、ReactとRailsの両方を使う必要がある会社です。
そして、フルリモートでの業務になります。

#### 業界
金融関係のため、ドメイン知識も必要ですね。
#### スキル
実務で下記のスキルを使用しております。
– フロントエンド: React, Next.js
– バックエンド: Ruby on Rails
– インフ

元記事を表示

訪問した都道府県を日本地図に表示する方法

備忘録のために。
旅行した場所を投稿するアプリを作成する上で投稿をする→旅行した都道府県に色を付ける機能を作成しました。

参考までに。こんな感じです。
↓ ↓ ↓

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3557043/60ff4500-c97b-2bc5-115a-56614cfe441d.png)

◆参考サイト

[【Rails】日本地図を簡単に出力できるjapanMapの導入方法](https://miau-katze.com/2019/02/01/260/)

まずは日本地図の表示方法から。

(1)下記サイトよりjsファイルをダウンロードする。
[Japan Map(jQuery plugin)](http://takemaru-hirai.github.io/japan-map/)

解凍後のファイルの中から、
「jquery.japan-map.min.js」のみ
「app/assets/javascripts」 配下に格納。

(2)asset.r

元記事を表示

初めてのチーム開発…

# チーム開発必要項目(Ruby on Rails)

– MVCモデルの再確認
– ER図
– GitHubの大まかな流れの確認
– 統合ブランチってなに?
– トピックブランチってなに?
– add commit push
– プルリク
– merge
– その他
– マークダウン記法など

【所感】
 おそらく、苦労するのがGitHub。個人で開発するのと違い、トピックブランチやマージ、checkoutの部分で混乱を起こす可能性あり。そこらへんがイメージできていれば、なんとなく行けるかもしれない。まー、他にも難しいと感じる部分はたくさんあると思うけど。

元記事を表示

【Ruby on Rails】FactoryBot,Fakerの導入

### 各Gemの説明
① factory_bot_rails
model のデータに紐づいたテストデータを簡単に作るための gem です。
② faker
faker は、ダミーデータを作るのに便利な gem です。

### Gemの導入方法
“`ruby:Gemfile
# 中略
group :development, :test do
# Call ‘byebug’ anywhere in the code to stop execution and get a debugger console
gem ‘byebug’, platforms: [:mri, :mingw, :x64_mingw]
gem ‘pry-byebug’
gem ‘pry-rails’
gem ‘rspec-rails’
+ gem ‘factory_bot_rails’
+ gem ‘faker’
end

# 中略
“`
追加したら、`bundle install`を実行します。

### 各ファイルの修正
**factory_bot_rails**
“`ruby:s

元記事を表示

Qiita記事初投稿

# Ruby on Rrails
マークダウン記法

## マークダウン記法の書き方
基本的にタイトルに関しては「#」をつけること!

### 箇条書きの書き方
– 以下のように記述する

「-」でスタートさせて記述する。

– 箇条書きのレベルを下げるには?
– Eneter or returnキーを押してから「tab」を押すと一個レベルを下げることができる

### コードを書くためには?
“`ruby
(1..30).each do |numbers|
if numbers % 15 == 0
p “FizzBuzz”
elsif numbers % 3 == 0
p “Fizz”
elsif numbers % 5 == 0
p “Buzz”
else
p numbers
end
“`

– 上記は開始と終了を「“`」のようにバックスラッシュでくくった状態で間にコードを記述するとよい!

### 参照動画

元記事を表示

【Rails】dry runなrakeタスクの作成方法

# はじめに
私は4月に新卒入社したバックエンドエンジニアで、現在railsでの開発を行っています。dryrunなrakeタスクを最近書く機会があったので、簡単な例を交えつつ紹介したいと思います。

# Rakeタスクとは?
Rakeは設定したタスクをコマンドラインで実行できるもので、そのタスク自体のことを
Railsを触ったことがある人なら使用したことがあると思いますが、“rails db:migrate“もrakeタスクです。ちなみ“rake db:migrate“でも同じ動作になりますが、“rails“を使用するとよいかと思います。

# 準備
今回は単純なFruitsテーブルに果物のデータを追加・削除するタスクを作成してみようと思います。
そのための準備として以下のコマンドを実行します。
“rails g model Fruit name:string price:integer“
上記のコマンドを実行することでFruitsモデルとmigrationファイルが生成されるので、次に“rails db:migrate“しましょう。

すると以下のようなFru

元記事を表示

Rails + sidekiqでサブスク課金機能を作ってみた

## はじめに
こんにちは。[kosukein38](https://twitter.com/kosukein38)です。
今回は、**一定期間で課金が走るサブスクサービス**を仮定して、サンプルコードを用いながら紹介しつつ、**sidekiqを用いた非同期処理**についてまとめていきます。

以下のような機能を実装します。
– 契約から3日間は500円の定額
– 4日目から1日ごと200円が課金
– ユーザーが解約をしない限り、課金される
– 解約したらsidekiqのキューも削除される

**細かい説明は省略していますので、雰囲気だけ掴んでいただければと思います。**
**マサカリ大歓迎です**:pick::dash:

## 対象者
– sidekiqをざっくり知りたい方
– サブスクサービスでの課金機能を実装し

元記事を表示

form_withメソッドにおける、URLの違いによる遷移先や起動するアクションの違いについて

スクールのテキストでツイッターのようなアプリを作成中、投稿新規作成画面で「保存」ボタン、を押した場合と、投稿新規作成画面から一度「戻る」ボタンで戻り、再度「保存」ボタンを押した場合で、起動するアクションが異なることについて疑問で、メンターさんに教えてもらったことを記事にまとめたいと思います。

開発環境
“`
ruby -v 3.2.2
rails -v 6.1.7.6
“`

まず、新規入力画面のページ、URLだと、/blogs/new 
ここでディベロッパーツールで見てみると、
“`

省略

“`
となっており、actionが、”/blogs/confirm”、methodが”post”ということで、titleとcontentを入力しcreate blogのボタンを押すと、postメソッドでURL”/blogs/confirm”のところ、つまりblogs#confirm 、confirmアクションへとぶ。(一番下のルーティ

元記事を表示

【Rails】renderでのデプロイ時のミスまとめ

# はじめに
お疲れさまです。
おおくまです。

Railsで実装したアプリをrenderでデプロイした際になかなか上手くいきませんでした。
ほとんどがタイポでした。笑
備忘録として残したいと思います。

# 環境
Ruby 3.2.2
Rails 7.0.8
Webアプリケーションサーバ render
データベース PostgreSQL

# 注意点
:::note warn
私はプログラミング学習中で、初学者です。
内容に誤りがある場合があります。
コメント等で教えていただけると幸甚です。
:::

# ①ホストの許可

**Before**
“`ruby:config/environments/production.rb
Rails.application.configure do
config.hosts << 'https://********.onrender.com' end ```

**After**
“`ruby:config/environments/production.rb
Rails.application.configure do

元記事を表示

レビューで指摘されたリファクタリングベスト5【まだ短く・分かりやすくできる】

「このリファクタリングは思いつかなかった。。。 ?? 」

# はじめに
こんにちは、[まつけん](https://twitter.com/matsuken_web314)です。渋谷の[サウナ道場](https://sauna-ikitai.com/saunas/78191)によくいます。
最近エンジニアになって、1年が経ちました。

実装で、手も足も出ないことが無くなってきて、成長を感じてます。
ですが、「もっと短く・分かりやすくできる」というリファクタリングの観点でレビューをもらうことが割とあります。
その中でも「これは、、、気づかなかった。あざます!」となるリファクタリングのベスト5を紹介します。

:::note info
この記事が参考になりそうな読者

– RubyのリファクタリングTipsを知りたい方
– エンジニア1年目がレビューで指摘されたリファクタリングを知りたい方
:::

※こちらの記事に出てくるコードに関しては全て`Ruby`です。実務で学んだことなので、出てくるコードは全てフィクションです。(実際のサービスのコードではないです)

# 【第5位】wher

元記事を表示

【Rails】ネーミングのお作法:MVC編

# はじめに
Railsでの一般的な命名規則について説明していきます。

:::note info
表記法
* キャメルケース
* アッパー
* ロウワー
* スネークケース
* コンスタントケース
* ケバブケース
* M (Model) → 単数形
* V (View) → 複数形
* C (Controller) → 複数形
:::

## キャメルケース
キャメル(camel)はラクダのことで、コブに見立てて単語ごとの頭文字を大文字で表記します。
全体の先頭の文字は、大文字の場合と小文字の場合とがある。

### アッパーキャメルケース
主にクラス名、モジュール名で使用され
先頭が大文字のキャメルケースで表記します。

“`admin_user.rb
# 例
class AdminUser
end
“`

### ロウワーキャメルケース
主に`JavaScript`の変数名などで使用され
先頭が小文字のキャメルケースで表記します。

“`.js
// 例
const helloWorld = “ハローワールド”;
console.log(helloWorl

元記事を表示

Ruby on Railsで簡単にlocaleファイルを自動生成するコマンドを作ってみたら便利だったので紹介する

Ruby on Railsで以下のように、モデルの日本語ファイルを用意する機会があると思います。

“`yml
ja:
activerecord:
models:
article: 記事
attributes:
article:
title: 題名
content: 本文
created_at: 作成日時
updated_at: 更新日時
“`
このファイルを用意しておくと、エラーメッセージなどでも日本語で表示してくれますね。

しかし、このファイルを毎回手動で作っていくのは非常に大変です。
そこで、自動でこのファイルを作れるようにしてみようっていうのが今回の記事の内容です。

## 完成イメージ

“`bash
❯ bundle exec “rails tools:locale_generate”
Created: config/locales/ja/models/post.yml
config/locales/ja/models/user.yml already e

元記事を表示

ガード節について

# はじめに
現在、railsを使う現場で働いてますが、コードレビューでうけた指摘を定着し、記憶に残すために投稿します!

# 【結論】ガード節を使った書き方

**要件**
ある特定のユーザー名`param[:name]`が渡される。
* `users`テーブルに情報がある場合
さらに`purchases`テーブルを検索し、当該ユーザーの購入記録を取得する。
* `users`テーブルに情報がない場合
処理を終了する。

**ガード節を使わない書き方**
“`ruby
def index
if param[:name].present?
@user = User.find_by(user_name: param[:name])
if @user.present?
@purchases = Purchase.find_by(user_id: @user.id)
if @purchases.present?
# 購入記録がある場合の処理
els

元記事を表示

【Rails + Bun】Rails 7.1.0.beta1でJSのビルドにBunを試してみる

Rails 7.1.0.beta1で導入された新機能の一つに、JavaScriptのビルドツールとしてBunが追加されました。

https://rubyonrails.org/2023/9/13/Rails-7-1-0-beta-1-has-been-released

Rails 7.0のオプションに関して以前別記事にてまとめましたが、今回はこのBunを選択して試してみます。
よければこちらの記事も読んでみてください。

https://qiita.com/kyntk/items/0936598a903ac74e607d

:::note warn
執筆時点でv7.1.0はまだベータ版となっています
“`bash
$ rails -v
Rails 7.1.0.beta1
“`
:::

## Bunについて

Bunは先日バージョン1.0がリリースされたばかりの、新しいJavaScriptランタイムです。
Node.jsやDenoと比較しても速いことを推しています。
このBunですが、JavaScriptランタイムだけでなく、bundlerやパッケージマネージャー、テストといっ

元記事を表示

OTHERカテゴリの最新記事