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

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

【Ruby】便利なEnumerableについて

## はじめに
“Enumerable” は “enumerate”(列挙する)に由来し「列挙可能な」という意味です。

`Array, Hash, Range` 等のクラスに `Enumerableモジュール` はインクルードされており、代表的なのは、 `each、map、select` 等です。実際に業務で使って便利だなと思ったものを含めて整理したいと思います。

## 便利なメソッドたち

### [include?](https://docs.ruby-lang.org/ja/latest/method/Enumerable/i/include=3f.html)
`==`の関係が成立する時にtrueを返します

“`ruby
[1, 2, 3].include?(2) # => true
“`

## [all?](https://docs.ruby-lang.org/ja/latest/method/Enumerable/i/all=3f.html)
全ての要素が真である時にtrueを返します。そうでない時はfalseを返します。

“`ruby
[1, 2, 3].

元記事を表示

インスタンスメソッド/クラスメソッド/モジュールの状況別呼び出し方

# インスタンスメソッドとクラスメソッドの呼び出し方

プログラミングにおいて、メソッドの呼び出し方は、そのメソッドがインスタンスメソッドなのか、クラスメソッドなのかによって異なります。ここでは、これらのメソッドをさまざまな状況でどのように呼び出すかについて解説します。

## インスタンスメソッドをクラス外で呼び出す

インスタンスメソッドは、クラスのインスタンスを介して呼び出します。まずはクラスのインスタンスを作成し、そのインスタンスを通じてメソッドを呼び出します。

“`ruby
class MyClass
def instance_method
puts “インスタンスメソッドです”
end
end

# インスタンスを生成
my_object = MyClass.new
# インスタンスメソッドを呼び出す
my_object.instance_method
“`

## クラスメソッドをクラス外で呼び出す

クラスメソッドは、クラス自体をレシーバとして呼び出します。インスタンスを生成する必要はありません。

“`ruby
class MyClass

元記事を表示

【超初学者向け】VScode拡張機能まとめ

### 主にRailsでコーディングするときに便利な拡張機能まとめ
– Auto Close Tag
– 閉じタグ勝手に書いてくれる
– Code Spell Checker
– 変数名とかが英単語として正しいスペルかチェックしてくれる
– endwise
– endを勝手に書いてくれる
– Highlight Matching Tag
– ペアになってる開始タグと閉じタグを見やすくカラーリングしてくれる
– HTML End Tag Labels
– 閉じタグに開始タグの名称を表示してくれる
– indent-rainbow
– インデントレインボー
– Rails DB Schema
– schemaからdb関連の予測変換
– Rainbow End
– rubyファイルの開始と終了をカラーリング
– Beautify
– erbファイルのフォーマットとかできる
– RuboCop
– rubyファイルのフォーマット
– SQLite Viewer
– SQLファイルの中身を直接vscodeから

元記事を表示

Rails × Google Cloud Vision API を使って画像解析してみた

# はじめに
「RUNTEQ Advent Calendar 2023」の7日目を担当させていただきます🎄
今回は初めて個人開発のアプリを作成するにあたり、技術検証としていくつかのAPIを触ってみましたので、記事にしてみました。
その中で画像解析してくれる「Google Cloud Vision API」が面白かったので紹介します。

# 今回のゴール
画像データをAPIに送って色情報を解析してもらい、結果を画面に表示する。
(この画像にはどんな色がどれぐらいの割合で占めているのか〜的な)

# 前提
::: note
ローカルの開発環境にて技術検証用のお試しアプリ作って触った流れを紹介します🙏
まず動かすことを目的としたので、コードが鬼汚いです。
:::

使用技術
・Ruby on Rails:7.1.2
・gem “carrierwave”(アップローダー作成・カラム紐付けまで完了済み)
・gem “dotenv-rails”
・gem “google-cloud-vision”

# 目次
・Google Cloud Vision APIとは?
・準備
・実装
・画像を解析して

元記事を表示

