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

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

しりとり

Rubyでしりとりプログラムを作成しました。

“`Ruby
# しりとりプログラム
# 名鉄でんちゃん
# 2024/1/25
# データ数を入力する
def error_msg()
puts “正の整数を入力してください”
end

def correct(num1,num2)
if num1 == num2 then
puts “Yes”
end
end

puts “正の整数を入力してください”
while true
data1 = gets.chomp
begin
num = data1.to_i
if num < 1 then puts "1未満の整数が入力されています" error_msg() else break end rescue error_msg() end end a_str = "" b_str = "" count = 1 for i in 0...num do puts "文字を入力してください" data2 = get

元記事を表示

各言語における「symbol」はそれぞれ違う件(Ruby, JavaScript, TypeScript, Dart)

# はじめに

色んなプログラミング言語を勉強していくと、違う言語においてある単語が似たようで実は違うものとして使われることがしばしばありますね。今回はその中で今回「**シンボル**」(**symbol**)というものに関して話します。

`Symbol`というクラスは**Ruby**でも、**JavaScript**と**TypeScript**でも、**Dart**でも存在しますが、それぞれの言語でかなり違う概念です。

実際にRubyとDartでのシンボルは大体似ているから、Ruby経験者ならDartのシンボルのことも簡単に理解できるかもしれません。

しかしJavaScriptでは全く別物です。DartがJavaScriptに似ているとよく言われていますが、シンボルに関しては全然違うので、混同してはいけないことです。

確かにDartはあまりRubyに似ていないが、シンボルの概念のことだけはRubyの影響を受けている可能性がありますね。

Dartは比較的に新しい言語で、最近スマホアプリの開発に使われるFlutterの言語として広く知られるようになったばかりで、こうやってDar

元記事を表示

経過月数を小数点込みで確認したい(Ruby)

## あらまし
例えば退職された方が、その会社に何か月在籍していたのかを計算する際に「25ヶ月在籍してた」というのはとても簡単に計算出来るけど、日数まで含めて「24.67ヶ月在籍してた」という計算の仕方は意外とサンプルコードが転がっていないようです。

無ければ作れば良いという事で作成したので誰かの何かの役に立てれば。

## 考え方
年と月は簡単です。
上記の例では退職日と入社日の差分を取ったうえで”年”は12をかけて”月”と足すだけです。

“日”をどうやって小数点にするかですが、退職日から入社日の差分を取り、退職月の日数を取得して割り算をしています。(1月の場合は31日で割り、2024年2月の場合は29日で割ります)

これをせず雑に30で割ると、小数点以下が若干おかしな事になってしまいます。

……と思ってコード書いて完成したつもりでしたが見直してたらバグがありました。
2/2入社、2/29退職 0.97ヶ月 → OK
2/1入社、2/29退職 1.0ヶ月 → OK
1/31入社、2/29退職 0.93ヶ月 → NG (本来1.03になってほしい)

## 修正版 考え方
結構

元記事を表示

【AtCoder】トヨタ自動車プログラミングコンテスト2024#1(AtCoder Beginner Contest 337)解法メモ【Ruby】

# はじめに

ABC337に参加しました。
今回はA~Eの5問完答できたのでE問題までメモを残します。

# [A – Scoreboard](https://atcoder.jp/contests/abc337/tasks/abc337_a)

スコアの合計から勝敗を求める問題。

入力を合計して大小を比べるだけなので素直に実装する。

自分の回答

“`ruby
n = gets.to_i
t = 0
a = 0
n.times do
tt, aa = gets.split.map(&:to_i)
t += tt
a += aa
end

if t > a
puts “Takahashi”
elsif t == a
puts “Draw”
else
puts “Aoki”
end
“`

# [B – Extended ABC](https://atcoder.jp/contests/abc337/tasks/abc337_b)

Aからなる文字列+Bからなる文字列+Cから

元記事を表示

【Ruby on Rails 】undefined method `image_name’ for nil:NilClass

# 初めに

投稿一覧ページでそれぞれの投稿に紐付いているユーザ名や画像を表示できなかったので書きます。

# 問題

以下エラーに遭遇しました。

![スクリーンショット 2024-01-24 20.09.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536873/d6ec7692-41ee-d728-fef1-652a6d0f0b89.png)

# 解決方法

エラー文から推測して、この辺りを調査しました。

① Viewファイルの誤字脱字

② Postsコントローラーのindexアクション内でインスタントメソッドuserの定義忘れ

③ インスタントメソッドの理解不足

②まで調査して、インスタンスメソッドが何をしているのか理解できていなかったので復習しました。復習を終えて、③が原因ではないと分かりました。そこで、こちらの記事を参考にデータベース周りを調べました。

