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

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

【Rails6】mappingをしようした診断機能

## 1. 導入
### 背景
Railsアプリケーションでユーザー入力に基づく診断機能を実装する方法を説明します。本記事では、ユーザーの名前と選択したシナリオに応じて、最適な花を推薦する機能に焦点を当てています。
### 目的
この機能を通じて、特定の条件に基づいて適切なデータをマッピングし、ユーザーに適した結果を提示する方法を示します。

## 2. 実装手順
### 基本設定
– Railsアプリケーションのセットアップ
– 必要なGemのインストール(例: gem ‘sqlite3’, gem ‘puma’)

モデルの作成
“`ruby:ruby
# app/models/flower.rb
class Flower < ApplicationRecord end ``` ### コントローラの設定 ```ruby:ruby class DiagnosesController < ApplicationController def create @recipient_name = params[:recipient_name].strip.dow

元記事を表示

全てのモデルを列挙する

# やりたいこと

全てのモデルを列挙したい。

# 方法

“`rb
# 開発環境だとクラスが自動読み込みされる。
# このままだと読み込み済みのモデルしか列挙できないので、明示的に一括読み込みしておく。
# 規模が大きい Rails アプリケーションだと時間がかかる。
Rails.application.eager_load!

# 全てのモデルを列挙する。
# ApplicationRecord のような抽象クラスは除外する。
ActiveRecord::Base.descendants.reject(&:abstract_class?)
“`

# バージョン情報

※ 現時点での最新のバージョンではありません。

“`rb
RUBY_VERSION
#=> “3.1.2”

Rails.version
#=> “7.1.4”
“`

元記事を表示

【Ruby】文字列と数値を変換する方法

## 文字列を数値に変換する

文字列を数値に変換するには`.to_i`メソッドを使用します。

“`ruby
value = “123”
integer_value = value.to_i
puts integer_value
# 123
“`

文字列が整数に変換可能な場合にはその整数値が返されます。
変換できない場合には、`0`が返されます。

“`ruby
value = “abc”
integer_value = value.to_i
puts integer_value
# 0
“`

## 数値を文字列に変換する

数値を文字列に変換するには`.to_s`を使用します。

“`ruby
number = 123
string_value = number.to_s
puts string_value
# “123”
“`

すべてのオブジェクトは`.to_s`メソッドを持っており、呼び出すことでそのオブジェクトの文字列表現を取得できます。

“`ruby
array = [1, 2, 3]
string_value = array.to_s
p

元記事を表示

GitHubプルリクエストをローカルにcheckoutする手順

## 背景
背景としては他の開発メンバーのプルリクをこちらで修正するためにローカル環境へ内容を落とす必要があったためRequest(プルリクエスト)をローカルへcheckoutする必要がありました。

この記事では、GitHubのプルリクエストをローカル環境に取り込むための具体的な手順について説明します。

## 1. 対象リポジトリをclone
まず、対象リポジトリをローカルにcloneします。以下のコマンドを使用してください。

“`
git clone git@github.com:GitHubアカウント名/test.git
“`
testリポジトリを例としてcloneしています。

## 2. fetchを実行
次に、プルリクエストのIDと新しく作成するブランチ名を指定して、git fetchコマンドを実行
“`
git fetch origin pull/1/head:develop
“`
ここで、1はプルリクエストのIDで、developは作成するブランチ名です。プルリクエストのIDはGitHubのプルリクエスト画面から確認できます。

## 3. 作成されたbra

元記事を表示

【Ruby】ユーザの入力を受け付ける方法

ユーザーからの入力を受け付けるには`gets`メソッドを使用します。

## 基本的な使い方

`gets`メソッドは、標準入力から1行のデータを読み取ります。
以下は、`gets`メソッドの基本的な使用例です。

“`ruby:example.rb
puts “名前を入力してください”

name = gets

puts “こんにちは” + name + “さん”
“`

このコードを実行すると、ユーザーに名前の入力を促し、入力された文字列を使用してメッセージを出力します。

“`terminal
$ ruby example.rb
名前を入力してください
sample
こんにちはsample
さん
“`

## 改行文字の取り扱い

`gets`メソッドは、入力されたデータの末尾に改行文字を含みます。
この改行文字は`chomp`メソッドを使用することで削除できます。

“`ruby
puts “名前を入力してください”

name = gets.chomp

