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

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

データベースに作成されたカラムを確認するには

データベースに作成されたカラムを確認するには、ターミナルに

“`ターミナル
docker compose run web rails c
“`
を打ってコンソールを立ち上げてから、
“`
User.column_names
“`
を打つと、カラムが表示される。
“`
=> [“id”, “last_name”, “first_name”, “email”, “crypted_password”, “salt”, “created_at”, “updated_at”]
“`

元記事を表示

【備忘録】Rails7 Stimulus セレクトボックス 親子 複数 連動

会社を選択すると、現場と品目の選択肢に、アソシエーションされているレコードをセットする
![add_flow7.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324819/67806d9c-4a2f-2c56-41b6-a9b76eb46162.gif)

“`config/routes.rb
resources :companies do
get ‘sites’, on: :member
get ‘waste_kinds’, on: :member
end
“`

“`app/controllers/companies_controller.rb
def sites
company = Company.find(params[:id])
sites = company.sites

respond_to do |format|
format.json { render json: sites }
end
end

d

元記事を表示

【Rails】マークダウン形式で入力された表をHTML側で表として表示してみた

どうもこんにちは。

今回は以下のように入力されたマークダウン形式の表をHTML側では表として表示できるようにしてみたいと思います。

“`text
| タイトル | 値 |
| — | — |
| 名前 | テスト太郎 |
| 年齢 | 25 |
| 性別 | 男 |
| 出身 | 東京都 |
“`

# 実装手順

## 1. gemを導入

今回は`Redcarpet`というGemを使用します。

“`Gemfile
gem ‘redcarpet’
“`

## 2. bundle installをする

ターミナルで以下のコマンドを叩きます。

“`
$ bundle install
“`

## 3. ApplicationHelperを使用してメソッドを定義

メソッドは、HTMLで画面表示したい時に使用するので、ヘルパーメソッドとして定義します。
私は色々な箇所で使用したかったので、`app/helper/application_helper.rb`に定義しましたが、`users`の機能でのみ使用する場合などは、`app/helper/users_he

元記事を表示

【Rails】fly.ioでコンソールを使ってDBに初期データを保存する方法

### 概要
開発環境ごとにデータベースが作られているため、デプロイ後、ローカル環境で作成していた初期データを本番環境にて作成する必要がありました。
そのときに「fly.io上でコンソールを使ってデータを作成する方法」を実施したので、その方法を記載します。

今回は、以下の2つのパターン挙げます。
    
    ①Rakeタスクの実行(csvファイル読み込みのため)
    ②seedファイルの読み込み

※ 事前にfly.ioへのデプロイを完了し、データのもととなるcsvファイル及びseedファイル、読み込みのためのRakeタスクについては作成済みとします。

#### 環境
Rails 7.08
Ruby 3.1.4
Fly.io
Docker利用なし

### fly.ioでコンソールの立ち上げ (共通)

