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

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

Ruby On Railsにおける基本コマンド

# Ruby On Railsにおける基本コマンド

## 背景説明
プログラミングスクールで学んだ**Ruby on Rails**の基本操作方法をまとめる。
メモとして使う予定。
## アプリ作成。
webアプリケーションを作成するコマンド。アプリを作成したいフォルダーで実行。[^1]

[^1]:アプリの名前は**appName**にしています。
### 基本
“`
rails new appName
“`
### よく使うオプション
バージョン7.0.0、データベースにmysqlを指定
“`
rails _7.0.0_ new first_app -d mysql
“`
## コントローラー作成

コントローラーを作成するコマンド。[^2]

[^2]:コントローラーの名前は**mails**にしています。名前を必ず**複数形**にすること
“`
rails g controller mails
“`

## モデル作成
モデル作成するコマンド。[^3]

[^3]:モデルの名前は**mail**にしています。
“`
rails g model mail
“`

元記事を表示

テストコードのコツと注意点

## はじめに

新卒入社、おめでとうございます
テストコードの初歩的なTipsについてまとめてみました

## Tips

※ コード例はRuby(RSpec)を使用しています

以下のようなBooleanを返す処理に対するテストコードを考えます
`is_xxx?`では、判定処理`check_a?`・`check_b?`両方が**true**の場合に**true**が返されます

“`:ruby
class Test
def is_xxx?
check_a? && check_b?
end
end
“`

この場合、テストコードはこんな感じになると思います
“`:ruby
describe Test do
describe ‘#is_xxx?’ do
subject { instance.is_xxx? }

let(:instance) { described_class.new }
let(:a) { true }
let(:b) { true }

before do
allow(instan

元記事を表示

【個人開発】自転車好きのための投稿サービスを開発しました

## サービス概要
### サービス名 : 「ChariLog(チャリログ)

自慢のカスタムや友人とのツーリングなどの思い出を写真・カスタムパーツ(アイテム)と共に発信できる、 **自転車というツールに特化した投稿サービス**です。

![charilog-introduction-image](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3745701/3753f69c-60f0-4f44-70d6-6801f83f30ae.jpeg)
【サービスURL】https://charilog.jp
【Githubリポジトリ】https://github.com/kiyosan0517/charilog

## なぜそのサービスを作ろうと思ったのか
– **自転車の楽しさを共有できる友人づくりに多少苦労した経験があったため**
=> アメリカやヨーロッパ圏などではBMXやロードレース等を中心とした自転車競技がメジャースポーツとして発展しているものの、日本においては健康志向の中年層がメインに

元記事を表示

blastengine Ruby SDKでメール種別を気にせず送信できるようになりました

[blastengine](https://blastengine.jp/)はエンジニアフレンドリーなメール配信サービスです。APIとSMTPリレーの両方をサポートしており、手軽に素早くメール配信ができるようになっています。

今回はRuby SDKでメールの種類(即時配信、一括配信など)を気にせずに利用できるMailクラスを作成しましたので、その使い方を解説します。

## コードについて

Ruby SDKはMIT Licenseのオープンソース・ソフトウェアです。リポジトリは以下にあります。

[blastengineMania/blastengine\-ruby](https://github.com/blastengineMania/blastengine-ruby)

## ユーザ登録する

blastengineにユーザ登録します。管理画面に入るためのユーザID、パスワードが手に入るので、ログインします(ユーザIDは後で使います)。

![https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197026/

元記事を表示

displayの役割と要素の表示方式について

今回入社した際に、最初はフロントエンドのコーディングをするとのことだったため、よく使う「displayの使い方」を改めて勉強した内容をまとめます。

## displayとは?
displayとは、CSSのプロパティの1つで、要素の表示方式を制御します。主な値にはblock、inline、inline-block、flex、noneがあり、レイアウトの構造と見た目を調整できます。

![スクリーンショット 2024-04-02 9.16.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3670873/f4d8d81a-5b90-b7a9-9e14-3eaa8dc0fba2.png)
参照:[【CSS】displayの使い方を総まとめ!inlineやblockの違いは?](https://saruwakakun.com/html-css/basic/display#section1 “displayの使い方についての記事”)

## デフォルトの値
displayはCSSで明示的に指定しなくても、タグ

元記事を表示

ポートフォリオ作成#1

1.技術選定
**バックエンド:Ruby / Rails(APIモード)**
**採用理由:**
RUNTEQでRuby、Railsを学んできたため、学習コストも考えてRails、Rubyを選択しました。
またRailsにはAPIモードがあり、フロントエンドではvue.jsやReactなどを採用した上でバックエンドではRailsと綺麗な役割分担ができる点で選択しました。

**フロントエンド:React、Next.js、TypeScript**
**採用理由:**
理由としてはRails学習中にReactの名前をよく聞くので触ってみたいというものです。調べてみるとフロントエンドではvue.js、React使っている方が多いと感じたのでトレンドでもあるのかなとも思います。
技術的にも個人開発においてはvue.jsとReactはそこまで差がないように感じるので、求人数を見て多いReactを選択しました。
Reactの弱点である初回表示時の読み込みを改善するためにNext.jsを採用します。個人的には初回表示が遅いとめんどくさくなって別のページを見に行くことが結構多いのでユーザー体験をより良

元記事を表示

【Ruby】Symbol(シンボル)

## シンボルとは

簡単に言うと文字列とほぼ同じ見た目のオブジェクト。

## もうちょっと詳しく

Rubyの内部ではクラス名、メソット名、変数名などの名前を整数で管理しています。
シンボルも内部的には整数となります。
文字列で処理するより、整数で処理した方がパフォーマンス的に良いから!

## 不変性(Immutable)

シンボルは変わらないです。
シンボルオブジェクトの変更は不可能です。

## メモリアドレスも変わらない

コードで見てみましょう

“`hello.rb
string_hello = ‘hello’
symbol_hello = :hello