puts “こんにちは” + name + “さん”
“`

上記のようにすることで末尾の改行文字が削除され

元記事を表示

【Rails】メンション付きコメントがあった際にメールで通知をする方法

## はじめに
Webアプリでよくある、@username でメンション通知をできる機能を実装したので、やり方を残しておきます。

### 学べたこと
– `after_create`などのコールバックを使う際のデータの扱い方
– メールを送りたいときのメソッドの作り方
– 絶対リンクの作り方

## やりたいこと
ポストに対してのコメントで’@username’と記述した際にメンション通知を飛ばしたい。
メール送付は非同期処理で行いたい。

### 前提
– Redisとsidekiqを導入

## やり方
### 方向性
1. メンション通知用のメソッドをMailerを作って実装
1. viewの作成
1. `after_create`を使って、Commentモデル内にメール送付のメソッドを定義
1. 保存したコメントの内容から’@’に反応してusernameを検知
1. もしメンションされていたら、メールを送信

### Mailerの内容
“`ruby
class CommentsMailer < ApplicationMailer def mention

元記事を表示

Ruby基礎①

# 久しぶりに勉強してみる
昔スクールで勉強したことあるが使う機会がなかったので全然使っていなかった。しかし意味働いているベンダーはRubyを使っているみたいだ。

親会社もグループ会社もRuby、最近だとサーバレスなフレームワークを使うみたいだが。TypeScriptをやった方がいいと言いつつRuby on Railsの需要もまだある。