https://qiita.com/TeppeiMimachi/items/755639c775c72cb73ad9

元記事を表示

商品一覧表示機能の実装(ActiveHashの使用)

# はじめに
プログラミング初心者です。
自分のアウトプットのため投稿しています。
間違っているところがあれば、指摘していただけますとありがたいです。
# 商品一覧出品機能の実装
サーバーに保存されているデータをビューに反映させます。
今回はActiveHashを利用したフリマアプリですが、いつもとそんなに変わりません。
[![Image from Gyazo](https://i.gyazo.com/2d6ace9a6e89bb517a40ca1c84298253.png)](https://gyazo.com/2d6ace9a6e89bb517a40ca1c84298253)
ActiveHashを使用している場合、このままだと
[![Image from Gyazo](https://i.gyazo.com/f6baa88ecbdb0710108bdc9b41e7cf74.png)](https://gyazo.com/f6baa88ecbdb0710108bdc9b41e7cf74)
このような表示になってしまうので、nameをつけます。
[![Image from Gyazo

元記事を表示

【解説付き】複数回のランダムアクセス(ランクD】 Ruby

# 初めに
paizaのレベルアップ問題集を解いていたのですが、これだけ問題の意味がわからなかった、、
Cランクの問題とか普通に解けたのに、、
[このブログ](https://blog-it.hatenablog.com/entry/programming/c/random/access/plural)を読んでようやく意味が分かりました。
わかってしまえば全然難しいものではありません。
ただ問題文が少し抽象的且つRubyの解説が載っていなかったので、同じように躓いた初学者のためにRubyでの解説を残しておきます。

[複数回のランダムアクセス (paizaランク D 相当)](https://paiza.jp/works/mondai/data_structure/data_structure__array_step2/edit?language_uid=ruby&t=2d5e2d03a113588c517f8c90ac523ee2)

# 解説

問題の目的を簡単に要約すると、

**2列目で与えられた数値列から4列目で与えられた数値列の各数値番目の要素を取り出してくださいね*

元記事を表示

LiveViewとRails HotWireの比較

[piacere](https://twitter.com/piacere_ex) です、ご覧いただいてありがとございます :bow:

下記コラムで、Rails 7に標準搭載されたHotWireを試しましたが、Elixir/PhoniexのLiveViewと比較してみたいと思います

https://qiita.com/piacerex/items/b9cd99e2e051d24ce180

# 方式

## a)部分ページロード/レンダリング

### LiveView

– MorphJSによるDOMの部分更新
– LiveView StreamsによるDOMの部分追加/更新/削除

### Rails

– Turbo Driveによるリンク操作のインターセプトとfetchへの置換、bodyタグ内のみの置換
– Turbo FramesによるDOMの部分更新
– Turbo StreamsによるDOMの部分追加/更新/削除

## b)サーバサイドのデータ更新をフロントに反映

### LiveView

WebSocketによるPub/sub

### Rails

WebS

元記事を表示

【Rails】動的にDBのテーブルにカラムを追加してみる

どうもこんにちは。

今回は、動的にDBのテーブルにカラムを追加する方法をメモしていきます。

# 動的にカラムを追加とは?

本来であれば、DBのテーブルにカラムを追加する場合には、以下のような手順を踏むと思います。

1. マイグレーションファイル生成

“`sh
rails g migration AddNewColumnToSample
“`

2. マイグレーションファイル編集

“`ruby
class AddNewColumnToSample < ActiveRecord::Migration[7.0] def change # addcolumn :テーブル名, :カラム名, :データ型 add_column :samples, :new_column, :string end end ``` 3. マイグレーション実行 ```sh rails db:migrate ``` しかし、「custom_itemsテーブルにデータが登録された場合に、登録されたデータの名前でsamplesテーブルにカラムを追加したい」ということが出てきます。

元記事を表示

rubyXLのエクセル出力で部屋に属する所属毎にシートを分けてusersを書き込んでいく

## はじめに
開発で部屋に属する所属毎にシートを分けてエクセル出力する必要があり、ある程度実装ができたのでまとめる。
初学者やrubyXLでエクセル出力を実装しようとしている方々に少しでも参考にもなれば嬉しいのですが、
なんちゃってエンジニアによる自分のアウトプット用の投稿なので、よくないコードの書き方や、または分量的に省略している箇所もございますのでご了承をお願いします。
アドバイスがありましたらコメントを頂けますと幸いです。

## 出力フロー
roomの詳細ページから出力し、roomに紐づいているユーザー(users)を所属毎(affiliations)にシートを分けて用意してあるエクセルファイルに書き込んで出力します。
usersは中間テーブルのroom_usersを経由して取得します。

## テーブル構図
roomsテーブル(部屋)
|rooms|
|:–|
|id|
|name|

affiliationsテーブル(所属)
|affiliations|
|:–|
|id|
|name|

usersテーブル
|users|
|:–|
|id|
|name|
|af

元記事を表示

Rubyでインタラクティブな問題に回答する

## 背景
– 競技プログラミング(AtCoder)の問題を解いていたところ、インタラクティブな問題への回答に詰まったので調べたことをまとめます。
– インタラクティブな問題例

https://atcoder.jp/contests/abc337/tasks/abc337_e

## 結論

“`ruby
# NG
puts ‘answer1’
puts ‘answer2’
puts ‘answer3’

# OK
puts ‘answer1’
$stdout.flush

puts ‘answer2’
$stdout.flush

puts ‘answer3’
$stdout.flush

# もしくは
$stdout.sync = true

puts ‘answer1’
puts ‘answer2’
puts ‘answer3’
“`
– `puts` だけでは不十分で、 `puts` の後に `$stdout.flush` を呼び出す必要がありました。

## 補足

– `$stdout` は 組み込み変数 [参照1]
– `

元記事を表示

rails g model と rails g migration の違い

# はじめに
`rails g model`と`rails g migration`の違いについて、なんとなくの理解しかできていなかったので備忘録としてまとめます。
# rails g modelとは
このコマンドは、新しいモデル(データベーステーブルの設計図)を作成します。モデルはデータベースのテーブルに対応し、アプリケーション内でのデータの取り扱いやロジックの管理に使用されます。
コマンドの記述方法は以下のようになります。
“`
$ rails g model モデル名 カラム名:データ型
“`
## 実行方法
例えば、以下のコマンドを実行すると、Userモデルに対応するデータベーステーブルを作成するマイグレーションファイルが生成されます。
“`
$ rails g model User name:string email:string
“`
続いて、このマイグレーションを実行して変更をデータベースに適用します。
“`
$ rails db:migrate
“`
# rails g migrationとは
このコマンドは、手動でマイグレーションファイルを生成します。主に

元記事を表示

【Ruby】mapメソッドとindex_byメソッド(初学者)

私は現在、未経験からのエンジニア転職に向けてプログラミングスクールで学習をしている、いしかわと申します。

`mapメソッド`と`index_byメソッド`について理解を深めたく学習した内容をアウトプットとしてこちらの記事にしました。
どなたかの参考になれば幸いです。

:::note warn
プログラミング初学者なので、内容に誤り等ある可能性があります
誤りがありましたら教えてくださると幸いです
:::

# mapメソッド
配列の要素の数だけブロック内で処理を繰り返して、新しい配列を返す。
“`ruby
hoges(配列).map { |hoge| 実行する処理 }

# 実行する処理が複数行に渡る場合
hoges(配列).map do |hoge|
実行する処理
“`
“`ruby:具体例
user_ids = all_requests.map { |request| request.user_id }
user_ids = [1, 2, 3, 4, 5, 6, ….. , 100]
# all_requestsに1~100のuser_idが含まれている場合, こ

元記事を表示

ActiveHashの初期値を設定したらエラーメッセージが出てこなかった件

# はじめに
プログラミング初心者ですので、、温かく見守って頂けると幸いです。
何か間違っていたらコメントお願いします。
# エラーメッセージが出てこない
[![Image from Gyazo](https://i.gyazo.com/47e4958e4b02fbe12628de441de857c8.png)](https://gyazo.com/47e4958e4b02fbe12628de441de857c8)
ActiveHashを使用した入力フォームの初期値に上記のような初期値を設定していましたが、そうするとエラーメッセージが出ないという状況に陥りました。
しかも、初期値ではエラーメッセージ出ないのに、普通に項目を選択して保存しようとすると、”Category can’t be blank”というエラーが、、、(選択してるのに、、、)

# 解決
原因ははっきりしていませんが、修正した箇所としては、
idを0~から始めるのではなく1~から始めた。(上記の画像は修正後)
ビューのnew.html.erbの
**<%= f.collection_select(:category_i

元記事を表示

【Rails】選択画像のプレビューを動的に表示させる

画像のプレビュー機能をシンプルに書きたいと思い、JavaScriptのFileReaderで実装しました。メモとして残します。

# やりたいこと
1. input tyupe=”file”の`ファイルを選択`ボタンをクリックして画像ファイルを選択する。
1. プレビュー枠の画像が選択した画像に置きかわる。

# 実装環境
– Ruby on Rails
– Slim
– Carrier wave
– JavaScript

# 実装コード
必要なコードのみ抜粋します。

“`slim
/ form_withのコードの一部
label
= form.file_field :image, class: ‘d-none’, onchange: “previewImage(this, ‘previewImageField’)”
span.btn.btn-secondary ファイルを選択
= form.hidden_field :image_cache
/ プレビュー枠
– if hoge.image.present?
= image_t

元記事を表示

【rails】Rspecおける基本事項まとめ

# 事前準備

1.下記のgithubより Gemfileに追加するコードを確認し、
gemfileに記述する。
“`
# Run against this stable release
group :development, :test do
gem ‘rspec-rails’, ‘~> 6.1.0’
end
“`

https://github.com/rspec/rspec-rails?tab=readme-ov-file#installation

2.bundle installコマンドにて上記のgemライブラリをインストールする。

3.docker-compose run web bundle exec rails g rspec:installにてrspecを実行するためのファイルを作成する。

→ railsファイル直下に“spec > spec_helper.rb“が生成される。

4.docker-compose exec web bundle exec ra
ils g rspec:model Model名
にてModelにおけるテスト用のファイルを

元記事を表示

Railsで作ったシステムのER図を日本語で出してほしいと言われたときにやったこと

Ruby on Railsを使った開発をしていると「システムのER図が欲しい」といったお願いされることがあります。

Railsを使っているのであれば、[rails-erd](https://github.com/voormedia/rails-erd/tree/master) というRubyGemを使うことで簡単にER図を出力できます。

https://github.com/voormedia/rails-erd/tree/master

rails-erdで出力されるER図はEntityもAttributeも全て英語です。

![erd.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60996/96fe287e-0c02-5af4-4c64-d9bc974b1f7e.png)

提出先がエンジニアである場合や、普段からモデル名を使ったコミュニケーションをしている場合であればこのままでもなんとかなるかもしれません。

一方、相手がビジネスサイドのメンバーである場合や、普段はモデルを日本語変換してコミ

元記事を表示

ネーミングバトラー

Rubyでネーミングバトラーを作成しました。

“`Ruby
# ネーミングバトラー

def hitpoint()
hp_value = Random.new()
hp_value = rand(200)
return hp_value
end

def attach()
attach_value = Random.new()
attack_hp = rand(50)
return attack_hp
end

puts “名前を入力してください”
str1 = gets.chomp
HP1 = hitpoint

puts “名前を入力してください”
str2 = gets.chomp
HP2 = hitpoint

while true
puts str1 + “の攻撃”
A_HP2 = attach
HP2 = HP2 – A_HP2
puts str2 + “に” + A_HP2.to_s + “ポイントのダメージ”
if HP2 <= 0 then puts str1 + "の勝ちです" puts str1

元記事を表示

【Ruby】Procの基礎を理解する

# Procクラス
https://docs.ruby-lang.org/ja/latest/class/Proc.html

– ブロックをオブジェクトとして扱いたい時に使用するクラス
– ブロック
– メソッドの引数として渡すことが出来る処理のまとまり
– `do .. end`, `{ .. }`
– Procは、クロージャに相当する

“`rb
i = 100
pr = Proc.new { i += 1000 } # proc { i += 1000 } も同様

p pr.call #=> 1100
p i #=> 1100

p pr.call #=> 2100
p i #=> 2100
“`

# クロージャとは

>[手続きをオブジェクトとして扱う機能があります。このオブジェクト化された手続きのことをクロージャと呼びます。](https://docs.ruby-lang.org/ja/latest/doc/spec=2fintro.html#:~:text=%E5%88%B6%E5%BE%A1%E6%A7%8B%E9%80%A0%E3%81%

元記事を表示

【個人開発】Ruby on Railsで勇者一行を作って魔王を討伐したい!

# ドラクエは、好きですか?
このメンバーで魔王倒したいとか、勇者一行に混ざりたいな〜とか。
皆様も人生で一度は考えたことありますよね?そうですよね。
僕もそう思いました。思い立って旅立ちました。冒険ですね。

# 私は勇者ではありません
初めまして、あやたかといいます。
2022年10月からプログラミングスクールに通ってRubyを中心に学習。
転職活動の後、C#を扱うエンジニアとなりました。
この記事を書いてる時点で、エンジニア10日目です。赤ちゃんですね。

仕事とは別で個人で開発をしようと考え、アウトプットの一環として
開発備忘録的なものを書いていきます。

# 魔王討伐のパーティって楽しそう
常日頃考えています。妄想の日々ですね。
ですが、私も30年生きてきたいい大人なので現実では出来ない事は重々承知しています。
というわけで、せっかく学んだRubyとRailsで作ろうと思います。
現実的にどこまで出来るかとか分からないので、目標を段階的に見ていきます。

# 自分のキャラを育ててステータスを上げ、職業や二つ名をつけたい
もう考えてるだけで楽しいですね。
自分の好きな名前のキャ

元記事を表示

OTHERカテゴリの最新記事