puts string_hello.object_id
puts symbol_hello.object_id
“`

“`bash
ruby hello.rb
# 2840185880
# 1056668

ruby hello.rb
# 2672372840
# 1056668

ruby hello.rb
#

元記事を表示

PG::DatatypeMismatch: ERROR: column “foo” cannot be cast automatically to type precision

:::note warn
**注記**
この記事の投稿者は初学者であり、自身の学習の備忘録目的で記事投稿を行なっております。
情報の正確さには最大限注意をしておりますが、もし誤り等がございましたらお知らせいただけますと幸いです。
:::

ご覧いただきありがとうございます!
**Ito** と申します!
Ruby on Rails初学者です。

RailsでのWebアプリを作成中、データベースにテーブルを作成した際に、設定するデータ型を間違えてしまいました。
それ自体は「あるある」だと思うのですが、`migration`ファイルを作成してデータ型を変更しようとした際に**ほんのちょびっとだけ**ハマってしまったので備忘録として残します。

## 動作環境
開発環境
– Rails 7.1.3.2
– サーバー:localhost接続
– データベース:PostgreSQL

## エラーの詳細

### エラーメッセージ
“`
== 20240401****** ChangeLatAndLngToFloatInSpots: migrating ============

元記事を表示

オープンソースのバグで開発が止まりかけたので、コミットを積んで直してみた話

去年、eKYCを利用した本人確認機能を開発していたのですが、導入しようとしたオープンソースにバグがあり、そのままでは開発が進められない事態となりました。
この状況を打破すべく、オープンソースにコミットを積んで運良く直すことができたので、背景や解決までに至ったプロセスなどを紹介します。

# 背景

ユーザーが本人確認申請時に個人情報をeKYCへ送信した後、正しくレスポンスが返ってきた場合はユーザーをeKYCの本人確認手続き画面へ誘導する必要がありました。送信するだけであれば同期処理で良いのですが、エラーのレスポンスが返された時にその場で再送信をユーザーへ促したかったことと、レスポンスが正しく返ってきた時はその場で本人確認手続き画面へ誘導させたかったため、なるべく、ユーザーの待ち時間が発生しないように非同期処理にしなければなりませんでした。

ただし、eKYCへの同時リクエスト数が5までであっためSidekiqで制御する必要がありました。

Sidekiq単体で制御を行う場合、有料版のSidekiq Enterpriseへ切り替えなければなりませんでした。しかし、利用料金が高額なことと開

元記事を表示

GroveBeginnerKit を、C++(Aruduino)とRuby(ラズパイ,Rboard) で使う ADC編

[しまねソフト研究開発センター](https://www.s-itoc.jp)(略称 ITOC)にいます、東です。

[Grove Beginner Kit for Arduino](https://wiki.seeedstudio.com/Grove-Beginner-Kit-For-Arduino/) を使ってみる記事の第2回、今回は、アナログ入力を題材にします。
このキットに付属しているアナログ入力センサーは、以下の3種類です。
* [Rotary Potentiometer](https://wiki.seeedstudio.com/Grove-Rotary_Angle_Sensor/)
* [Light Sensor](https://wiki.seeedstudio.com/Grove-Light_Sensor/)
* [Sound Sensor](https://wiki.seeedstudio.com/Grove-Sound_Sensor/)

ターゲットは、以下の通り。
* Arduino - 付属の Arduino Uno 互換機
* Ruby – Raspberr

元記事を表示

なぜ、Strong Parameters がいいのか

# はじめに
Railsを学習していて、
なぜ、Strong Parametersが重要なのか、マスアサインメントではなぜダメなのかを
整理したくて記事にしてます。
## この記事を読むと分かること
* Strong Parametersがどういうものか分かる
* なぜ、マスアサインメントがダメなのかが分かる
## Strong Parametersとは?
Strong Parametersは、Action ControllerのパラメータをActive Modelに
「マスアサインメント」で渡すことを良しとしない。:x:

開発者側はアップデートしたいパラメータを、
Active Controllerで明示的に指定する必要がある。

要は、Active Controllerのアクションで本当に使用したいパラメータだけを
厳密に指定してモデルに渡してあげる事でより安全だよねというお話。

## マスアサインメントではなぜ、ダメか?
まず、**「マスアサインメント」** とは、
チェックされていないパラメータをまるごとモデルに保存する行為の事を言います。

以下のコードでは「マスアサイン

元記事を表示

【Ruby】デザインパターン学習メモ Bridge

## 背景
[オブジェクト指向のこころ](https://www.amazon.co.jp/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E3%81%AE%E3%81%93%E3%81%93%E3%82%8D-SOFTWARE-PATTERNS-%E3%82%A2%E3%83%A9%E3%83%B3%E3%83%BB%E3%82%B7%E3%83%A3%E3%83%AD%E3%82%A6%E3%82%A7%E3%82%A4/dp/4621066048)10章「Bridgeパターン」を読んで
自分の中に落とし込むためのメモです。

本書ではJavaで書かれていますが実務ではRubyを使用しているため
Rubyに書き直しています。

## このパターンの目的
機能と実装を切り出すことで、クラス数の爆発を招かず、それぞれを拡張可能にする

## いつパターンを使用するのか
ある抽象的側面と様々な実装が共存している時

## この記事の流れ
「オブジェクト指向のこころ」では図形を描画する一連のプ

元記事を表示

cloneしたリポジトリが要求するRubyバージョンが新しい時のアップグレード手順

# この記事を読んでほしい人

– rails6から7へのバージョンアップがうまくいかない人
Rubyのインストール時に`make: *** [build-ext] Error 2`のようなビルドエラーが出て、進めなくなっている人です。

– macOSで開発環境を構築している人
新しいプロジェクトを始める際や、職場や個人のプロジェクトで特定のRubyバージョンを必要としていて、それに合わせて環境をセットアップしようとしている人です。

# Ruby 3.2.0のインストールに失敗した時の対処法

Rubyの新しいバージョンのインストールは通常簡単ですが、たまに予期せぬエラーに直面することがあります。この記事では、`rbenv` を使用して Ruby 3.2.0 をインストールしようとした時に発生した問題と、その解決法について詳しく共有します。

## 問題の説明

`rbenv`を使用してRuby 3.2.0をインストールしようとすると、`make: *** [build-ext] Error 2`というエラーが発生し、インストールが失敗しました。
“`
rbenv install