Railsのcallback(after_commitエイリアス系)に意地悪されたので先生に言いつけなかった話

これは[Hubble Advent Calendar 2023](https://qiita.com/advent-calendar/2023/hubble)の5日目の記事です。

# はじめに
はじめまして、株式会社Hubbleのしがないバックエンドエンジニアです。
名乗るほどの者でもありませんので、どうぞお好きお呼びなすってくだせえ。

今回[Hubble Advent Calendar 2023](https://qiita.com/advent-calendar/2023/hubble)にて、5日目の記事を担当させていただくことになりました。

何書こうかなーと思っていたんですが、
直近で巧妙なトラップに引っ掛かったので、ちょっと ~~愚痴~~ 備忘録も兼ねて残しておこうと思います。

そんなにボリュームもないのでサクッと読んでいただけると思います!

# RailsのActive Record callbackについて
Railsを使っていたらお世話になっている方も多いと思いますが、
せっかくなので、今をときめくChatGPTさんに一言で表してもらいました。
“`
Rail

元記事を表示

Hotwire 以後の accepts_nested_attributes_for

# Hotwire(Rails 7)で、複数の子レコードの保存が簡単になる
[cocoon](https://rubygems.org/gems/cocoon) などの gem を使わなくてよい。JavaScript も jQuery も使わない
ほぼ erb のレンダリング(サーバーサイド)だけでなんとかなります。

has_many、has_one、belogs_to などいわゆる Rails の関連付け(アソシエーション)の概要は把握していることを前提としてます。

検証は、ruby 3.2、Rails 7.1 の環境です
## accepsts_nested_attributes_for は嫌われ者?

そもそも **accepsts_nested_attributes_for** は、関連付けられているモデルをネストさせることで、一度にまとめてレコードの更新ができるようにするメソッドです。1対N(has_many)のデータを html の form で一度にまとめてサーバーに送り、受け取った Rails がよしなに処理してくれます。なかなか便利な仕組みです。

https:/

元記事を表示

Could not configure the build properly (pkg_config). Please install either the `pkg-config` utility or the `pkg-config` rubygem.

## はじめに

Railsでbundle intall実行時に出るエラーの対応方法です。
コンソールの末尾には下記のように表示されました。

`An error occurred while installing sqlite3 (1.6.3), and Bundler cannot continue.`

## 内容

### 環境

– macOS 13.4
– Apple M1
– Ruby 3.2.0
– Bundler version 2.4.18
– asdf v0.13.1

### 解決方法

– `brew install pkg-config`を実行してから
– `bundle install`を再度実行

### 原因

エラーメッセージを添付します。

“`sh
$ bundle install

…省略…

Building sqlite3-ruby using packaged sqlite3.
Extracting sqlite-autoconf-3420000.tar.gz into tmp/arm64-apple-darwin22.5.0/

元記事を表示

db:migrateをちゃんと理解する

このエントリーは [BitStar Advent Calendar 2023](https://qiita.com/advent-calendar/2023/bitstar) の7日目になります。
ここまでの投稿を見ていると自分の働いてる会社はエンターテックカンパニーではなく実はChatGPTカンパニーなのではないかと思い始めていたんですが、そんなことはないと我に返ったのでここでしっかり流れを断ち切りたいと思います。

ということで私からはRailsエンジニア向けに「`db:migrate`って結局何してるの?」という話をしたいと思います。(これ実は意外と知らない人いるのかなって個人的に思っただけなので、当然のごとくそれくらい知ってるよっていう方はスルーしてください)

## 巨大テーブルの操作は何かと気を使う
私自身普段は今年リリースした”BitStar Match”の開発が主な業務になるんですが、少し前からエンジニア採用にも携わってまして、その際に候補者の方から「御社の開発における魅力は何ですか?」といった質問をたまに受けることがあります。
そこで私はいつも「インフルエンサー業界の

元記事を表示

Rails アプリケーションでパスキー認証を実装してみる

:::note info
この記事は、[LITALICO Engneers Advent Calender 2023](https://qiita.com/advent-calendar/2023/litalico) シリーズ1の7日目の記事です。前日は、@k_orita の「[一年目の新人こそ、チーム1厳しいレビュワーになろう!](https://qiita.com/k_orita/items/290e048fe09e30e102df)」でした。
:::

# はじめに

LITALICO プロダクトエンジニアリング(PE)部の片桐英人(かたぎり えいと)です。基盤グループに所属しています。2022年11月に入社しました。岐阜県岐阜市からリモートワークしています。

ここ最近、伊藤園から発売されていた「[ガッサータ](https://www.tullys-cup.jp/lineup/gassata/)」を愛飲しています。コーヒー味の炭酸飲料です。既に生産中止になっているようで、Amazon などで割りと安く手に入ることは良いのですが、持続性がないので、エスプレッソを炭酸水で割るエスプ

元記事を表示

Vite × Railsのnet::ERR_CONNECTION_REFUSEDエラーの解決策

## 事象

最近、フロントエンドのビルドツールとして人気のあるViteと、バックエンドフレームワークであるRailsを組み合わせて開発を行っていた際、ブラウザのコンソールにnet::ERR_CONNECTION_REFUSEDというエラーが発生しました。この記事ではその対処法を共有いたします。

## 原因

このエラーは、ViteがデフォルトでローカルホストのIPv6アドレス(::1)を使用するため発生していました。これにより、Railsサーバーとの接続が拒否され、フロントエンドからのリクエストが失敗する状態になっていました。

## 対処法

問題を解決するためには、Viteの設定ファイル(config/vite.json)でホストをIPv4アドレス(127.0.0.1)に明示的に設定する必要がありました。以下のように変更することで、エラーが解消され、Railsサーバーへの接続が成功しました。

“`config/vite.json
“development”: {
“autoBuild”: true,
“host”: “127.0.0.1”,
“pub

元記事を表示

【Devise】メーラーのテンプレートパスをカスタマイズする

# はじめに
Deviseを使用する中で、特定の状況においてConfirmationメールの送信に使われるテンプレートのパスを変更する必要が生じました。[Deviseの公式Wikiにはガイドライン](https://github.com/heartcombo/devise/wiki/How-To:-Use-custom-mailer)が記載されていましたが、Rails7ではなぜかその方法では解決できなかったため、Deviseのソースコードを分析し、別の解決策を探りました。

# 方法 1: headers_for メソッドのオーバーライド
Deviseでは、`Devise::Mailer`の`Helpers`モジュール内にある`headers_for`メソッドを通じて、メール送信に必要な全てのヘッダ情報を生成します。このメソッドは、メールの件名(`subject`)、受信者(`to`)、送信者(`from`)、返信先アドレス(`reply_to`)、テンプレートパス(`template_path`)、そしてテンプレート名(`template_name`)を含むハッシュを作成します。

元記事を表示

RESTfulって結局なんなんだ

## 記事を書いた経緯
Ruby on Railsでresourcesを使うにあたって、これはRESTfulってやつをちゃんとわかっていないとダメだと思ったので自分なりにまとめた記事です
これまでDjangoやRailsの中でなんとなく把握していたRESTfulという概念について初心者なりに深掘りしてみました。

## そもそもRESTってどのレイヤーで何を指す言葉?
教科書的にいうと、

『ウェブサービスの設計スタイルで、リソースをURLで識別し、HTTPメソッドを使用して操作するステートレスなアーキテクチャ』

分かるようなわからないような感じです。
何か学ぶときにこの言葉がどの辺のレイヤーにいるのかイメージできると理解が進むのでここをはっきりさせたい。

ということでもう少し身近な建設に例えてこんな感じにイメージしました

![スクリーンショット 2023-12-05 15.43.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3480176/8b28aad6-6

元記事を表示

Rails開発経験8年選手がC#.NETの開発をキャッチアップするまでの流れ

WEMEX株式会社 Advent Calendar 2023の6日目です。本記事では、バックエンド開発ではRailsを主戦場に経験を積んできた筆者がC#.NET開発をキャッチアップするまでの流れについてまとめてみました。

## はじめに
私は、もともと新規で立ち上げたビジネスのプロダクト開発に従事するためにRailsエンジニアとしてWEMEXに入社しましたが、数ヶ月前より、C#.NETのプロジェクトに携わっています。従来から開発していたRailsのプロジェクトの開発も並行してはいますが、プロジェクトの進捗具合により、今はC#.NETのプロジェクトに割く時間が多いという状況です。

これまでももともと担当していたプロジェクト以外の開発を臨時的に、または主担当として担当をすることはあったので、プロジェクトが変わること自体は珍しいことではありません。しかし、今回がちょっと変わったのは、使用する技術がRailsではなくC#.NETだということです。ただし、フロントエンドとバックエンドは分かれており、WebのAPIをC#.NETで開発するという、最近では一般的な構成です。Webに関してはRa

元記事を表示

【Ruby on Rails】paramsについて理解しながら検索機能を作ろう

# 【Ruby on Rails】paramsについて理解しながら検索機能を作ろう

## 目次
[1.はじめに](#1-はじめに)
[2.前提・テンプレ作成](#2-前提テンプレ作成)
[3.詳細画面の表示](#3-詳細画面の表示)
[4.検索機能の実装](#4-検索機能の実装)
[5.まとめ](#5-まとめ)

## 1. はじめに

本記事は、DMM WEBCAMP Advent Calendar 2023 6日目記事です。
DWCメンター・卒業生が記事を投稿しておりますので、是非他の記事もご覧ください!

### 執筆背景

Ruby on Railsを学習中に、よく`Post.find(params[:id])`みたいな記述を見かけると思います。
この`params`という記述は、ページ遷移やデータを作成する時に用いられ、さらにはタグによる絞り込み機能や検索機能にも登場します。

paramsがいまいち理解できない、活用方法が思い浮かばないという方に向けて、本記事を執筆いたしました。

### 目的
– paramsを理解する
– paramsを用いた検索機能を実装する

#

元記事を表示

JqueryでRedmineのメニューを閉じたり開いたりする方法

## JqueryでRedmineのメニューを閉じたり開いたりする方法
[Redmine Advent Calendar 2023](https://adventar.org/calendars/8974)の6日目の記事として作成しました。

* * *
### やりたいこと

Redmineのメニュー領域がかなり広いため、ユーザーが表示させたいチケットなどの情報を表示させる領域が相対的に狭くなるというデメリットがありました。
[Redmineでサイドバーを非表示にする](https://redmine.jp/faq/general/hide-sidebar/)で紹介されているような、サイドバーの開閉に対応しているテーマを利用する理由も、作業領域の最大化に対するニーズがあるからです。

テーマやプラグインをインストールしても、Redmineのメニューを閉じたり開いたりすることができますが、今回は、もっと簡単に、JqueryでRedmineのメニューを閉じたり開いたりする方法を紹介いたします。

下図の動画が完成イメージです。
マウスクリックではなく、マウスオーバーでメニューを開閉でき

元記事を表示

solid_cacheについて調べてみた

## はじめに

この記事は[Ruby on Rails Advent Calendar 2023](https://qiita.com/advent-calendar/2023/ruby-on-rails)の記事です。

## solid_cacheとは

`solid_cache`とは最近(具体的には2023年10月)に[最初のバージョンがリリースされた](https://rubygems.org/gems/solid_cache/versions/0.1.0)gemです。目的はRailsのcache storeの一つになることで、Redisなどを使わずRDBにキャッシュを保存することが特徴です。余談ながら、[initial commitは2022年11月](https://github.com/rails/solid_cache/commit/de56c1456f309f1df456c6be0482fe913d98239a)でしたので、約1年秘密裏に開発されていたことになります。

https://github.com/rails/solid_cache

## なぜRDBにキャ

元記事を表示

Railsアプリの画像をS3にアップロードをしてみた

# はじめに
フロントエンドよりの駆け出しエンジニアの私が、Railsのアプリケーションの画像をS3にアップロードしてと言われたのでやってみたの記事を書こうと思います。

# そもそもS3とは
AWSのオンラインストレージサービスです。
画像データは容量が重く、データベースでの保存だと、クエリの実行速度が重くなり、パフォーマンスが低下します。
さらに、ストレージ容量が満たされ、拡張が必要になることがあります。
そのため、S3などの大規模データを保管することに特化したサービスを使います。

S3以外の画像やファイルのストレージサービスには以下のようなものがあります。
– Google Cloud Storage
– Microsoft Azure Blob Storage
– Backblaze B2:

# Railsで、画像をS3にアップロードする方法
Railsで、画像をS3にアップロードする方法を調べました。
## 方法1 Active Storage
Rails標準の技術のActive Storageを使用する方法があります。
Active Storageは、ファイルアップロー

元記事を表示

Instagram Graph APIを使ってみた(Rails)

# 概要
おはこんばんにちわ。お疲れ様です。

RailsでInstagram Graph APIを導入したので備忘録ついでにそっと置いておこうと思います。

# 環境
– Rails 6
– faraday 1.8.0

# 始めに
Instagramには複数のAPIがありますが今回は表題にもある通り**Instagram Graph API**について解説します。

今回Railsでアカウント名を保存してそのアカウントの投稿内容を表示するということをやりました。

すなわち、1つのAPIキーから複数のアカウント情報を取得するということをやりましたので紹介します。

# Instagram Graph APIとは
グラフAPIの公式ドキュメントを雑に置いておきます。

[Meta for Developers](https://developers.facebook.com/docs/graph-api/)

ざっくりいうといろんなアカウントのいろんな情報が取れます。
しかもなんと**無料で!!!**

ただ感想としては**設定が面倒

元記事を表示

【個人開発/未経験】睡眠の質を高めるためのサポートをするアプリを開発してみた

# はじめに
はじめまして!@tomoya4819と申します。

突然ですが、皆様は質の良い睡眠を取り、スッキリとした朝を迎えられていますか?
私は夜遅くに寝て、朝ギリギリに起きるという生活を繰り返していた、朝が苦手な人間でした。

そこで、睡眠の質が良くなる行動をいくつか調べ、実践してみると夜早く寝付けるようになり、朝も余裕を持って起きることができました。
しかし、一番大切なのはその行動を続けること。つまり続けやすくなるようなアプリを作ればより睡眠の質改善に繋がるのでは!?と思い、本アプリ作成へと至りました。

※私は現在プログラミング学習中の未経験エンジニアであり、技術的な内容などは誤りを含む可能性があります。
そのため、間違っている点があればコメント等で教えていただけると幸いです。:bow_tone1:

# サービス名:[ZzzCrafter](https://zzzcrafter.fly.dev)
![ogp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3185454/e4a1a43b-c9

元記事を表示

Railsで考える物理削除と論理削除の使い分け

# 物理削除(Physical Deletion)とは
**`物理削除`は、DBから対象のレコードを完全に削除する方法です。**

“`ruby:app/controllers/customers_controller.rb
class CustomersController < ApplicationController def destroy @customer = Customer.find(params[:id]) @customer.destroy redirect_to customers_path, notice: "顧客情報を削除しました。" end end ``` # 論理削除(Logical Deletion)とは **`論理削除`は、レコードを物理的には削除せずに、削除を表すための方法です。** 真偽値でフラグをカラムとして追加することで、フラグによって、削除されたデータは非表示になり、実際にはDBにはレコードとして残されています。 ```ruby:schema.rb create_table :customers do

元記事を表示

OTHERカテゴリの最新記事