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

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

stimulus について知らないので簡単に調査したというメモ

Rails で stimulus を触れる機会があったため、そもそも何なのか基礎から調べることにした

# 概要
> Stimulus is a JavaScript framework with modest ambitions. It doesn’t seek to take over your entire front-end—in fact, it’s not concerned with rendering HTML at all.
>
> 「Stimulus は、控えめな目標を持つ JavaScript フレームワークです。フロントエンド全体を制御しようとするものではなく、HTML のレンダリングにはまったく関係ありません。」 (原文翻訳)
>
> 引用:https://stimulus.hotwired.dev/
* 最近はやりの React も JS のライブラリということで stimulus の比較対象としてサンプルコードを見比べた
→ 「[React のサンプルコード](https://ja.react.dev/)」 v.s. 「[stimulus のサン

元記事を表示

Rails8で採用されている「Thruster」の主な特徴5選

Rails 8で採用された「Thruster」は、Pumaウェブサーバーの前に配置されるHTTP/2プロキシで、以下の特徴を持ちます:

1. **HTTP/2サポート** ThrusterはHTTP/2をサポートし、より高速で効率的な通信を実現します。

1. **自動TLS証明書管理** Let’s Encryptを利用して、TLS証明書の自動取得と更新を行い、HTTPS対応を簡素化します。

1. **アセットのキャッシングと圧縮** 静的ファイルの効率的な配信をサポートし、アセットのキャッシングと圧縮を行います。

1. **X-Sendfileサポート** X-Sendfileヘッダーをサポートし、静的ファイルの配信を効率化します。

1. **シンプルな設定** 設定ファイルを持たず、環境変数で動作を制御するため、シンプルな構成が可能です。

これらの機能により、ThrusterはNginxなどの外部ウェブサーバーを必要とせず、Railsアプリケーションのデプロイメントを簡素化します。

元記事を表示

Rails8で採用されている「Kamal 2」の主な特徴4選

Rails 8で採用されている「Kamal 2」は、デプロイメントを大幅に簡素化するツールです。その主な特徴は以下の通りです:

1. **単一コマンドでのサーバーセットアップ** Kamal 2を使用すると、`kamal setup`コマンド一つでLinuxサーバーをアプリケーションサーバーに変換できます。これにより、クラウドVMや自社サーバーへのデプロイが容易になります。

1. **Thrusterとの統合による高速デプロイ** Kamal 2は、Thrusterという新しいプロキシと統合されており、高速なゼロダウンタイムデプロイやSSL証明書の自動化を実現します。これにより、Nginxなどの外部ウェブサーバーが不要となり、デプロイメントの複雑さが軽減されます。

1. **複数アプリケーションのサポート** Kamal 2は、単一のサーバー上で複数のアプリケーションを同時にホスティングすることが可能です。これにより、サーバーリソースの効率的な活用が可能となります。

1. **自動SSL証明書の取得と更新** Let’s Encryptを利用して、SSL証明書

元記事を表示

Rails6の主な特徴10選

Rails 6は、モダンなアプリケーション開発をサポートするために多くの新機能と改善を導入しました。以下は、Rails 6の主要な特徴です

### **1. Action Mailbox**

– 受信したメールをアプリケーションで処理する新しいフレームワーク。
– メールをデータベースに保存し、その内容を解析して処理可能。
– 例えば、サポートメールの自動処理やブログ投稿のメール送信を通じた投稿管理などに利用。

### **2. Action Text**

– リッチテキスト編集と保存を統合する新しいフレームワーク。
– Trixエディタを使用して、ユーザーが簡単にリッチテキストを作成可能。
– リッチテキストデータ(画像、リンクなどを含む)をActive Storageで管理。

### **3. 並列テストのサポート**

– テストを並列に実行できる機能が追加され、テストスイートの実行速度が向上。
– デフォルトで複数のCPUコアを利用可能。

### **4. Webpackerの公式採用**

– Rails 6では、Webpa

元記事を表示

Rails7の主な特徴8選

Rails 7では、モダンな開発環境をサポートしつつ、開発者体験を大幅に向上させるために、多くの新機能と改善が導入されました。以下がその主要な特徴です

### **1. Hotwireによるリアルタイムフロントエンドのサポート**

– **Hotwire(HTML Over The Wire)** が標準でサポートされ、モダンなフロントエンド開発がシンプルになりました。
– **Turbo**: ページ遷移を高速化し、サーバーサイドでHTMLを生成することで、従来のSPAのような体験を提供します。
– **Stimulus**: JavaScriptのコードを最小限に抑え、HTMLベースで動的なインタラクションを構築可能。
– ReactやVue.jsのようなフロントエンドフレームワークを使わず、リッチなインターフェースを実現。

### **2. WebpackerからImport Mapsへの移行**

– **Import Maps** がデフォルトになり、JavaScriptモジュールの管理が簡素化されました。
– WebpackやNode.

元記事を表示

Rails8の主な特徴4選

Rails 8は、開発者の生産性向上とデプロイメントの簡素化を目指し、以下の主要な特徴を備えています。

1. **Kamal 2とThrusterによるデプロイメントの簡素化** Rails 8には、Kamal 2という新しいデプロイメントツールが組み込まれており、クラウドVMや自社サーバーへのデプロイが容易になりました。Kamal 2は、Linuxサーバーを単一のコマンドでアプリケーションサーバーに変換し、数分で本番環境への移行を可能にします。さらに、Thrusterという新しいプロキシが導入され、Pumaウェブサーバーの前に配置されることで、X-Sendfileアクセラレーション、アセットキャッシング、アセット圧縮が可能となり、Nginxなどの外部ウェブサーバーが不要になります。

1. **Solidアダプターによる外部サービス依存の削減** Rails 8では、Solid Cable、Solid Cache、Solid Queueという3つの新しいSQLiteベースのアダプターが導入され、RedisやMemcachedなどの外部サービスへの依存が減少しました。これにより

元記事を表示

Ruby ならびに Rails でのコメントのスタイルについて調査

* [こちらの記事](https://techracho.bpsinc.jp/hachi8833/2017_02_20/35769)をきっかけに Ruby のコメントの書き方の方針について学びをまとめました
* 原文ソースはこちら → https://github.com/fortissimo1997/ruby-style-guide/blob/japanese/README.ja.md#%E3%82%B3%E3%83%A1%E3%83%B3%E3%83%88

# 根底にあるスタンス
>良く書けたコードは、それ自身が最良のドキュメントでもある。 コメントを書こうとしている時は、常に自問してほしい、 “このコメントが不要になるようにコードを改善できるだろうか?” コードを改善した上で、ドキュメントでさらに明快にするのだ。
> — Steve McConnell

* この点は『ソースコード == ドキュメント』という[ Ruby 作者の主張並びに Ruby の言語特徴を汲んでいる](https://i.loveruby.net/ja/ruby/codingstyle.html#:~

元記事を表示

「Rails x AWS S3」で画像アップロードする手段を全く知らないため調べる

※本内容は 2024/11/15 時点での調査となっております

# “aws-sdk-s3” v.s. “fog-aws”
* 現状この 2 強と思われる
* 登場した時期が fog-aws の方が約 2 年先にリリースされている

## [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby)
:::note info
* **AWS 公式の gem**
* [aws-sdk-ruby](https://github.com/aws/aws-sdk-ruby) という gem に含まれている
* `aws-sdk-s3` 単体でもインストール可能
* fog-aws と比較してもダウンロード数で約 5 倍の差をつけている
* スター数など他数値においても圧倒している
:::
:::note warn
* ただ fog-aws と比較すると技術記事がなぜか少ない
:::

## [fog-aws](https://github.com/fog/fog-aws)
:::note info
* carrierwave では

元記事を表示

ActiveRecordTips①~関連データの数による検索(n個以上、n個以下)

## はじめに
レコードを抽出する際に関連データの数で絞り込みたいことがありますが毎回「大体こんな感じだったけどあってたっけ?」てなるのでまとめておく。
ActiveRecordのTipsは今後も出していきたいので「こんな抽出はどうやるの?」的なものがあればコメントください!

## 関連データの数による検索
1対Nの関連付けのテーブル構造で子の数によっての検索
nとかmとかは数字に置き換えてください。
### 子レコードがない親レコードの抽出
“`ruby
Parent.left_outer_joins(:children)
.where(children: { id: nil })
“`

### 子レコードがn個以上
“`ruby
Parent.joins(:children)
.group(‘parents.id’)
.having(‘COUNT(children.id) >= ?’, n)
.select(‘parents.*, COUNT(children.id) as children_count’)
“`

###

元記事を表示

「React と Rails を利用してTODOアプリを作成しよう」をRails7とReactV18で実装

# はじめに
下記動画を参考に、Rails7はAPIとしてReactV18と切り分けてTODOアプリを実装しました。
ライブラリも2024年11月現在の最新バージョンを適用しているので若干記述を変更しています。

[【React on Rails】React と Rails を利用してTODOアプリを作成しよう(PART1)How to create a Rails project with a React](https://www.youtube.com/watch?v=yD0QotED6f8)

# 環境
### 対応OS
* Mac OS

### 対応バージョン
* Rails 7.1.5
* React 18.3.1

### 対応エディタ
* VSCode

ローカルで環境開発をしていきます。
RailsとReact、VSCodeはinstall済みとして進めていきます。
cssは`styled-components`のライブラリを使用します。

https://styled-comp

元記事を表示

「じゃあこのRailsアプリ、AWSにデプロイしといて」「へ!?やったことないんだけど」って人のためのAWS環境構築

# AWS環境をイチから構築し、Railsアプリをデプロイすることがゴール

プロジェクト名はテキトーに`neon-cyber`とします。(GPTが提案してくれた)
要件
– フレームワークはお馴染みのRuby on Rails(7系)
– WEBサーバー
– Sidekiqのサーバー
– データベースはMySQLの8系

これをAWSで実現するとなる時には以下の構成となる

– EC2インスタンス(AMI用+踏み台サーバー)
– ロードバランサー(CodeDeployでBlue/Greenデプロイをしたいから)
– EC2インスタンス(WEBサーバー)
– EC2インスタンス(Sidekiqのサーバー)
– RDSインスタンス
– Redisインスタンス

と、簡単に言ってもAWSで設定しなければいけないことは多岐に渡るので順番に解説していく。

– VPC
– サブネット
– ルートテーブル
– セキュリティグループ
– インターネットゲートウェイ
– NATゲートウェイ
– エンドポイント(EC2がS3にアクセスしたい場合)
– RDS

元記事を表示

【Rails】ターミナルに出てくる実行ログが全てじゃないゾ!!

どうもこんにちは。

今回は、Railsで開発を行っていたときに1時間くらい沼った問題についてお話します。

:::note warn
機能名は、サンプルを使用しています。(その方が分かりやすいと思うので。)
:::

# 何をしようとしていたか

とある機能の「複製」機能を開発しているとき、以下のようにルーティング・コントローラ・ビューを定義しました。

“`rb:config/routes.rb
resources :examples do
collection do
get ‘before_copy’
end
end
“`

“`rb:examples_controller
class ExamplesController < ApplicationController def before_copy copy_source_id = params[:id] before_copy_example = Example.find(copy_source_id) @example = bef

元記事を表示

結合メソッドとその発行SQL

## ActiveRecordのPreloadメソッドを使用した際の発行クエリ

(User 1:N Post)
“`ruby
User.preload(:posts)
“`
“`sql
SELECT `users`.* FROM `users`
SELECT `posts`.* FROM `posts` WHERE `posts`.`user_id` IN [ usersのidすべて ]
“`

(Company.preload 1:N User, Company.preload 1:N Department)
“`ruby
Company.preload(:users, :departments)
“`

“`sql
SELECT `companies`.* FROM `companies`
SELECT `users`.* FROM `users` WHERE `users`.`company_id` IN ※※※
SELECT `departments`.* FROM `departments` WHERE `departments`.`company_id` I

元記事を表示

【Rails】フロントエンド開発に必要なツールとその役割

## Node.js
RailsでJavaScriptを処理・ビルドするために必要。

“` powershell
# 確認
node -v
# インストール方法
# Node.js は コマンドでなく、サイトからインストールする
# 公式サイト (https://nodejs.org/)
“`

## yarn
JavaScriptのパッケージマネージャー。
Webpackや他のライブラリをインストール・管理するために使用。

“` powershell
# 確認
yarn -v
# インストール方法
yarn install
“`

## npm(Node Package Manager)
Node.js標準のパッケージマネージャーで、yarnと同じようにパッケージのインストール・管理を行う。
`yarn`は一部機能が高速であるため、`yarn`が推奨されることが多い。

“` powershell
# 確認
npm -v
# インストール方法
npm install <パッケージ名>
“`

## webpack
JavaScriptの「モ

元記事を表示

Railsルーティング入門

## 目次
[はじめに](#はじめに)
1. [ルーティングの基本](#1-ルーティングの基本)
1-1. [単一のルーティング設定](#1-1-単一のルーティング設定)
1-2. [リソースベースのルーティング](#1-2-リソースベースのルーティング)
1-3. [リソースベースのルーティングに関するオプション](#1-3-リソースベースのルーティングに関するオプション)
2. [ルーティングの応用](#2-ルーティングの応用)
2-1. [ネストされたリソース](#2-1-ネストされたリソース)
2-2. [名前付きルート](#2-2-名前付きルート)
3. [カスタムルーティング](#3-カスタムルーティング)
3-1. [メンバーとコレクション](#3-1-メンバーとコレクション)
3-2. [コントローラーのアクション指定](#3-2-コントローラーのアクション指定)
4. [ルーティングとSEO対策](#4-ルーティングとseo対策)
4-1. [フレンドリーURL](#4-1

元記事を表示

Active Storageとurl_forを用いた画像添付機能の実装(Ruby on Rails7)

## はじめに
RoRの学習をするために、尊敬するYouTuberの一人である以下の方の動画を参考に、ブログアプリを作成しました。このアプリに画像投稿機能を実装したので、自分の個人メモとして記事に残すことにしました。

## 開発環境
#### フロントエンド
– Next.js 15.0.2 (App Router)
– react 18.2.0 (TypeScript)

#### バックエンド
– ruby 3.1.6
– Rails 7.2.2

#### データベース
– sqlite3

## 実装手順

### **1. Rails側: APIの設定**

Railsで画像投稿を処理するために、`Active Storage` を使用します。

#### **1-1. 必要なGemのインストール**
`image_processing` のGemが必要です。`Gemfile`に追加してイン

元記事を表示

ロジックはviewに書かないで切り出してHelperメソッドで運用する

この記事はプログラミング学習者がアプリ開発中に躓いた内容を備忘録として記事におこしたものです。内容に不備などあればご指摘頂けると助かります。

## 記事投稿の背景
Xのクローンサイトを制作している時に色々と躓いたので、知識整理も兼ねて記事として残すことにしました。

## 実際のコード – 変更前
私が制作していたアプリの場合、あるロジックは1箇所だけでなく、合計で**12箇所**ありました。
ロジックを切り出す前は変更の度に12箇所全てを修正しており、とても手間が
掛かり、時には変更漏れがあったりしました。
“`ruby:list.html.slim
– if current_user.present? # ツイートのユーザーとログインユーザーが共に所属するチャットルームが存在するかをデータベースから検索する
– room_with_tweet_user = Room.joins(:entries).where(entries: { user_id: [current_user.id, bookmark.twe

元記事を表示

Railsで親レコードの際にアソシエーション先の子レードが削除できない場合には削除されないようにする

[株式会社TECH LUCK](https://techluck.co.jp/?utm_source=qiita&utm_medium=article&utm_campaign=myarticle)という会社で代表兼エンジニアをしている齊藤です。

DXプロジェクト、開発プロジェクト、Rails開発などでお困りごとがありましたら[弊社HP](https://techluck.co.jp/?utm_source=qiita&utm_medium=article&utm_campaign=myarticle)からご相談をいただけますと幸いです。
以下のような問題を解決することができます。
– プロジェクトでRailsエンジニアが足りなくて困っている
– Railsのバージョンアップをしたいがノウハウ・リソースが足りなくて困っている
– オフショア開発をしているが、要件の齟齬やコード品質が悪いので改善したい

また、Railsエンジニアも募集しておりますので、興味がありましたら[弊社HP](https://techluck.co.jp/?utm_source=qiita&utm_medium

元記事を表示

Railsで親テーブル(親レコード)に対して子テーブル(子レコード)から複数の紐付きをする際のアソシエーション設定

[株式会社TECH LUCK](https://techluck.co.jp/?utm_source=qiita&utm_medium=article&utm_campaign=myarticle)という会社で代表兼エンジニアをしている齊藤です。

DXプロジェクト、開発プロジェクト、Rails開発などでお困りごとがありましたら[弊社HP](https://techluck.co.jp/?utm_source=qiita&utm_medium=article&utm_campaign=myarticle)からご相談をいただけますと幸いです。
以下のような問題を解決することができます。
– プロジェクトでRailsエンジニアが足りなくて困っている
– Railsのバージョンアップをしたいがノウハウ・リソースが足りなくて困っている
– オフショア開発をしているが、要件の齟齬やコード品質が悪いので改善したい

また、Railsエンジニアも募集しておりますので、興味がありましたら[弊社HP](https://techluck.co.jp/?utm_source=qiita&utm_medium

元記事を表示

flutterでandroidの実機デバッグをする方法

## ペア設定

`adb pair 192.xxx.xxx.xxx:34326`

## コネクト
`adb connect 192.xxx.xxx.xxx:43739`

## バックエンドとつなげない場合

バックエンドはrailsでlocalhost:3000起動中
実機デバイスからアクセスできない問題が発生

この時

`adb reverse tcp:3000 tcp:3000`
を行う

#### 参考

https://qiita.com/suruseas/items/42d5d9c5beffa6ebdd78

元記事を表示

OTHERカテゴリの最新記事