“`
$ flyctl console
“`
(事前にflyctlのインストールを実施しておく。https://fly.io/docs/hands-on/)

### ①Rakeタスクの実行(csvファイル読み込みのため)

fly.ioで起動した

元記事を表示

【Ruby on Rails】stimulus+ActionCableでリアルタイムチャット機能の実装(初学者向け)

私は現在、未経験からのエンジニア転職に向けてプログラミングスクールで学習をしている、いしかわと申します。

今回Webアプリケーションの個人開発を進めている際、リアルタイムチャット機能を実装したので自身のアウトプットとして記事にしました
どなたかの参考になれば幸いです。

:::note warn
プログラミング初学者なので、内容に誤り等ある可能性があります
誤りがありましたら教えてくださると幸いです
:::
# StimlueとActionCabelを用いたリアルタイムチャット機能の実装
今回は既存のRequestオブジェクト毎にリアルタイムチャット機能を実装しています
## 知っておくべき知識
### ActionCable
WebSocketを利用してサーバーサイドとクライアントサイドで連続的(持続的)な通信を確立している
連続的な通信を確立していることから、サーバーサイドとクライアントサイドでリアルタイムの通信が可能になる
チャットメッセージやリアルタイムの更新など、サーバーサイドとクライアントサイドの状態を同期することができる

### Ajax通信
似ているものとしてAja

元記事を表示

AWS SDKでS3バケット内のフォルダ構造を維持したまま、ZIPファイル形式でダウンロードする方法

## はじめに
Fusicでエンジニアをしています。みかみよしきです。
Fusic Advent Calendar を機に記事執筆に初挑戦しました。よろしくお願いします。

AWS SDKを使用してS3バケット内のファイルをフォルダ構造を維持したままZIP形式でダウンロードする方法を解説します。この機能はS3上の大量データを効率的に取得するために有用です。

Ruby on Rails環境でAWS SDKを用いてこの機能を実装する方法について、コード例を提示しつつ説明していきます。S3バケットからのデータ取得、ZIPファイルの作成、そしてクライアントへのダウンロードまでの工程を行います。

## 前提知識
AWS SDK、Amazon S3、rubyzipについて前提知識を説明します。

### AWS SDK
AWSのサービスをプログラムで利用するためのツールキット(Software Devlopment Kit)です。このSDKを使用することで、AWSのリソースを直接コードから管理できます。

### Amazon S3
Amazon S3は、インターネット経由で利用できるオブジェ

元記事を表示

Bootstrapが難しいので、苦し紛れにJavaScript関連用語だけざっくり調べた

:::note warn
**注記**
この記事の投稿者はRuby on Rails初学者であり、自身の学習の備忘録目的で記事投稿を行なっております。
情報の正確さには最大限注意をしておりますが、もし誤り等がございましたらお知らせいただけますと幸いです。
:::

ご覧いただきありがとうございます!
**Ito** と申します!
Ruby on Rails初学者です。

## 調べた動機、経緯
初めてのアプリを作成しようと思い`Rails new`後、Bootstrapを導入しようとしたら**数時間ハマりました。**
開発環境はRails7系を使用していますが、ChatGPTに質問をしたところWebpackerを薦められました。

JavaScript周りの知識があればChatGPTのアドバイスの矛盾点に気付けたのでしょうが、知識の持ち合わせがなかった私は、**なすがままに振り回されてしまいました。**

[![Image from Gyazo](https://i.gyazo.com/0e9ab7824756f96f76b0bce9dda2370a.png)](https:

元記事を表示

Rails + Ruby 3.3.0でYJITを使ってみる

## Rubyインストール時にRust環境が必要

Ruby 3.3.0では簡単にYJITが選択できるようになっているのですが、前提条件としてRubyビルド時にRustコンパイラがインストールされている必要があります。Rustが入っていない場合、YJITが使えないRubyがビルドされてしまうので注意しましょう。
これはrbenvでRubyをインストールする場合も例外ではありません。Macの場合は次のような手順で事前にRust環境をインストールしておきます。
“`
$ brew install rustup-init
$ rustup-init
$ exec $SHELL -l

$ rbenv install 3.3.0
“`

rubyを`–yjit`オプション付きで実行するとYJITが有効になります。バージョン情報を確認すると「+YJIT」と表示されて、YJITが有効になっていることが確認できます。
“`
% ruby -v –yjit
ruby 3.3.0 (2023-12-25 revision 5124f9ac75) +YJIT [arm64-darwin23]
`

元記事を表示

【Rails】JavaScript ”だけ” を使ったモーダル表示

Railsを使ったWebアプリの開発中、「モーダル表示できたら天才…」と思い、実際にモーダル機能をつけてみました。

[![Image from Gyazo](https://i.gyazo.com/178fe3e632bc214a3a056d9b0e392500.gif)](https://gyazo.com/178fe3e632bc214a3a056d9b0e392500)

:::note
**今回実装するモーダルの仕様** ( ≒ 要件定義)

*モーダル非表示時*
* ボタンを押すと、モーダルが開く
* 画面は、スクロール可能

*モーダル表示時*
* 「×」ボタンを押すと、モーダルが閉じる
* モーダルの外側を押しても、モーダルは閉じる
* モーダル背景部分は、スクロール ”不可”

:::


モーダル機能は、とてつもなく重要です。なぜなら…
* 重要な理由①:viewファイル新規追加/ページ更新といったステップを踏むことなく、補足事項をユーザーに伝えることができるから :fir

元記事を表示

【Next.js(AppRouter) / Rails API / Terraform】ECS/FargateでNext.js(AppRouter)とRails APIで構成されるサービスの実行環境を構築する。

## 概要
Next.js(App Router)とRails APIで構成されるアプリケーションの実行環境を、AWSのECS/Fargateで構築する記事です。IaCにはTerraformを利用します。

構築する環境の構成図は以下に示す通りで、SeverComponentからRailsで実装したAPIを呼び出す際は、CloudMapによるサービスディスカバリを利用してコンテナ間で直接通信するようにしています。
![スクリーンショット 2024-01-09 17.16.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2987556/d667cacc-70dc-bba3-3f57-1afc7f5b96eb.png)

# ※注意点
この記事では、ECS/Fargate環境におけるISRの実現方法については触れていません。今回の構成で考慮しているのはSSR(cache: no-store)のみです。

ECS/FargateにおけるISRの実現方

元記事を表示

【Next.js(AppRouter) / Rails API】ローカルの実行環境をDockerで構築し、SC(SSR)・CCを利用した簡単なページを実装する。

## 概要
Next.js(AppRouter)とRails APIで構成されるのサービスの実行環境をローカルで構築する記事です。環境構築にはDockerを利用します。

また、構築した環境下で、架空のECサイトの商品画面を例として、商品の一覧表示画面をServerComponentsのSSRで行い、商品の詳細表示をClientComponentsのCSRで実装します。

## 事前準備
以下のようにNext.jsとRailsを管理するためのフォルダを作成します。
また実行環境を定義するためのDockerfileとdocker-compose.ymlを用意します。
kaku-projectフォルダをルートディレクトして、kaku-backendフォルダがRails用、kaku-frontendがNext.js用のフォルダとします。
“`
kaku-project
├── docker-compose.yml
├── kaku-backend
│ └── Dockerfile
└── kaku-frontend
└── Dockerfile
“`

## Rai

元記事を表示

[Next.js / Rails API] VSCodeのDevContainersを利用して、Docker環境下でGUIデバッグ環境を構築する。

## 概要
Dockerで構築しているNext.js(AppRouter)とRails APIの実行環境において、VSCodeのDevContainers拡張機能を利用してDockerコンテナに接続し、GUIデバッグ環境を構築する記事です。
## 前提
以下のようなフォルダ構成でNext.jsとRailsのプロジェクトが存在するとして、また、それぞれの実行環境を定義するためのDockerfileとdocker-compose.ymlが定義されている状態とします。
kaku-projectフォルダをルートディレクトで、kaku-backendフォルダがRails用、kaku-frontendがNext.js用のフォルダです。
“`
kaku-project
├── docker-compose.yml
├── kaku-backend
│ └── Dockerfile
└── kaku-frontend
└── Dockerfile
“`

## DevContainers拡張機能のインストール、セットアップ
vscodeにDevContainers拡張機能をインス

元記事を表示

勉強メモ

## メモ

https://qiita.com/k-mat438/items/7d1b8920a3f51c6859f5

https://qiita.com/k-mat438/private/172622ba60ed4b2b062e

https://qiita.com/k-mat438/private/e9d4d134b7dadbdf78f9

https://qiita.com/k-mat438/private/01bf39dabd7558201fac

https://qiita.com/k-mat438/private/b23576e6513cf014e220

元記事を表示

belongs_to の子側から親のグループごとに絞り込む

## モチベーション

`belongs_to` が設定されているモデルを特定のカラムに基づいて `belongs_to` 単位で集約し、1レコードだけ取得したいシーンがありました。

特定のカラムに対して`max`を用いて絞り込むことはできるのですが `max` を利用すると `[group_byに指定したカラム, maxで集約した値]` の配列になってしまうため、 `ActiveRecord` の形式でアクセスして属性を取得することができませんでした。

なんとか `ActiveRecord` の形式でデータにアクセスする方法をみつけたので、自分のためにもメモを残しておこうと思い、記事を作成しました。

## ER図

“`mermaid
erDiagram
users {
string first_name
string last_name
datetime created_at
datetime updated_at
}
posts {
text description

元記事を表示

【fetch関数の使い方】RailsAPIを利用するためのフロントエンド実装

## はじめに
Rails APIなどの外部APIからデータを取得したり、フォームデータをサーバーに送信するために使用されるJavaScriptのfetch関数を学習しました。

しばらくJavaScriptから離れていたため、この機会にJavaScriptの基本文法を再学習し、さらに新しくfetch関数の使い方を習得しました。

この記事では、fetch関数の活用方法やその重要性について詳しく解説していきます。

## fetch関数とは何か

fetch関数は、JavaScriptでWeb APIやリソースにネットワークリクエストを送るための標準的な方法です。

リモートのサーバーからデータを取得したり、データをサーバーに送信したりできます。

### fetch関数の基本的な使い方
“`javascript
fetch(‘https://example.com/data’)
.then(response => response.json())
.then(data => console.log(data));
“`

このコードは、https://example.c

元記事を表示

ユーザーの結合テストコード

### 目的
– ログインについての結合テストコード
### ユーザーログインの結合テストコード
#### exampleを整理
– ログインできる時
– 保存されているユーザーの情報と合致すればログインできる
– トップページに移動する
– トップページにログインページへ遷移するボタンがあることを確認する
– ログインページに遷移する
– 正しいユーザー情報を入力する
– ログインボタンを押す
– トップページへ遷移することを確認する
– カーソルを合わせるとログアウトボタンが表示されることを確認する
– サインアップページへ遷移するボタンやログインページへ遷移するボタンが表示されていないことを確認する
– ログインできない時
– 保存されているユーザーの情報と合致しないとログインできない
– トップページに移動する
– トップページにログインページへ遷移するボタンがあることを確認する
– ログインページへ遷移する
– ユーザー情報を入力する
– ログインボタンを押

元記事を表示

railsAPIをaxiosで叩いた時のエラーの取得について

## はじめに
RailsのAPIからデータを取得する際に、axiosを使用してエラーが発生した場合、レスポンスを取得することができずに困った

## 問題点
Railsでエラーが発生した場合、通常はstatusコードとmessageをレスポンスボディとして返すので取得の仕方を変えないといけなかった

### 例えば

“` ruby
if user.save
render json: { status: 200, data: user }
else
render status: :unprocessable_entity, json:{ messages: user.errors.full_messages }
end
“`
この場合、フロントでaxiosを使用してAPIを呼び出すと、エラーが発生した場合、以下のようなエラーが発生する

“` JavaScript
axios
.post(process.env.API_URL + ‘/api/v1/users/signup’)
.then((res) => {
console.log(res)
}

元記事を表示

ベンチマークのスコアは、常に高ければ高いほど良いのでしょうか?

私の書籍やニュースレターを読まれている方なら、私がパフォーマンスエンジニアリングを支持していることをご存じかもしれません。パフォーマンスエンジニアリングとは、パフォーマンス作業を行う際、要件と制約を前もって明確にし、それらを満たすようにシステムを設計することをいいます。求められるもの以上に良く(もしくは悪く)システムを設計するのではなく、求められる仕様に忠実にシステムを設計するのがエンジニアリングです。求められるよりも 2 倍大きな箱を設計したとしても、顧客の棚にフィットせず、顧客が希望する倍のコストがかかり、構築に規定の倍の時間がかかるとしたら、それは「より良い」箱を設計したことにはなりません。間違った箱を設計しているのです。

あらゆる計算機システムには、性能要件があります。もしそうでなければ、世界が終わりを迎える寸前に仕事を終えるようなシステムですら、要件を満たすことになってしまいます。そのようなシステムにお金を払ってくれる顧客はいないでしょう(もしいたら、ぜひ紹介してください)。

では、性能要件として求められるレイテンシーやスループットを上回るのは、常に良いことと言えるでし

元記事を表示

【Rails】キーワード引数とハッシュの判別

# はじめに
RailsでRubyのコードを触っていたときのある日、今まで触っていたコードのメソッドを見て
あれ?これってずっとハッシュを引数として渡していたと思ってたけどキーワード引数なのでは?という疑問が生じ、その疑問を解消するために色々調べたので記事にしてまとめてみました。

結論を先に書くと
# 結論:Rails側(定義元)でなんとかしてくれてるからハッシュかキーワード引数か気にしなくていい

# 実際にRailsで書いていたコード
以下のコード読みほぐしていく。(turboの説明は省略)
“`ruby:
redirect_to root_url, status: :see_other
# controller内に書いていたredirect

validates :title, presence: true, length: { maximum: 100 }
# model内に書いていたvalidation

link_to ‘削除’, todo_path(todo), data: { turbo_method: :delete , turbo_confirm: ‘本当に

元記事を表示

プログラム初心者が、2ヶ月でHTML→RubyonRailsまで学んだ勉強法

# はじめに
みなさんこんにちは、ちゅらデータ所属のえいとびーと(@eightbeat-8b)と申します
XR好きでVRやARなど触っています

2023のアドベントカレンダーを書くぞと決意に決意を重ね、新年から既に1週間立ってしまいました。
まぁ、過ぎてしまったものは仕方がないということで、今からでも遅くないだろうとキーボードを叩くに至ったわけです。

**早速ですが、私、実はプログラミングができません。**
入社して1年以上立つのですが、XR関連の開発が中心でして、UnityやUnrealEngineでの作業が殆どでした。
いやいや、それでもプログラムは使うやろ?と思いきや、意外となんとかなってしまい、今の体たらくになっている顛末です。

**「そろそろプログラム覚えないと、社内ニートまっしぐらやな」**
それだけは避けないとあかん、そう考えプログラミングを学び始めました

というわけで、「2ヶ月でHTMLからRubyonRails完走した話」
そして

**Progate、RubyonRailsチュートリアルはいいぞ!! な話を書いていきます**

# 私のプログラミングの

元記事を表示

OTHERカテゴリの最新記事