元記事を表示

【Rails7・Docker・Sidekiq】Sidekiq導入とメール自動送信のバックグラウンド処理の実装

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

## 概要
RailsアプリにSidekiq(redis)を導入し、メールの自動送信の機能を追加していきます。
この記事のために、メールを10分後に送信するだけのサンプルアプリを用意しました。
完成形のコードはこちらです。

https://github.com/satou-haruka-37/sidekiq_sample

### 環境
– Docker
– Ruby 3.2.3
– Rails 7.1.3
– Importmap
– Tailwindcss、daisyUI
– PostgreSQL

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

## バックグラウンド処理とは?
Railsアプリケーションでは、ユーザーが特定の動作を行った際に「投稿する」「画面を表示させる」などのア

元記事を表示

Qiita で parallel_tests を後から入れた時にやった工夫

最近 Qiita で [parallel_tests](https://github.com/grosser/parallel_tests) による RSpec の並行実行を導入したので、どういう設定をしたかをまとめます。

## なぜ parallel_tests を導入したか

そもそもの導入のモチベーションは「CI にかかる時間と料金を減らせる」ということです。

Qiita では CI 実行に GitHub Actions を利用していますが、デフォルトのランナー (実行マシン) が CPU 2 Core になっています。(Ref: [GitHub ホステッド ランナーの概要 – GitHub Docs](https://docs.github.com/ja/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners#%E3%83%97%E3%83%A9%E3%82%A4%E3%83%99%E3%83%BC%E3%83%88-%E3%83%AA%E3%83

元記事を表示

【初心者】link_toの使い方【Rails】

# 初めましてlink_toと申します
私はrailsのview作成時、他のページに飛ばすため、使う目的のメソッドです。
ここ押したらサイト飛べるようにしたいな・・・
そういう気持ちから私は生まれました。
## 私はこういう風に使います。
“`ruby
<%= link_to 'untyoko', ヘルパーメゾットorURL %>
“`
こちらでuntyokoをひとつまみしていただきますと、
リンクに飛ぶシステムとなっております。

###### ※もちろんuntyokoでなくても結構です。

ヘルパーメソッドはorURLに関しましてはお好みのどちらかをご入力ください。

ちなみにヘルパーメソッドはルーティングエラーを出した時のHelperと書いてるものとなっております。
下のスクショで言うdashboads_pathとかproducts_pathとかですね。
rails内でページの移動をするときは、基本URLではなくヘルパーメソッドで書くのが嗜みとなっております。

![スクリーンショット 2024-03-31 20.02.28.png](https://qiita-image-

元記事を表示

新人が1on1に来ない

新人が1on1に来ない。その原因を考察する。

ここで出てくる新人の情報は以下である。

* 年齢: 30代前半
* エンジニア歴: 5年
* 入社して半年

### 1on1を行うに至った経緯:
1年前、私と同じ時期に入社した同期Aが退職した。
詳細はよく分からないが、どうやらチームの先輩の1人と相性が悪いとの事だった。
尚、Aが退職したのは上記の理由だが、退職したいからこれを名目上の理由にしているのであって、原因は他にある可能性はあるが、この際それは考慮しない。

### 会社の人員構成:
ほとんどがエンジニア歴10 ~ 20年のベテラン。平均年齢は30代後半。
Aは30代前半。

### 周囲の反応:
Aが退職を告げた時、周囲はうろたえた。事前に相談は無かったし、特に問題はないように思われていた。
何より30過ぎた社会人は、問題があれば自分から話して来るという思い込みが、既存社員にあったもしれない。

### 年齢は関係あるか:
ないと考えている。社内には20代のエンジニアもおり、相談は自分からする。

### 社歴は関係あるか:
分からず。人によるとしか。社内に打ち解けていれ

元記事を表示

「Ruby on Rails チュートリアル」でローカル環境を構築して「git push」まで実施する方法・後編

## はじめに

こんにちは、@kosei-matsubaraです。

Web系エンジニアの転職を目指して「Ruby on Rails チュートリアル」の学習を始めました。

「Ruby on Rails チュートリアル」の第一章を後半まで進んだところ「GitHub Codespaces」の自動ログアウトおよび再接続が手間だと感じるようになりました。

今後ポートフォリオを作り、Web系開発企業ではローカル環境での開発が前提になると想定しています。

したがって最初からローカル環境で開発を行い、早々に今後の作業環境に慣れた方がいいと考えローカルで開発構築することにしました。

ローカル環境構築までの手順を公開することで、同じく「Ruby on Rails チュートリアル」をローカル環境を構築する方のご参考になればと思い記事を投稿しました。

なお、[前回記事](https://qiita.com/kosei-matsubara/items/977a322ffbd1369f1924)は環境構築開始からRailsインストールまで、当該記事でRailsインストール以降から「git push」

元記事を表示

【トリビア】Rubyで users .map(&:name) の形式で呼び出せるのはpublicメソッドだけ

## はじめに
たとえばUserクラスに`name`というprotectedメソッドがあったとします。
(protectedメソッドの登場頻度はかなり少ないと思いますが)

“`ruby
class User
protected

def name
‘Alice’
emd
end
“`

さらに、`fetch_names`というpublicメソッドも定義されていたとします。

“`ruby
class User
def fetch_names(users)
users.map { |u| u.name }
end

protected

def name
‘Alice’
end
end
“`

では`fetch_names`メソッドを呼び出してみましょう。

“`ruby
users = [User.new, User.new, User.new]
users[0].fetch_names(users)
#=> [“Alice”, “Alice”, “Alice”]
“`

はい、問題なく呼び出せまし

元記事を表示

rbenvでRubyの最新バージョンが表示されない

## 経緯
アプリを作ろうとしたところ、作成ファイルの中にある「Gemfileの中身」には「ruby “3.1.2”」が入っていたため、最新バージョン3.3.0にするようrbenvで更新を試みました。

しかし、「rbenv install –list」で確認したところ最新バージョンの3.3.0は表示されませんでした。
“`
2.6.10
2.7.6
3.0.4
3.1.2
jruby-9.3.8.0
mruby-3.1.0
picoruby-3.0.0
rbx-5.0
truffleruby-22.2.0
truffleruby+graalvm-22.2.0
“`
今回はその解決までの記録をまとめます。

## 問題を定義
rbenvで最新バージョンが表示されない

## 仮説と検証①
仮説・・「rbenv」のバージョンを更新することで解消できるのでは?
検証・・「rbenv」のバージョンを更新するために「brew upgrade ruby-build」コマンドを入力
結果・・表示されない

## 仮説と検証②
仮説・・「rbenv」のバージョンの大元であるHomebrewのバ

元記事を表示

OTHERカテゴリの最新記事