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

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

【個人開発】サウナ後のご飯「サ飯」の情報共有ができるアプリを開発しました。

# はじめに
はじめまして![タク](https://x.com/sttk_91) と申します。
未経験からWebエンジニアへの転職を目指して、
働きながらプログラミングスクールで学習を続けております。

この度、「[**サ飯の時間**](https://sameshi-time.com)」というアプリをリリースしました!
サウナ後のご飯「サウナ飯」、通称「サ飯」を記録・共有することで、

**▶︎ サウナ愛好家の方へ**
 「サ飯」を通して新しいコミュニティ
 サウナ ⇨ サ飯のモデルコース

**▶︎ サウナ初心者の方へ**
 サウナへの新しい入り口

を提供することを目指したCGMサービスです。

# サービス

![sameshi_ogp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878469/28948717-44d8-2093-0bc0-48c00c42168a.png)
**開発期間:3ヶ月**

サービスURL

https://sameshi-time.com

Githu

元記事を表示

Web開発エンジニアになるために

# 目次
1. Webエンジニアとは
1. そのために必要な知識
1. 現在の研究と業務のつながり
1. まとめ

# Webエンジニアとは
主に, フロントエンドとバックエンドの2つに分ける. ユーザからみてわかるフロントと在庫数やカード情報の照会等を行うバックエンドから成る.

# そのために必要な知識
1. インターネットについて
1. OSについて
1. データベースについて
1. APIについて
1. プログラミング
1. セキュリティ

多くの知識を必要とする.
>引用 https://tech-parrot.com/engineer/backend-engineer-roadmap-and-skills/#i-2

# 現在の研究と業務のつながり
セキュリティについて学ぶ ➡ 必須の知識となる(特に, バックエンドエンジニア)

# まとめ
多くの知識を必要とするため, 勉強量も凄まじいことになる. 現研究と並行して空き時間でGoやRubyの勉強を行う必要があるのではないか. シンプルに用語の理解を深める必要もある.

元記事を表示

【個人開発】初めてgemを作って公開してみた話

こんにちは!MaTTaと申します。
これまでWEBアプリ開発の記事をいくつか書いて来ましたが、今回は少し趣を変えてオリジナルのgemを開発したのでその経験をまとめてみます。

:::note warn
初学者につき、誤りを含む場合があります。
また、当Gemは各自のOpenAI API KEYの使用を前提にしておりその分の費用が発生します。
:::

## 開発経緯
プログラミングスクールの先輩が「アプリもいいけどGem作りもいい経験になるよ」と仰っていたのが最初のキッカケでした。「gemを作る」なんて今まで思いつきもしなかったのですが、よくよく考えるとGemって何なのかしっかり理解していないようにも思い、これもいい機会だなと。

刺激をくれた先輩の記事はこちらです。手順についてはそのまま参考にさせて頂きました。

[🐾動物言語🐾(pad_character)を『gem』で作ってみた!🐈](https://qiita.com/hfslca7439/items/6fda805d95bbd5d2fecc)

https://qiita.com/hfslca7439/items/6fda80

元記事を表示

Rails サーバーランチャーが見つかりません

# RubyMineでデバッグしようとしたら「Rails サーバーランチャーが見つかりません」って怒られた話

こんにちは!今日は、RubyMineでRailsプロジェクトをデバッグしようとしたときに遭遇した問題と、その解決方法について共有したいと思います。

## こんな困ったことが…

デバックやりやすいと聞いたのでRubyMineに乗り換えたのにこんなエラーが出てきました!

“`
エラー: Rails サーバーランチャー ‘/プロジェクトの名前/bin/rails’ がプロジェクトに見つかりませんでした
“`

「えっ、なんで?昨日まで普通に動いてたのに…」って感じで、ちょっと焦りました。

## 原因はこれだった

調べてみると、どうやらプロジェクトの`bin/rails`ファイルがどこかに消えちゃったか、うまく設定されてないみたいなんです。

このファイル、実はRailsアプリを動かすのに超重要な役割を果たしているんですよ。これがないと、RubyMineさんが「Rails、どこ〜?」って感じで迷子になっちゃうわけです。

## 解決方法はこれ!

さて、問題が分かったと

元記事を表示

Ruby 3.0.4 -> 3.2.2、Rails 6.1.0 -> 7.1.4の作業ログ

# 基本手順
大変勉強になりました。ぜひご一読ください。

https://qiita.com/jnchito/items/0ee47108972a0e302caf

## Gemfile更新
“`diff
source ‘https://rubygems.org’
git_source(:github) { |repo| “https://github.com/#{repo}.git” }

– ruby ‘3.0.4’
+ ruby ‘3.2.2’

# Bundle edge Rails instead: gem ‘rails’, github: ‘rails/rails’
– gem ‘rails’, ‘~> 6.1.0’
+ gem ‘rails’, ‘~> 7.1.4’
“`

## Dockerfile更新
“`diff
– FROM ruby:3.0.4
+ FROM ruby:3.2.2

# environment
ENV APP_ROOT /app
“`

# トラブルシューティング
## bundle installでversion conflict発生

元記事を表示

【Ruby】RuboCop を GitHub Actions に導入した

## 自己紹介
はじめまして、はる([@lemonade_37](https://twitter.com/lemonade_37))と申します。
駆け出しエンジニアとして働き始めて約半年が経過しました🐣

## 概要
新規プロジェクト開始時に、Rails アプリ内に RuboCop を導入し、
GitHub Actions に設定する手順をまとめました。

### 環境
– Ruby 3.3.4
– Rails 7.1.3.4

の環境で動作確認済み

:::note warn
間違っている箇所や、紹介した方法よりも良い方法があるかもしれませんので、その際は教えて頂けると嬉しいです🙇
:::

## なぜ RuboCop が必要なのか、自分なりの考え
### なぜ RuboCop というツールを使うのか
プロジェクト内のコーディング規約を、RuboCop のカスタマイズ設定としておけば、
レビューでいちいち指摘するまでもないようなことも各自で修正できますし、
後からプロジェクトに入った方も申し送りせずとも同じルールで記載ができます。

また、厳しくコードレビューを行っていても、人間な

元記事を表示

自分たちの役に立つものを開発せよ(初めてのチーム開発)

# はじめに
私は、内定直結型エンジニア学習プログラム「[アプレンティス](https://apprentice.jp/lp)」に6期生として参加しています。
その中でチーム開発に取り組んだので、学んだことや実際にどんなことをしたのかを書いていきます。
至らない点もあるかもしれませんが、優しい目で見守っていただけると幸いです。どうぞよろしくお願いいたします。

## 実際に作ったプロダクト
#### 時間管理アプリ(YALOOP)
– 学習時間の計測
– グラフによる学習時間の可視化(1日分、1ヶ月分)
– 1日の振り返りのための日報

![スクリーンショット 2024-09-10 16.38.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3835540/d1a5fc06-2f7c-74ea-313c-d984080256da.png)

## チーム開発の概要

### テーマ 『自分たちの役に立つものを開発せよ』
#### チーム開発の要件

– ベースとなる技術は HTML/CSS/Ja

元記事を表示

【個人開発】海外旅行初心者さん向けのサポートアプリを作成しました✈️

## はじめに

初めまして!
私はプログラミングスクールRUNTEQでRuby on Railsを学習しているもちと申します。
この度、卒業制作として **「Travel Starter」** というアプリを本リリースしました!
海外旅行が不慣れな人に向けて必要な情報を一元管理し、必要な準備のサポートをするサービスです。
アプリを使うことで、海外旅行に行く際の不安を軽減し、旅行のハードルを下げることを目指しています。

実は今回が初めてのQiita投稿です。卒業制作の記事はこちらで書きたいという入学時からの目標がありました。
読みづらい箇所もあるかと存じますが、ぜひご覧いただけると幸いです。

### サービスはこちら
https://adventure-travel-starter.com/

### GitHubリポジトリ
https://github.com/miki-ymmt/travel_app

[![Image from Gyazo](https://i.gyazo.com/73404179f8e5a5eb6ed9aeee4657c64a.png)](ht

元記事を表示

dotenv-railsを使ったグループへのGmail送信機能

この記事では、dotenv-railsを使ってGmailのメール送信機能を実装し、イベント通知を行うシステムをRailsで構築する方法について説明します。
今回はグループに入っているメンバーに,グループリーダーがメールを一括送信できるような機能を作成していきたいと思います.
## 1. dotenv-railsの導入
まず、dotenv-railsをGemfileに追加します。

“`:Gemfile
gem ‘dotenv-rails’, groups: [:development, :test]
“`

※dotenv-railsとは

dotenv-railsは、Railsアプリケーションで環境変数を管理するためのGemです。`.env`ファイルに設定した環境変数をアプリケーション内で利用できるようにし、セキュリティや設定の管理を簡単にします。特に、開発やテスト環境での機密情報の管理に役立ちます。

その後、`bundle install`コマンドを実行します。

## 2. 環境変数の設定
プロジ

元記事を表示

『"』や『&』などの謎の文字列がでてきた【特殊文字】

## 解決策
HTMLを覗いていると時々出会う **“`"“`** や **“`&“`** などの “&~~~;” は特殊文字と呼ばれるもの。

HTMLから情報を取得する際は下記のように置き換えよう。

~~~ ruby
# 出現頻度が高い文字

# ダブルクォーテーションを変換
.gsub(‘"’, ‘”‘)
.gsub(‘"’, ‘”‘)

# アポストロフィを変換
.gsub(‘'’, “‘”)
.gsub(‘'’, “‘”)

# アンパサンド(アンド)を変換
.gsub(‘&’, ‘&’)
.gsub(‘&’, ‘&’)
~~~

## 特殊文字とは
HTMLで ” **<** " や " **"** " などを文字列として表したいときに使う方法 「**文字実体参照**」と「**数値文字参照**」の2種類の表示方法がある

代表的なものは以下
| 文字 | 文字実体参照 | 数値文字参照 | 説明 |
| ——— | ————- | ————-

元記事を表示

Ruby gem 開発!中国語(簡体字・繁体字)と日本語を判別するgemを作ってみた(中編)

こんにちは、九兵衛です。前回の記事 (https://qiita.com/kyubey1228/items/e1ade213a04daad6713e) では、Ruby gemの基本的な構造と設定について説明しました。
今回は、実際にgemの中身を実装していく過程を共有したいと思います。
正直なところ、この過程は予想以上に複雑で、多くの発見と驚きがありました。

**1. データファイルの準備と驚きの発見**

まず最初に、中国語の文字を判別するためのデータファイルを用意しました。主に2つのファイルを使用しています:

1. `Unihan_Variants.txt`: Unicode consortiumが提供する中国語変体字のデータ
2. `traditional_chinese_list.txt`: 追加の繁体字リスト

これらのファイルを詳しく調べていく中で、私は中国語の文字の複雑さに圧倒されました。例えば、「門」という字は日本語でも使いますが、中国語では簡体字で「门」と書きます。しかし、「門」自体も繁体字として使われているのです。このような複雑な関係が無数にあることを知り、言語

元記事を表示

【update_attributesが使えない】NoMethodError in RegistrationsController#update【Rails】

## はじめに

Ruby on Railsにて、以下のエラーが発生しました。

“`ruby
NoMethodError in RegistrationsController#update
undefined method `update_attributes’ for #
“`

## TL;DR

update_attributesではなくupdateを使用することで解決しました。

Rails6からupdate_attributesは非推奨になっているようです。

## 参考

[https://railsguides.jp/6_0_release_notes.html#active-record-非推奨化](https://railsguides.jp/6_0_release_notes.html#active-record-%E9%9D%9E%E6%8E%A8%E5%A5%A8%E5%8C%96)

https://github.com/rails/rails/blob/v6.0.2.1/activerecord/lib

元記事を表示

複数の配列をまとめるArray#zip関数を使ってコードをスッキリさせる

# 悩み
以下のコードを見てください。
“`ruby
array_1 = [1, 2, 3, 4, 5]
array_2 = [‘a’, ‘b’, ‘c’, ‘d’, ‘e’]
array_3 = [‘A’, ‘B’, ‘C’, ‘D’, ‘E’]
array_1.each_with_index do |v1, i|
v2 = array_2[i]
v3 = array_3[i]
pp “#{v1}, #{v2}, #{v3}”
end
“`
このコード、以下の部分がなんとなく嫌じゃないですか?
“`ruby
v2 = array_2[i]
v3 = array_3[i]
“`
なにかうまく書く方法がありそうな気がします。
今回はそんな悩みを解決する関数を見つけたので共有したいと思います。

# 結論
以下のように `Array#zip` を利用しようって話です。
※ただし、大容量の配列の場合はパフォーマンスが悪いので注意。
“`ruby
array_1 = [1, 2, 3, 4, 5]
array_2 = [‘a’, ‘b’, ‘c’, ‘d’, ‘e

元記事を表示

AWS Lambdaへのデプロイにマルチステージビルドのコンテナイメージを使う【Ruby】

# はじめに
AWS LambdaへRubyのコードをデプロイする時にマルチステージビルドのコンテナイメージを使ったので、そのサンプルを紹介します。

# やりたかったこと

– RubyのコードをAWS Lambdaにデプロイしたい
– Dockerコンテナイメージをアップロードしてデプロイしたい
– Gemネイティブエクステンションを使いたい

# エラーが出た

AWS Lambda向けに、AWSのRubyベースイメージを使ってbundleインストールしたらエラーが出た。

“`shell
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
“`
**Gemネイティブエクステンションのビルドに失敗**

# 解決方法

Dockerのマルチステージビルドを使います。

:::note info
Gemネイティブエクステンションを使わないのであればマルチステージビルドは不要
:::

# Gemネイティブエクステンションとは?
Gemのコードの中に、Rubyで書かれた部分と、CやC++などのネイテ

元記事を表示

休日に新しい言語に触れたい ~Ruby編 環境構築からHello Worldまで~

# はじめに

https://qiita.com/MichaelHashimoto/items/ee3f5e9a8f99c4fd0371

この第二弾として、Rubyを触ってみました。環境構築に時間がかかり、休日1日分ではHello Worldまでしか進められませんでしたが、そこまでを記事にします。

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

# 環境構築

## 環境

OS: Ubuntu22.04
エディタ: vs code

## rbenv, ruby-buildのインストール (Ubuntuの場合)

ここでは、rbenvというrubyのバージョン管理ツールを使ってrubyをインストールすることにしました。(Pythonのpyenv的なもの)
これにより、必要に応じて、rubyのバージョンを変えられるようになります。

rbenvとそのプラグインであるruby-buildをインストールしましょう。
rbenvのリポジトリのreadmeに従ってインストールすればOKです。htt

元記事を表示

【Rails初心者から中級者まで】scopeの基礎から完全解説

# はじめに

rails単体でのアプリケーションでは正直scopeというものは使わなかったですが、実務においてSPAだとかなり使う面があったので、今回記事にしました。

### scopeとは何か

https://railsguides.jp/active_record_querying.html#%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%97:~:text=strict_loading%3A%20true%0Aend-,15%20%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%97,-%E3%82%88%E3%81%8F%E4%BD%BF%E3%81%86%E3%82%AF

Rails ガイドさん より

> よく使うクエリをスコープに設定すると、関連オブジェクトやモデルへのメソッド呼び出しとして参照できるようになります。スコープでは、where、joins、includesなど、これまでに登場したメソッドをすべて使えます。どのスコープメソッドも、常にActiveRecord::Relationオブジェクトを返します。スコープの本体

元記事を表示

[Ruby] if文とcase文の使い分け

社内勉強会でcase文の中でfindパターンができた話を聞いていたら、if文とcase文ってなんで別々に存在するのだろう、という疑問が湧いた。

なんとなく分岐が多い時に可読性をあげたりすることができるのかなと思っていたが、caseの優れたところがあったため、まとめてみた。

## `===`演算子の活用
そもそもRubyって`===`演算子があるの?というところから始まった。JavaScriptだとよく見かけるのだが…以下ブログがすごくわかりやすかった。

https://qiita.com/Siva0410/items/c0b6ed52017ffada8bf4

要するにゆるい`==`で、サブクラスの所属まで検知してくれるとのこと。
なので、オブジェクトや`..`を使った範囲内のものに属するかを検知することができる。

以下がその例である。

### 1. 数値の範囲
“` ruby
age = 25
case age
when 0..12
puts “子供”
when 13..19
puts “10代”
when 20..64
puts “大人”
else

元記事を表示

RubyでprivateメソッドをRspec等で呼び出す方法

# 結論 sendメソッドを使おう!

“`
class User
def greet(name)
“Hello, #{name}!”
end

private

def secret_method
“This is a secret!”
end
end

user = User.new
puts user.send(:greet, “Alice”) # => “Hello, Alice!”
puts user.send(:secret_method) # => “This is a secret!”
“`

元記事を表示

Rubyの配列とか、ハッシュとか、、、

## 始めに・・・
先日後輩のコードレビューをしていた際に「ハッシュがさぁ!ハッシュがさぁ!」と先輩ぶっていたが単純に配列だったという悲しいことを晒したので懺悔の意味も込めて、、、

## 配列とは、、、
配列とは複数のデータを纏めて格納できるオブジェクト
“`ruby
#空の配列
[]
#サンプル
[‘配列1′,’配列2′,’配列3’]
#クラスはArray
[].class #=> Array

#サンプル
irb(main):003> a = [‘配列1′,’配列2′,’配列3’]
=> [“配列1”, “配列2”, “配列3”]
irb(main):004> a[0]
=> “配列1”
“`

主にRailsだとeachで使う気がする
“`Ruby
numbers = [1,2,3,4,5]
irb(main):009> sum = 0
=> 0
irb(main):010* numbers.each do |n|
irb(main):011* sum += n
irb(main):012> end
=> [1, 2, 3, 4, 5]
irb(main):013>

元記事を表示

文字列をTrue or Falseに変換する

#### 環境

Ruby2.6
Rails4.0

#### Booleanの判断の仕方

RubyにはBooleanClassというは存在していません。その代わり、FalseClass、TrueClassというのが存在します。なぜ、そのような設計をしたのだろうか。他言語から移行した人からしてみれば訝しく思うのも無理はない。

Boolean型つまり、FalseClassかTrueClassかの判断は、このようなやり方で判断することになります。

“`sample.rb
if params.is_a?(FalseClass) or params.is_a?(TrueClass)
puts “いわゆるBoolean型です”
else
puts “いわゆるBoolean型ではありません”
end
“`

#### テスト結果

“`test.rb
params = true # いわゆるBoolean型です
params = True # エラーになります
params = TRUE # エラーにはならないがwarningになる(

元記事を表示

OTHERカテゴリの最新記事