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

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

Rails における UserBook.all と UserBook.joins(:user).joins(:book) の違い

# はじめに
中間テーブル `user_books` があったとき、Rails (Active Record) における `UserBook.all` と `UserBook.joins(:user).joins(:book)` の違いについて説明します。

# モデルの定義
以下のようなモデルがあったとします。ユーザは複数の本を所有しており、本は複数のユーザに所有されている、いわゆる多対多の関係になっています。

“`ruby
class User < ApplicationRecord has_many :user_books has_many :books, through: :user_books end ``` ```ruby class Book < ApplicationRecord has_many :user_books has_many :users, through: :user_books end ``` ```ruby class UserBook < ApplicationRecord belongs_to :user be

元記事を表示

Rails のコンソールで Unable to connect: Adaptive Server is unavailable or does not exist (ホスト名) (TinyTds::Error) がでる

## Unable to connect: Adaptive Server is unavailable or does not exist (ホスト名) (TinyTds::Error)が出てどうしようもない

Ruby・Rails で開発をしている時に、テスト用のDBサーバ(SQLServer)を使用していると、コンソールで上記のエラーが出たので共有します。

https://github.com/rails-sqlserver/tiny_tds/issues/218

上記のサイトでも似たようなエラーが見られますが、Azure を私は使っていないし、日本語じゃないしで全然わからなかったです。

しかし、IRB Codeのところを参考にして、
irb>require ‘tiny_tds’
irb> client = TinyTds::Client.new username: ‘ユーザ名’, password: ‘パスワード’, host: ‘ホスト名’, port: 1433, database: ‘DB名’
と叩くと、同じエラーが出ました。
その時に、テスト用のDBサーバが急に動

元記事を表示

ActiveSupport::ProxyObject is deprecated and will be removed in Rails 8.0.

# tltr

解消法は以下です。

“`
bundle update
“`

# 背景

Rails ver up 7.1 to 7.2のときに以下warningが出ました。

“`
DEPRECATION WARNING: ActiveSupport::ProxyObject is deprecated and will be removed in Rails 8.0.
Use Ruby’s built-in BasicObject instead.
(called from

at /Users/xxx/yyy_rails_project/config/application.rb:9)
“`

warningが出たコードはこれみたいです。

“`
Bundler.require(*groups)
“`

以下Bundler公式のIssueによると、ダウンロード済のgemがProxyObjectを使っていることが原因で、gemをコメントアウトして原因gemを特定できるらしいです。

https://github.com/rubygems/rubygems/

元記事を表示

`rails/console/app` has been deprecated and will be removed in Rails 8.0. `rails/console/helpers` has been deprecated and will be removed in Rails 8.0.

# tltr

解消法は以下です。

“`
bundle update
“`

# 背景

Rails ver up 7.1 to 7.2のときに以下warningが出ました。

“`
DEPRECATION WARNING: `rails/console/app` has been deprecated and will be removed in Rails 8.0.
Please require `rails/console/methods` instead.
(called from

at /Users/yuhaogao/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/railties-7.2.1.1/lib/rails/console/app.rb:3)

DEPRECATION WARNING: `rails/console/helpers` has been deprecated and will be removed in Rails 8.0.
Please require `rails/console

元記事を表示

GitHub Actionsを使用してbundle update自動実行→PRを自動作成

# 概要
– CircleCIを使用して週1で自動実行していたbundle updateを、GitHub Actionsに移行した際に行ったことのメモ
– CircleCIを使用していたときは[circleci-bundle-update-pr](https://github.com/masutaka/circleci-bundle-update-pr)というGemを使用させていただき、bundle update自動実行→プルリクエスト自動作成を実現していた
– [circleci-bundle-update-pr](https://github.com/masutaka/circleci-bundle-update-pr)は、名前の通りCircleCIでの使用を目的に作成されているように見受けられたGemだが、READMEを見ていたらGitHub Actionsで動かすためのexampleも記載されていた
– https://github.com/masutaka/circleci-bundle-update-pr?tab=readme-ov-file#run-on-gith

元記事を表示

`bundle install`に失敗する(windows/Ubuntsu/docker)

# 概要
* 以下の開発環境で開発を進めており、ジェムの `rails-i18n` を導入しようとした
* Windows11
* Ubuntsu
* docker
* Rails7.2.1

# `bundle install` でエラーになる
“`bash:確認したエラー
rails@XXXXXXXXXXX:/myapp$ bundle install
Fetching gem metadata from https://rubygems.org/………
Resolving dependencies…
Fetching rails-i18n 7.0.9

