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

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

Ruby(Rails)で使える省略記法

# Ruby on Railsで使える省略記法

RubyやRailsのコーディングをする際、省略記法を使うとコードが簡潔になり、読みやすさが向上します。特にリファクタリング時やシンプルな処理を記述する際に役立ちます。

### if/unless文を1行で書く方法(後置if)

通常のif文やunless文は複数行にわたることが多いですが、簡単な条件、処理であれば1行で書くことができます。

**通常のif文:**
“`ruby
point = 7
day = 2
if day == 2
point += 10
end
point # => 17
“`
**1行のif文:**
“`ruby
point = 7
day = 2
point += 10 if day == 2
point # => 17
“`
### 三項演算子(条件演算子)

三項演算子を使うと、シンプルな条件分岐を1行で書くことができます。基本的な構文は次の通りです。

“`ruby
result = condition ? true_value : false_value
“`
**例:**
“`

元記事を表示

Rails7 Devise パスワードリセット機能

### はじめに
はじめまして、初学者からプログラミング学習中のErikaと申します🐣
今回個人開発をしていて、Devise導入済みのRailsアプリケーションでのパスワードリセット機能実装で手こずったので記録として残します。

:::note warn
この記事は初学者が執筆したものであり、誤りが含まれている可能性があります。もし誤りがあれば、コメントなどでご指摘いただけると助かります🙇‍♀️
:::

### 開発環境
Rails 7.1.3.3
ruby 3.2.2

### 前提条件
Deviseが導入済み
Userモデル作成済み
.env導入済み

### ルーティングの確認
コメントの部分を足します。
“`ruby:routes.rb
Rails.application.routes.draw do
devise_for :users, controllers: {
sessions: ‘users/sessions’,
registrations: ‘users/registrations’,

元記事を表示

RubyKaigi2024参加レポート

こんにちわ
楽天ラクマでエンジニアをしているHayashiです

先日、沖縄で開催されたRubyKaigiに初めて参加してきましたのでそのレポートをお届けします

## 那覇市
![1000001435.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798068/ccdfe42a-6fbd-d61a-15bc-4dadc40f569f.jpeg)

2024年のRubyKaigiは沖縄の那覇市で5月15日-17日の日程で開催されました
上の写真の建物は那覇市役所ですが、全体から醸し出す最終兵器感がたまりません
いざというときにはトランスフォームして戦ってくれる様な気が致しました

## 沖縄の会場
![1000001428.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798068/3cb92e55-9320-40d8-8e2b-01515b6c6429.jpeg)

会場は「那覇文化芸術劇場 なはーと」という建物を

元記事を表示

Linux Ruby3.3.1インストール完全に理解した(rbenv)

# 環境

H/W : HP ENVY x360 Convertible 13-ar0xxx(CPU:Ryzen7 3700U Mem:16GB)
OS : Linux(Debian12 bookworm on WSL2)
Host OS : Windows11 Home 23H2

# はじめに

何度やってもRubyをすんなりインストールできないヘタレが完全に理解したので投稿します。

# 参考URL
**今回インストール作業で参考にしたサイト(Qiita)**
[Debianシステム全体にrbenvを導入する](https://qiita.com/OverZenith/items/402521c31d00c560f54e)
[DebianにRubyを入れる方法](https://qiita.com/mikihit0/items/48793c2b96e6a6eb8444)
[rbenvでRubyをインストール](https://qiita.com/abgata20000/items/8bfd25d76692063cc012)

**Macbook AirにrbenvでRubyを導

元記事を表示

Rails:外部キーのnilを許可する

今回は外部キーのnilを許可する設定にする際、「モデルファイルも設定つけて」というレビューをもらったので、調べたことを深堀りしてみました。

**作成したマイグレーションファイルはこちら**

“`ruby
class CreatePortfolios < ActiveRecord::Migration[7.1] def change create_table :portfolios do |t| t.references :user, null: false, foreign_key: true t.references :organization, foreign_key: true t.string :name, limit: 50, null: false t.string :url, limit: 255, null: false t.text :introduction t.integer :unhealthy_cnt, default: 0, limit: 1 t.date

元記事を表示

Example title

# Example

元記事を表示

【Webアプリ】Rubyで作れる超絶簡単なアプリをRailsを使わずに作ってみた

どうもこんにちは。

今回は、RailsではないRubyのフレームワーク「sinatra」を使用して簡単なアプリを作ってみました。

# sinatraについて

sinatraはRuby製のオープンソースフレームワークです。
RubyのフレームワークといえばRuby on Railsがとても有名ですが、Railsよりも少ない労力でWebアプリケーションを開発できます。

# Railsとsinatraの比較

RailsだとMVCモデルという概念に沿って作られているので、ファイルを行ったり来たりする必要があります。
ただ、sinatraはそんな概念がないので、1つメインコードファイルを作って、viewファイルを作成すればほぼ完成します。
Railsを使用している方でルーティング、コントローラの概念がいまいちわからない方はsinatraを使用することで理解が深まると思います。

自分は普段からRailsを使用していますが、sinatraとRailsには近しいものを感じましたが、DBを使用しないのであればsinatraで開発した方が圧倒的に楽かなと感じました。DBを使用するのであれば、M

元記事を表示

RubyKaigi2024レポ

5/15-17にかけて開催されたRubyKaigi2024に参加しました!
今回の開催は沖縄ということで、初夏で過ごしよい気候の沖縄とRubyのセッションを二重に楽しめて非常にお得なイベントでした。

以下感想ベースのレポ。

## Weird Code
day1の最初のセッションでWeird Codeという概念を初めて知りました。
直訳すると奇妙なコードって意味になりますが、アスキーアートみたいなコードが実際に動かせたり、さらにはそのアスキーアート自体がGIFみたいに動いたりと、文字通り奇妙なコードでアート的な面白さとインタプリタの知見の両方が生かされた楽しい文化だなーと。自分でも試してみたくなる良いセッションでした。
https://drive.google.com/file/d/1Dkx15u_5UAGoFqJHCeAuj2FXS-z_U7EE/view

ちなみに、会場とかに貼られてたポスターもWeird Codeで書かれてました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/

元記事を表示

エンジニア1年目、初の個人開発のサービスをデプロイ成功!

# 初めに

他業種からてエンジニアの転職をして、約1年たったものです。(その前にバイトもしたので、原則的には2年目ですね。)
主にRuby on RailsとPythonを触っています。
今回はついに! 私が個人開発をしたWeb番号札のデプロイをすることができたので、そのお話をしてみたいと思います。

うる覚えですが、ウクライナの戦争で学生エンジニアが避難民のための避難場の情報がわかるサービスを提供したようなニュースを見て、自分のものづくりで人を助けることができるようにしたいと思って、仕事以外でも練習や学習のために色々作ってみようと頑張っています。

でも、最後まで作り切るのができず、1年経った今、やっとデプロイできましたので本当に感激です!

下記が、デプロイしたWEB番号ふだになります。

https://webbangohuda-b2af4450c6c7.herokuapp.com/

Githubコードも公開しています。

https://github.com/worldwidepark/web_bango_huda

## 最初のうまくいかなかったサービス
最初の最初はポー

元記事を表示

はじめてのRubyKaigi 参加体験記

Gakken LEAPで働いていますkoboriです。普段はShikaku Passというオンライン学習サービスの開発を行っております。
スキルアップ支援制度という会社の制度を利用し、先日開催されたRubyKaigi2024に参加させていただきました。今回はひとりかつ初参加だったこともあり、英語や発表内容の理解など、不安な点は多々ありました。しかし、実際に参加をしてみて、「行ってよかった」 という気持ちでおります。来年以降も、今回の私と同じように、初めてRubyKaigiへ参加しようと考える方がいるかと思います。そんな方の背中を押すことができればと思い、今回の参加体験を記事にすることにしました。

# 事前準備
## チケット
今回私は2月の中旬ごろに、Early Birdという枠でチケットを購入しました。今年は1月30日に発売のアナウンスが投稿されていることを確認しています。来年の発売開始時期は分かりませんが、[RubyKaigi公式のXのアカウント](https://x.com/rubykaigi)をフォローしておき、年明けあたりから注視しておくと発売のアナウンスを見つけることがで

元記事を表示

binding.pryについて

カリキュラムの中で何度かbinding.pryを使って確認する作業がありましたが、よくわからず・・・
今回アプリ実装の最終課題を進めている中で、ちょっと理解できる部分があったのでテストコードも含めてまとめます。

### deviseを利用したユーザー新規登録のテストコード
#### 入力項目
* ニックネーム
* email
* password
* 名前(名字・名前)
* カナ(名字・名前)
* 生年月日
##### バリデーション
* すべての項目が必須である
* emailは@を含む
* 重複したemailは登録できない
* passwordとpassword_confirmationが一致する
* passwordは6文字以上
* passwordは半角英数字混合
* 名前は全角
* カナは全角カタカナ

##### Ruby on railsのテストコードを書くためのGem Rspecの導入

“`ruby:Gemfile
group :development, :test do
# 中略
gem ‘rspec-rails’, ‘~> 4.0.0’
“`

元記事を表示

【Ruby】eachメソッドとmapメソッドの基本

## はじめに
先輩から、`eachメソッドとmapメソッドは、開発現場で頻繁に使用されている` と聞き、今回それぞれの基本を初学者の自分なりにまとめてみました。プログラミング初心者の方、Rubyを学習し始めた方達のお役に立てたら幸いです。

## 結論
eachメソッドとmapメソッドの違いは、その戻り値にあります。

## eachメソッド
eachメソッドは、一言でいうと「配列の要素を最初から最後まで順番に取り出すメソッド」です。取り出した要素をどう取り扱うかは、そのあとのブロックに記述されています。ブロックは、以下のコードだと`doからend`までです。

“`ruby:each.rb
nums = [1, 2, 3, 4, 5]
result = nums.each do |n|
puts n
end

# 出力
# 1
# 2
# 3
# 4
# 5

# resultの値
#=> [1, 2, 3, 4, 5]
“`

配列の各要素がnとして取り出され、`puts n`によって出力されています。

## mapメソッド
mapメソッドも、ブロックを使

元記事を表示

RuboCopのExtensions(rubocop-rails)について詳しく調べてみた

# 概要
実務でRuboCopを以下の拡張Copをrequireして使っています。
今回はこの中からrubocop-railsについて、具体的にどんなCopが含まれているのか軽く調べてみました。
– rubocop-rails
– rubocop-rspec
– rubocop-performance
– rubocop-factory_bot

# 参考
RuboCopの拡張Copには、公式でメンテナンスされているものとサードパーティ製のものの2種類があります。
ちなみに上記の4つは全て公式のCopです。

– 公式の拡張Cop
https://docs.rubocop.org/rubocop/extensions.html#official-extensions
– サードパーティ製の拡張Cop
https://docs.rubocop.org/rubocop/extensions.html#third-party-extensions

スレッドセーフとか低レイヤーな部分は自信ない方も多いと思うので、[rubocop-thread_safety](https://gi

元記事を表示

【Ruby】OpenAI Assistants API File Search機能の実装方法

# はじめに

この記事では、`ruby-openai`という Gem を使用して OpenAI の Assistants API の File Search 機能を利用する Ruby プログラムの実装方法について解説します。

## 前提条件

* OpenAI の API を取得できること
* Assistants API の概要を知っていること
* Assistants API 概要
* https://platform.openai.com/docs/assistants/overview
* Assistants、 は OpenAI のコンソールから作成済みであることとします
* OpenAI コンソール
* https://platform.openai.com/

## 必要な環境と事前準備

### Gemのインストール

まずは、`ruby-openai`というGemをインストールします。これはOpenAIのAPIにアクセスするためのライブラリです。

“`bash
gem install ruby-openai
`

元記事を表示

Rails7 find と where では結果の型が異なる件

# はじめに
みなさん、こんにちは。**torihazi**です。
今回はタイトルの件について書いていこうと思います。
ちなみに初心者です。
間違いがないよう最善は尽くしていますが、何かあれば指摘をお願いいたします。

# 環境について
“`
ruby 3.2.1
rails 7.0.6
“`

# 結論
– `find`ならArray オブジェクト が
– `where`ならActiveRecord::Relation オブジェクトで

返ってくるよということ。
例えば下記のような時。
“`
id = [1]
@hoge_find = Hoge.find(id)
@hoge_where = Hoge.where(id: id)
“`

これをviewのlink_toで参照しようとしたときに
“`
= link_to hoge_path(@hoge_find)
=> /hoge/1
= link_to hoge_path(@hoge_where)
=> /hoge%23%3CHoge::ActiveRecord_Relation:・・・・・・”
“`
生成されるURLが

元記事を表示

競技プログラミングに入門してみよう!

# 初めに
所属するスクール内でイベント「競技プログラミングに入門してみよう!」を開催した際の資料です。

# AtCoderに新規登録する
– AtCoderにアクセスする
https://atcoder.jp/home
– 右上の新規登録をクリック
– 必要な情報を入力して新規登録を完了させる
(今回は解答解説までイベント内で実施するため、できてなくても問題はありません)

# rubyの実行環境を用意する
AtCoderでは解答のコードを打ち込むことができ、そのコードが正解かどうかを判定してくれる仕組みがあります。
なので、webサイト単体でも完結していますが、自分で実行環境を用意しておくと、コードの動きを途中で確認しながら解くことができるのでおすすめです。
今回はrubyの実行環境をdockerで構築して使っていきます。
https://zenn.dev/bloomer/articles/98df661f7c339e
上記の記事を参考にして進めます。

好きなディレクトリに移動して、今回の作業用ディレクトリを用意する。
“`
$ mkdir ruby_study
$ cd

元記事を表示

RubyでPHPのvar_dumpライクな機能を提供するGem『ruby_var_dump』をリリースしました

# Gem「ruby_var_dump」を作成&リリースしました
RubyでPHPのvar_dumpライクな機能を提供するGem『ruby_var_dump』をリリースしました

RubyGems.org
https://rubygems.org/gems/ruby_var_dump

Github
https://github.com/hirokiyam/ruby_var_dump

## 特徴
PHPのvar_dump関数に相当する機能をRubyで実現します。
変数の中身を詳細に表示するためのツールです。

## 使い方
Gemfileに以下を追記します。
“`ruby
gem ‘ruby_var_dump’
“`

gemをインストールします。
“`terminal
bundle install
“`

### 使いたいクラスで呼び出す場合

ruby_var_dumpを使いたいクラスに以下を追加して、RubyVarDumpモジュールのメソッドを組み込みます。
“`ruby
require ‘ruby_var_dump’ #ファイルの先頭に追加

include Rub

元記事を表示

【Rails】Boolean 型を入力必須にする

## 概要

`Rails` で `Boolean` 型の値を入力必須にしたいときに `presence: true` を使っても期待通りに動作しませんでした。この記事ではその原因と対処法について説明します。

## 原因

“`rb
validates :column, presence: true
“`

このように記述すると `false` を選択した場合には値が入力されていないと認識されてしまい、バリデーションエラーが発生します。`presence: true` は `false` を無視してしまうため、`Boolean` 型の値には適していません。

## 対処法

“`rb
validates :column, inclusion: { in: [true, false] }
“`

`inclusion` バリデーションを使って `true` か `false` のどちらかの値が含まれているかを確認します。これにより `false` も有効な値として認識されるため、正しくバリデーションが行われます。

## まとめ

`Boolean` 型の値を入力必須にしたい場

元記事を表示

[Rails] Rails7 cocoon導入方法

## 目的
rails7でフォームの追加・削除をしたかったのでcocoonを使い実装しました。
cocoonの公式githubではrails6までのやり方しか書いておらず
なおかつrails7ではrails6とは導入方法が異なり、導入の記事も少なくハマったので備忘録として残そうと思い記事にしました。

#### 対象者
– rails7でcocoonの導入がわからない人・ハマっている人

## 開発環境
– rails 7.0.4.3
– ruby 3.1.2
– cocoon 1.2.15
– jQuery 3.7.1

## 導入方法
#### cocoonをインストール
“`:Gemfile
gem ‘cocoon’
“`
“`:ターミナル
$ bundle install
$ yarn add @nathanvda/cocoon
“`
cocoonのインストールはrails6でもrails7でも全く一緒です。

#### cocoonを設定
ここからrails6とrails7では違ってきます。
公式のgithubにはrails6までのやり方しか書いておらず、ここから苦戦

元記事を表示

自前サーバーで提供する gem がある場合の Bundler の不可解な動作

Bundler の動作が不可解な点について。

再現条件がよく分からないが,一つはっきりしている条件は,Gemfile で指定する gem の中に「rubygems.org 以外のサーバーで提供するもの」が含まれる,という点だ。

以下の例では,my_awesome_gem という自作 gem が https://example.net/gemsource という URL で提供されている,と想定する。

この場合,Gemfile に

“`rb
source “https://example.net/gemsource” do
gem “my_awesome_gem”
end
“`

と書けばよい。

なお,Ruby バージョン

“`
ruby 3.3.1 (2024-04-23 revision c56cd86388) [arm64-darwin23]
“`

で動作を確認した。

# 再現実験

まず Gemfile を以下のように書く。

“`rb:Gemfile
source “https://rubygems.org”

source “https://ex

元記事を表示

OTHERカテゴリの最新記事