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

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

Raspberry PiにRailsサーバーを立てて運用する

![P_20240924_172516.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72890/ea5e1765-6b95-a2c9-7e62-19679f63e5c9.jpeg)

# 初めに
家庭内で家族が使えるお小遣いアプリをRuby on Railsで作っているのですが、少しでも維持費を抑えるためにRaspberry Piを自宅サーバーにしてその上で動かすことにしました。
ただし、今回はあくまで自宅内でのサービス限定とし外部には公開しません。

# 前提条件
– Raspberry Pi 5を使用
– OSインストール、初期設定、ネットワークの設定は済んでいる
– 消費電力を抑えるために無線LANはOFFにしている
– sshで接続できるようになっている

# 下準備、環境アップデート
“` bash
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo rsi-update
sudo rpi-upda

元記事を表示

Rspec で特定種類のテストだけを対象に before / after を設定する例

# 例

system test の全てのテストケースを対象に `before(:each)` の処理をさせる場合

`rails_helper.rb` に以下を設定

“`rb
RSpec.configure do |config|
config.before(:each, :type => lambda { |spec_type| spec_type == :system}) do

end
end
“`

# チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

# プロフィール・経歴

https://github.com/YumaInaura/YumaInaura

元記事を表示

【Ruby】文字列の長さを調べる方法

文字列の長さを調べるには`length`メソッドを使用します。

## 基本的な使い方

`length`メソッドは、以下のように使用します。

“`ruby
# 文字列の長さを取得
string = “Hello, World!”
puts string.length # 出力: 13

“`

空白や特殊文字もカウントされます。

“`ruby
string_with_spaces = ” Ruby ”
puts string_with_spaces.length # 出力: 8
“`

## 配列の要素を数える

配列に対して`length`メソッドを使用すると、その配列に含まれる要素の数を返します。

“`ruby
empty_array = []
puts empty_array.length # 出力: 0

mixed_array = [1, “two”, :three]
puts mixed_array.length # 出力: 3
“`

## `size`メソッド

`size`メソッドも`length`メソッドと同様に使用できます。

“`r

元記事を表示

heroku run rails db:migrateでdbに接続ができないエラーが出た。

自分用備忘録です。初心者なので、間違っていることや、理解が違っていることがありましたら、教えていただけると幸いです。

## 問題
deviseでメール認証機能をつけたアプリをherokuにデプロイしようとした際、dbが見つからないというエラーが出た。

## 解決方法
database.ymlファイルのproductionに
“`url: <%= ENV['DATABASE_URL'] %>“` を追加する。

#### [解決までの過程(記録用)]
deviseで管理者機能をつけたアプリをherokuにデプロイ。
“`ruby
% git push heroku master
“`

HerokuのダッシュボードのResourcesからadd on設定
postgresqlを選択

データベースの設定が完了したので、
“`ruby
% heroku run rails db:migrate
“`

下記のエラーが発生しました。
“`ruby
Running rails db:migrate on ⬢ hidden-journey-8

元記事を表示

【Rails】Support for calling #default_scope without a block is removed.

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

## 問題
コード
“`ruby
default_scope order(“created_at DESC”)
“`

エラー文
“`ruby
Support for calling #default_scope without a block is removed. For example instead of `default_scope where(color: ‘red’)`, please use `default_scope { where(color: ‘red’) }`. (Alternatively you can just redefine self.default_scope.)
“`

## 解決方法
以下のように修正します。
“`ruby
default_scope { order(“created_at DESC”) }
“`

## 参考
https://stackoverflow.com/questions/3

元記事を表示

【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-技術

元記事を表示

OTHERカテゴリの最新記事