Retrying download gem from https://rubygems.org/ due to error (2/4): Bundler::PermissionError There was an error while trying to write to `/usr/local/bundle/cache/rails

元記事を表示

【Railsテンプレートエンジン】ERB、Slim、Hamlの使い方と特徴の比較

# はじめに
こんにちは、未経験エンジニア3年目の嶋田です。
今回は、Railsでよく使われるテンプレートエンジン「**ERB**」「**Slim**」「**Haml**」の基本的な書き方と、それぞれの独自特徴について紹介します。
各エンジンには特徴があり、それぞれの書き方やスタイルに違いがあります。

## 目次
– [テンプレートエンジンの特徴](#テンプレートエンジンの特徴)
– [1. ERB](#1-erb)
– [2. Slim](#2-slim)
– [3. Haml](#3-haml)
– [実際に書いてみての感想](#実際に書いてみての感想)
– [各要素の比較](#各要素の比較)
– [1. 変数の表示](#1-変数の表示)
– [2. if文の記述](#2-if文の記述)
– [3. 三項演算子の使用](#3-三項演算子の使用)
– [4. 長いテキストの出力(Slimの|)](#4-長いテキストの出力slimの)
– [5. 画像の出力](#5-画像の出力)
– [6. リンクボタンの表示](#6-リンクボタンの表示)

元記事を表示

私たちの体内における鉄の重要性

私たちの体内における鉄の重要性
記事全文を読むにはここをクリックしてください
サイトリンク:-
https://educationplusxyz.blogspot.com/2024/10/Importance%20of%20iron%20in%20our%20body%20.html

元記事を表示

【Rails】ユーザー管理機能実装 Userモデル単体テスト実施

# ユーザー管理機能のモデル単体テスト
https://qiita.com/shintech9898/items/cb048052267f1adecbd1
上記にてユーザー管理機能の実装が完了したのでモデル単体テストを実施していく。
### Gemfileを編集。
“`ruby:Gemfile
group :development, :test do
# See https://guides.rubyonrails.org/debugging_rails_applications.html#debugging-with-the-debug-gem
gem “debug”, platforms: %i[ mri mingw x64_mingw ]
gem ‘rspec-rails’, ‘~> 4.0.0’
gem ‘factory_bot_rails’
gem ‘faker’
end
“`

ターミナル
“`
% bundle install
“`

### テストコードを記述するファイルを生成
ターミナル
“`
% rails g rspec:model

元記事を表示

【Rails】furimaアプリ ユーザー管理機能の実装

# ユーザー管理機能の実装

### 実装概要
– Deviseの導入
– ユーザー管理機能の実装
– モデルの単体テストコードを書く

### 1. Deviseの導入

“`ruby:Gemfile
#中略
gem ‘devise’
“`
ターミナル
“`
% bundle install
“`

### deviseの設定ファイルを作成
ターミナル
“`
% rails g devise:install
“`
### deviseコマンドでUserモデルを作成
ターミナル
“`
% rails g devise user
“`

### マイグレーションファイルに下記追記

“`ruby:20241014085357_devise_create_users.rb
class DeviseCreateUsers < ActiveRecord::Migration[7.0] def change create_table :users do |t| ## Database authenticatable t.string :nic

元記事を表示

Railsポートフォリオのリファクタリング(Exceへの書き出し)

## はじめに
実務未経験からエンジニア転職を目指して、現在転職活動中です。
企業の方からサイト経由で「可読性が悪い」とフィードバックいただいたので、ここは読みづらいだろうなと思ったところを修正しています。

## やろうとしている処理
rubyXLというRubyのライブラリを使ってPDFから取得したテキストデータをエクセルに書き出します。

### 元のコード
“`ruby
pdf_data.each_with_index do |subject_data, sub_i|
worksheet.add_cell(sub_i + 1, 0, subject_number)
worksheet.add_cell(sub_i + 1, 1, “CHIBA#{sub_i + 1}”)
worksheet.add_cell(sub_i + 1, 2, pdf_data[sub_i][0])
worksheet.add_cell(sub_i + 1, 3, pdf_data[sub_i][1])
worksheet.add_cell(sub_i + 1, 4, pdf_d

元記事を表示

Ruby on Rails7.2環境をDockerで構築する

## 背景

Hotwireの学習の一環で**Turbo Rails Tutorial**をやりたいと思い、久しぶりに環境構築しました。

https://www.hotrails.dev/turbo-rails

## 構築環境

|項目|バージョン|
|:–:|:–:|
|OS|macOS 15.0.1 Sequoia|
|チップ|Apple Silicon(M3)|
|Docker|27.0.3|
|Ruby|3.3.5|
|Ruby on Rails|7.2.0|
|Node.js|20.18.0|
|postgres|16.4|

:::note info
windows11(WSL2)でも確認済み
:::

## 構築手順

### ① 必要なファイル作成

合計7つのファイルを作成します。

#### 空ファイル

“`Command
touch Gemfile.lock
touch yarn.lock
“`

#### Docker関連ファイル

– Dockerfile
– イメージはrubyを使用し、node.jsはコマンドを使ってインストール

元記事を表示

reCAPTCHA v3を Next.js Railsに導入する方法

# はじめに
自分は大学の授業レビューサイトを運営しています。
この前、ふとbotに大量にレビューを登録されてしまったらどうしよう!と思いました。大量にレビューは獲得できますが、全く参考になりませんし、サーバーがダウンしてしまいます。
そこで**reCAPTCHA**を導入することにしました。

## 今回の環境
* nextjs 13.4.19
* App router
* Rails 7.0.6
* apiモード

## 目次

1. [reCAPTCHAとは](#reCAPTCHAとは)
2. [Google-reCAPTCHAの設定](#google-recaptchaの設定)
3. [フロントエンド(Next.js)の実装](#フロントエンドnextjsの実装)
4. [バックエンド(Rails)の実装](#バックエンドrailsの実装)
5. [デプロイ後の注意](#デプロイ後の注意)
6. [おわりに](#おわりに)
7. [参考URL](#参考URL)

## reCAPTCHAとは
普段フォームを送信する際に「私はロボットではありません」というボタンや

元記事を表示

Rails開発環境での時間操作を簡単に!Timecopと.envを使った時間固定方法

## 背景
Railsアプリケーションの開発中、特定の日時に基づいた機能やロジックをテストする必要がある場面はよくあります。例えば、イベントが特定の日に実行されるかどうかや、期限切れの処理が正しく行われるかなどです。

実際の時間に頼ってテストを行うのは手間がかかるため、時間を操作してアプリケーションの動作を確認する方法が求められます。今回は、Timecop と .env ファイルを利用して、開発環境で簡単に時間を操作する方法を紹介します。

## Timecopとは
Timecopは、Rubyアプリケーション内で時間を操作するためのライブラリです。これを使うことで、時間に依存したロジックを特定の日時に固定して検証することができます。Timecopを活用することで、期限付きタスクや日付に依存するシステムのテストやデバッグを効率化できます。

## 実装手順
ここからは、Timecopを利用してRails開発環境で時間を操作する具体的な手順を説明します。環境変数を .env.development ファイルで設定し、Railsの開発環境で自由に時間を操作する方法を見ていきます。

###

元記事を表示

Active Recordとは?RailsのORMでデータベース操作をシンプルにする仕組みを解説!

# はじめに
Railsの強力な特徴の一つである**Active Record**は、データベースとのやり取りを簡素化するORM(オブジェクトリレーショナルマッピング)ライブラリです。Active Recordを使うと、SQLを直接書かなくても、オブジェクト指向の方法でデータベースを操作できるため、Rails開発における生産性が向上します。

この記事では、Active Recordの仕組みを詳しく説明し、データベース操作の具体例を交えながらそのメリットを解説します。

# ORM(オブジェクトリレーショナルマッピング)とは?
ORMとは、オブジェクト指向プログラミングとリレーショナルデータベースを統合するための手法です。通常、データベースは**テーブル、行、列**という形式でデータを管理しますが、プログラムの中では**クラス**と**オブジェクト**としてデータを扱います。この違いを埋めるために、ORMはデータベース上のテーブルやレコードを、プログラムの中のクラスやオブジェクトに対応させる技術です。

Active Recordは、Railsで採用されているORMライブラリであり、以

元記事を表示

Ruby on Rails 画像アイコンで検索したい!! ransack

# はじめに
この記事はRuby初心者が備忘録を兼ねて作成したものです。間違い等ありました指摘よろしくお願いします。
# 環境
・ruby 3.2.3
・rails 7.2.1
# 実現したいこと
Railsでよくある掲示板投稿アプリ。そこでの検索機能を実装していきます。ただ今回は画像アイコンでの検索を可能にしていきたいと思います。
また`ransack`を使用するのですが詳細に関しては、他にわかりやすい記事がたくさんあると思うので割愛したいと思います。
# アプリケーション作成
まずはGemfileに`ransack`を追加し、`bundle install`
“`:Gemfile
gem ‘ransack’
“`
### コントローラーの作成
“`app/controllers/boards_controller.rb
class BoardsController < ApplicationController def index @q = Board.ransack(params[:q]) @boards = @q.result.includes(:us

元記事を表示

RailsでDBのカラムにtime型を使ってみた

先日、日時は必要のない時間だけを扱うカラムを作成しようとして、初めてTime型という型を使ったのですが、そこで少しハマったので記事にしてみました。
Time型についてあまり知らない、使ってみたいよって方はぜひ読んでみてください。

## 環境
Rails7
PostgreSQL

## 起こったこと
コンソールで作成したtime型のカラムを含むテーブルを試しにコンソールで作成してみると、このようなデータが作成されてしまいました。
(対象カラムはstart_timeとend_timeです。)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3819517/93a603ba-1166-2c8d-8426-1e8c65009eeb.png)

time型で作成したのに、なぜ?
DBで確認してみるとちゃんと時間だけが保存されてました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3819517

元記事を表示

`devise`を後から追加してみた

# 概要
* 既にテーブル users を作成していたため後から devise を導入する形で作業を進行しました
* 最初から作成する場合の記事が多かったですが既存の場合はどうなるのか気になったため実行

:::note info
【結論】後から導入する場合にも問題ない
* 既存のテーブルを削除して作り直す必要もない
:::

# 実際に行った手順
* 当然ではありますが[公式の手順書](https://github.com/heartcombo/devise#getting-started)を確認しながら作業を進行しました

“`
bundle add devise
rails generate devise:install
“`

### 肝心の既存のテーブルに関わってくる箇所
* ここでモデル名を指定するコマンドが登場します
“`
rails generate devise MODEL
“`
 
* 私の場合は既存の User モデルに devise の認証を追加したかったので次のようにしました
“`
rails generate devise User
“`

結果

元記事を表示

Rails の新しいメンテナンスポリシーについて (2024/10/15 (火) 時点)

## この記事は?

– [Ruby on Rails — New Rails maintenance policy and end of maintenance announcements](https://rubyonrails.org/2024/10/15/new-maintenance-policy-and-eol-annouments)

上記の記事の内容を拙訳し、備忘録として残します。

## 最初にまとめ

– 新しいメンテナンスポリシーではリリースのメンテナンス期間が具体的に定められた
– (2024/10/15 (火) 時点で) Rails 7.0.x 以前のバージョンを使用している場合は、なるべく早く Rails 7.1.x 以降のバージョンに更新すること

## 新しいメンテナンスポリシー

### メンテナンスポリシーの概要

Rails のサポートは、現在 3 つのカテゴリーに分かれている。

– 新機能
– Rails は 6 ヶ月ごとに新機能を含むバージョンをリリースすることを目指している
– バグ修正
– マイナーリリースはそのシリーズの最初のリ

元記事を表示

初心者でもわかる!Ruby言語の5つの特徴と魅力

# はじめに
Rubyは、使いやすさとシンプルさを兼ね備えたプログラミング言語で、特にWebアプリケーション開発で人気があります。Rubyを選ぶ理由は数多くありますが、その中でも最も特徴的なポイントを5つに絞って解説します。これからRubyを学びたい方、他の言語と比較したい方に向けて、Rubyの魅力を紹介していきます。

# 1. 人間が読みやすいコードを書くためにデザインされた言語
Rubyの最も大きな特徴は、「プログラマの幸福」を重視して設計されたことです。Rubyのコードは、まるで自然言語のように読みやすく、書きやすいことを目指しています。以下に、簡単なRubyのコードを示します。

“`ruby
# 配列の各要素に1を足す例
numbers = [1, 2, 3, 4, 5]
numbers.each do |number|
puts number + 1
end
“`
このように、複雑な構文がなく、初心者でも直感的に理解できるのがRubyの魅力です。Rubyの文法は非常に柔軟で、余分なカッコやセミコロンが不要なため、読みやすさが向上します。

例えば、同じ操作をJav

元記事を表示

OTHERカテゴリの最新記事