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

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

【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やパッケージマネージャー、テストといっ

元記事を表示

【Rails】Active Storageのバリデーション

## Gemをインストールする

`active_storage_validations`をインストールします。

https://github.com/igorkasyanchuk/active_storage_validations

“`rb:Gemfile
gem ‘active_storage_validations’

# :dimension または :aspect_ratioを使用する場合には以下のいずれかを併せてインストールします。
gem ‘mini_magick’, ‘>= 4.9.5’
gem ‘ruby-vips’, ‘>= 2.1.0’

“`

“`terminal:ターミナル
bundle install
“`

## バリデーションを設定する

モデルにバリデーションを記述します。

“`app/models/user.rb
class User < ApplicationRecord has_one_attached :avatar validates :avatar, content_type: { in: %w[image/

元記事を表示

【Rails】x-rubyを使ってみた

### x-ruby: 新たなTwitter gemの使い方

Twitterは最近、APIの仕様を一新し、「x-ruby」という新しいgemをリリースしました。このgemは、v1.1とv2のAPIの両方に対応しており、Rubyの開発者にとって非常に便利です。

なので、今回はその基本的な使い方について説明します。

**【セットアップ】**

1. **Gemのインストール**
新しいgemをインストールするために以下のコマンドを実行します。
“`ruby
gem install ‘x’
“`
または、Gemfileに以下の行を追加した後、`bundle install`を実行します。
“`ruby
gem ‘x’
“`

2. **環境変数の設定**
TwitterのAPIキーなどの情報を環境変数として設定します。`dotenv` gemを利用することで、このプロセスが簡単になります。

**【ツイートの実装】**

1. **APIクライアントの初期化**
APIクライアントを以下のように初期化します。
“`ruby
x_credentials = {

元記事を表示

deliver_later をテストの時だけ即時実行したい

時は、`perform_enqueued_jobs` と書く。

“`ruby
it do
perform_enqueued_jobs do
subject
end

expect(ActionMailer::Base.deliveries.size).to(eq(1))
end
“`

とりあえず動いてるか?のテストしたい時はこれで良さそう。

ちゃんとどのメソッドが呼ばれてるか?みたいなテストにしたいなら、呼ばれてるMailerをスタブしないとダメそう。

一周回って、結合テスト的に呼び出し〜どんな内容のメールが送信されているか?でテストするなら、このように書くことでメールの内容が検証できる。

“`ruby
mail = ActionMailer::Base.deliveries.last

expect(mail.subject).to eq(‘Expected Subject’)
expect(mail.to).to eq([‘example@example.com’])
expect(mail.from)

元記事を表示

【Ruby】アソシエーションを使った投稿分類【投稿分類応用】

# はじめに
筆者は 大学生限定 プログラミングコミュニティ 『GeekSalon』で活動している者です!
もし少しでも興味がありましたら、ぜひお話を聞きにきてください!

# 前提
この記事でできることを紹介します。
今回は投稿の分類をし、その後にアソシエーションを使いさらに分類するといったことをします。

例えば、音楽をジャンル毎に分ける → ジャンル毎にアーティストを投稿する → アーティストの曲ごとに分類する。
流れはこんな感じになります。

他にも、スポーツをジャンル毎に分ける → ジャンル毎にスポーツを投稿する → そのスポーツチームごとに分ける。といったこともできます。

https://qiita.com/kubochiro/items/4d80a91a6133b680cb4b

参考記事:投稿の分類はこちらの記事を参考にしました

# カテゴリー分けその1
今回は、音楽をジャンル毎に分ける → ジャンル毎にアーティストを投稿する → アーティストの曲ごとに分類することをします!
![Qiita動画2.gif](https://qiita-image-store.s3.

元記事を表示

OTHERカテゴリの最新記事