公式は日本語もあるので学習しやすいだろう。
[official](https://docs.ruby-lang.org/ja/3.3/doc/index.html)

https://docs.ruby-lang.org/ja/3.3/doc/spec=2fliteral.html

“`ruby
# 数値の123、文字列などをリテラルという。
# Rubyで使える例

# 数字
puts 123

# 文字列
puts “Hi”

# 配列
puts [1, 2, 3]

# ハッシュ
puts {‘ja’ => ’81’}

# 変数名 = 式や値
num = 123
puts num

greet = “Hi”
puts greet

is

元記事を表示

File.deleteのちょっとしたテクニック

## はじめに

RubyのFile.deleteメソッドを使うときのちょっとしたテクニックを紹介します。

## 環境

Ruby2.6

## 内容

File.deleteはファイルを削除するメソッドです。データベースから読み込んだ内容をテキストファイルに書き込みをするような場合、同じ名前のファイルが既にあれば、このメソッドを利用して事前に削除します。

このメソッドをそのまま実行すると、つぎのような場合にエラーが発生することになります。

#### 削除対象のファイルがないとき

ないファイルに対して削除しようとするとエラーが発生します。そのようなファイルはありませんという内容のエラーです。

Rubyにはなぜか、VBにはあったエラーが発生した行の次の行から処理を再開させる、Resume Nextに該当するメソッドがありません。(これ便利だったんだけどな・・・)

例外に飛んだ後、エラーに該当するerrnoでキャッチして、そこでなんらかの処理をしなくてはいけないことになります。

Rubyには代わりに、エラーが発生した行に戻る、retryといったメソッドがあります。例外の中で何

元記事を表示

View側の繰り返し処理に対応してJavaScriptで動的にidを取得する方法

## はじめに
インスタ風のアプリを作成している中で、Ralis側で繰り返し処理をしている箇所にJavaScriptでcssクラスをつけたり外したりする処理 などの実装に苦戦したので、実装方法を整理してアウトプットします。

## やりたいこと

記事の一覧画面でAjaxを使って、いいねができるようにしたい

### 問題
show.htmlのようなpost_idが一意に決まっているようなページをJavaScriptで操作するのではなく、
index.htmlのようなpostがたくさん表示されているページから各ポストのidを個別に指定して操作していく実装がわからなかったです。

#### viewはこんな感じ
“`ruby
– @posts.each do |post|
.card
= image_tag post.user.profile.avatar
= show_posttime(post)
= post.user.username

– post.images.each do |image|
= image_tag image

元記事を表示

【Rails】いいね機能の実装ー中間テーブルとはなにか?ー

## はじめに
初学者向けのRails講座には、大抵の場合いいね機能の実装が含まれていると思います。
ただ、いいね機能を実装するための”中間テーブル”は、概念的で理解しにくいところがあるため、自分の整理のためにもアウトプットします。

### 前提
– インスタ風のアプリを作成
– userがpostを投稿する感じ
– 他のuserのpostにいいねできる機能を作りたい

### 何がしたいのか
– いいね機能を実装したい
– postの一覧画面(post/index.html)からいいねできるようにしたい

### どうする必要があるのか
– 中間テーブル(likesテーブル)を作成する
– 一意性制約をつける
– likesテーブルを通していいねしたPostを取得できるようにする
– routesの工夫

## 実装方法
### 中間テーブルを作る
1. 普段通り`rails g model Like`でモデルを作る
1. マイグレーションファイルを編集
1. reference でuserとpostを追加
1. 複合インデックスを追加し、一意性制約をつける
1.

元記事を表示

【Ruby】予約語一覧

以下は予約語です。予約語は原則、変数名やクラス名として使用できません。

“`
BEGIN class ensure nil self when
END def false not super while
alias defined? for or then yield
and do if redo true __LINE__
begin else in rescue undef __FILE__
break elsif module retry unless __ENCODING__
case end next return until
“`

https://docs.ruby-lang.org/ja/latest/doc/spec=2flexical.html

元記事を表示

コメントに対する返信機能 モデルの親子関係を自己結合で実装

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

## 記事投稿の背景
ここではXのクローンサイトを作成中に実装した機能についてご紹介します。投稿に対してコメントをする機能までは実装していたのですが、コメントに対する返信機能を実装する時に実装方法が分からずに調べた内容となります。

## 実装したコードの紹介と解説
“`ruby:マイグレーションファイル
class AddParentIdToComments < ActiveRecord::Migration[7.0] def change add_reference :comments, :parent, foreign_key: { to_table: :comments } end end ``` - `parent_id`というカラムをcommentsテーブルに追加します。 - `foreign_key: {to_table: :comments}`の部分でこのカラムにforeign_keyとしての制約を与え、そのキ

元記事を表示

【勉強】大学院生がRuby on Rails勉強してみた

## はじめまして
こんにちは.理系大学院生(数学専攻)です.
備忘録的に文章を残しておこうと思います.誰かの役に立てば万々歳ぐらいのやつです.就職した後に自分で見て赤面してくれー(笑).

## どんなひと?
AtCoderで競技プログラミングをやったりちょっっとだけ研究でプログラムを書いたりしているだけで,あまりにも開発経験が浅いということだけ先に.
競プロでPython,研究でC言語を使っています.

最近就活しなきゃなーってなってインターンに参加してみたはいいものの,本当に参加しただけになってしまった気がしてる(一応選考ルート乗ってみるけど不安)

## エンジニアインターンに参加してみて分かったこと
### ①エンジニアのしゃべってる言葉が分からない
くらす?えらーはんどりんぐ???いんすたんす?????みたいな.話に全然ついていけなくてめちゃくちゃ迷惑かけました
### ②バックエンドでRuby on Railsが使われがち
私が見てる会社だけかも.MVCモデルおもろそう.
### ③プログラミングやっぱりたのしい!
これは本当に気付けて良かったこと.エンジニアたのしそう.

元記事を表示

【Ruby】演算子優先順一覧

| 順位 | カテゴリ | 演算子 |
|——|——————————|—————————-|
| 1 | スコープ | x::y |
| 2 | 配列 | [x, y, z] |
| 3 | 正、否定 | +x、!x、~x |
| 4 | べき乗 | x ** y |
| 5 | 負 | -x |
| 6 | 乘算、除算、剩余 | x * y、x

元記事を表示

【個人開発】ソロ活をお助け!ひとり外食専用投稿アプリを作成しました🍽️【Rails】

# はじめに
こんにちは、なかじ(@nakayama-bird)と申します。
現在、プログラミングスクールに通ってRuby on Railsを学習しております。
今回スクールの卒業制作として、ひとり外食に特化した飲食店の投稿アプリを作成しました。

**サービスURL**
[Me Time Meals | ひとり外食投稿アプリ](https://www.metime-meals.com/)
![ogp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760414/426caa33-0097-02b6-a57c-10479f3a495b.png)

**リポジトリ**

https://github.com/nakayama-bird/metime-meals

:::note warn
私はプログラミング学習中で、初学者です。
内容に誤りのある場合がございます。
もし間違いがあればご指摘いただけますと幸いです。
:::
## 目次
[1.アプリの紹介](#1-アプリの紹介)
[2.技術構成](#2-技術

元記事を表示

【Rails】delete_allでエラーが発生する

## はじめに
Railsのアップデート中にdelete_allを使用している箇所でエラーが出たので、その対応をまとめます。

## 問題
コード
“`ruby
User.delete_all(company_id: company.id)
“`

エラー文
“`ruby
wrong number of arguments (given 1, expected 0)
“`

## 解決方法
Rails7では、delete_allに引数を取れなくなっているので、whereを使用するように修正します。
“`ruby
User.where(company_id: company.id).delete_all
“`

## 参考
https://qiita.com/migaruna_debu/items/ad685c6d75d7af5fa7d9

元記事を表示

プロフィール画像の編集を非同期処理で実装する方法

## はじめに
railsのCRUD操作には慣れてきましたが、JavaScriptを使った非同期処理にまだまだ手こずっているので、学習記録として実装した非同期処理を記載します。
特に今回の実装ではchatGPTにかなり助けられた面があるため、なぜそのコードにしているのか、という点も含めて言語化していこうと思います。

## やりたいこと
![20240915_recording.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3875060/54a3a46d-6e39-79e5-b899-29421081bf27.gif)

– JavaScriptから画像をPOSTする
– POST後非同期処理でprofile画像を表示する

### 具体的な方法
– axiosとrails-ujsを導入し、javascriptからpost/putする
– javascriptでプロフィール画像の設定状況を確認し、条件に応じて画像の出し分けをする

### 前提
– rails6を使用
– UserとProfileは1

元記事を表示

[Ruby/AWS]alpha vantage APIを使って株のデータをRedshiftに入れる

株のデータを分析してダッシュボードを作るため、今回はAWSのデータウェアハウスサービスであるRedshiftを使うことにした。

GoogleのBig QueryやSnowFlakeのようなサービスで、以下のブログの説明がわかりやすかった。

https://qiita.com/rm_zeal/items/b77818daff6f92fc5cd3

今回の実装で割と迷うところが多かったため、備忘録として残してみた。

## まずは株のデータを取得
株のデータはAlpha Vantageという無料の株APIから取得することに。

https://www.alphavantage.co/

メインページから`GET FREE API KEY`をクリック

![スクリーンショット 2024-09-15 21.54.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3754242/18d5acfe-8225-e44e-75f0-a2a4141f9204.png)

情報を入れてGETボタンを押すと簡単にキーが

元記事を表示

休日に新しい言語に触れたい ~Ruby編 特徴的なコードを実装してみる~

# はじめに

https://qiita.com/MichaelHashimoto/items/7b9004668421ae2cbb59

こちらの記事の続きです。

私はC#やPythonを仕事で使っているため、これらの知識をベースにして理解を広げます。同じような境遇の方の理解の助けになれば幸いです。

# 特徴的なコードを実装してみる

## ブロック

rubyに特徴的なものとして、”ブロック”があります。

まずは、以下のサンプルコードを見てください。
“`ruby
numbers = [1, 2, 3, 4, 5]
numbers.each do |number|
puts number * 2 # putsで出力
end
“`

出力結果は以下で、numbersの各要素が2倍されたものが出力されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1223968/ece19765-005c-5247-93ec-9de3f3b24902.png)

このように

元記事を表示

Paizaで遭遇したRuby メソッドまとめてみた。

webエンジニアへ転職活動中の[ニノ](https://x.com/MuscleEngi87389)です!

これまで`Rails`については、学習、個人開発を行ってきましたが、就活で`企業のコーデイング試験`を解く中で、`ruby`についての理解ができていないことがわかりました。そこで`paiza`をここ1ヶ月くらい解く中で新しく知った`ruby`のメソッドや用語をまとめておこうと思います。

### 用語
#### irb : Rubyを対話的に入力・実行するためのツール

### 知識
・Rubyでは、`大文字`で始まる変数(例: P, X, Y, Z)は「定数」として扱われる。

## メソッド

### `map`メソッド:

配列の各要素に対して何らかの操作を行い、その結果を集めて新しい配列を作成するメソッド
“`ruby
# 基本構文
配列.map { |item| 実行する処理 }

# 例:各要素を2倍にした配列を返す
numbers = [1, 2, 3, 4, 5]
doubled_numbers = numbers.map { |n| n * 2 }
# =>

元記事を表示

OTHERカテゴリの最新記事