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

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

【個人開発】VTuberの発見と布教が出来るWebアプリを作りました

# はじめに
初めてのWebアプリケーション開発をしてみました。
名前は`にゅーぶい!`です。

https://newvtuber.com/

どのようなものか書きます。

# どのようなアプリか
### 簡単な紹介
ファンは自分がまだ知らないVTuberの発見と布教、VTuberはファンの獲得が出来ることを目指したサービスです。

### 想い
VTuberという文化が生まれてから久しく、現在では数えきれないほどVTuberがいます。
そのため、自分のタイプや好みに合うまだ知らないVTuberがきっと多くいます。
そこで、VTuberのプロフィール閲覧/作成を行えるサービスがあれば、より楽しい推し活に繋がると思い、本アプリの開発をしました。

# 使い方
### 文字のみ
一部ユーザー登録の必要なものがありますが、登録やログイン等の記述は割愛します。
最低限の使い方は下記の2つです。
① 一覧から気になるVTuberを押す
② プロフィールを見る
上記に加えて、下記の使い方もすると少し豊かになります。
・ ご自身の好きなVTuberのプロフィールが無い場合は作成する

元記事を表示

[Rails]タスク管理アプリ(Part.1)

## はじめに

Railsでタスク管理アプリを作成します。
利用する各ツールのバージョンは以下とします。
|ツール|バージョン|
|-|-|
|Ruby|3.2.4|
|Ruby on Rails|7.1.3.2|
|PostgreSQL|16.2|

## アプリケーションのひな型を作成する

アプリケーションのひな型を作成します。
実行には少し時間がかかります。
“`bash:
rails new taskapp -d postgresql
“`

実行が完了したらアプリケーションフォルダに移動します。
“`bash:
cd taskapp
“`

データベースを作成します。
“`bash:
bin/rails db:create
“`
2つのデータベースが作成されました。
>$ bin/rails db:create
Created database ‘taskapp_development’
Created database ‘taskapp_test’

サーバを起動します。
“`bash:
bin/rails s
“`

以下にアクセスします。

htt

元記事を表示

【Rails】データベースに反映済みのマイグレーションファイルの修正方法

マイグレーションファイルを作成して, rails db:migrate し, あとからカラム名のタイポに気づきました

“`db/migrate/20240502121245_create_checkouts.rb
class CreateCheckouts < ActiveRecord::Migration[7.0] def change create_table :checkouts do |t| t.string :fisrt_name # first_name としたかった t.timestamps end end end ``` rails db:migrate していない場合は, そのままマイグレーションファイルを編集すればよいですが, すでにしている場合はデータベースに反映されているため, ロールバックをする必要があります。 反映されているかは rails db:migrate:status で確認できます。up になっていれば反映済み, down になっていれば未反映です。 今回は以下のように up

元記事を表示

初心者がボウリングゲームをRubyのみで書いてみた

# はじめに

こんにちは。
一般事務からエンジニアへ転職するために基礎学習しています。
Ruby演習として、VSコード上でRubyのみにて
「Bowling Game ~本日のラッキーボーイ&ガールは一体誰だ!~」
を作成しました。
まだまだひよっこですが、初投稿やってみます。

# 何を書いたか
ボウリングゲーム の コード (Ruby)

<仕様>

– 実際の球を投げる行為は、毎回、ランダムな数字が生成および表示されて、それを入力(半角数字)することとした。
表示されたランダムな数字と入力した数字が異なる場合は、スコアは0となる。
(スコアを0とさせることで、入力した数字が10以下であるかどうかの判定用コードは作成していない。)
– ボウリングゲーム のプレイヤーは何人でも可能である。
– 毎回、ユーザーごとに1投目2投目(10ゲームは3投目がある場合もある)を入力してもらった後、そのゲームまでの表を表示する。
– 合計スコアが確定していない時は、”…”で表示される。
– ストライクとスペアの時は、”ナイスストライク!””ナイススペア!”と表示する。(※1)
– 最後、

元記事を表示

[Rails]ユーザー管理機能

### 1. ユーザーに関するscaffoldを自動生成する。
“`bash:
bin/rails generate scaffold user name:string address:string age:integer
“`
>$ bin/rails generate scaffold user name:string address:string age:integer
invoke active_record
create db/migrate/20240504174055_create_users.rb
create app/models/user.rb
invoke test_unit
create test/models/user_test.rb
create test/fixtures/users.yml
invoke resource_route
route resources :users
invoke

元記事を表示

[Ruby]環境構築(Windows11)

## 1. Ubuntuのインストール
Microsoft Storeにて、「Ubuntu」をダウンロードする。
https://apps.microsoft.com/detail/9pn20msr04dw?hl=ja-JP&gl=US

ダウンロードしたファイルは以下。(2024/05/04時点)
・Ubuntu 22.04.3 LTS Installer.exe

ユーザーとパスワードを設定する。

Ubuntuのパッケージファイルを最新化する。
“`bash:
sudo apt update
sudo apt update -y
“`

作業用フォルダとシンボリックリンクを作成しておく。
“`bash:
mkdir /mnt/c/Code
ln -s /mnt/c/Code ~/Code
“`

## 2. rbenvのインストール
rbenvをインストールする。
“`bash:
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
“`

パスを設定する。
“`bash:
echo ‘export PATH=”

元記事を表示

立体ペントミノ・ソルバー

# はじめに
この記事

https://qiita.com/sense_n_react/items/0875e969626c1892b60a

で紹介したのは平面でのペントミノ・ソルバーでした。
ピースの要素を立方体にすることで、3x4x5 のような立体ペントミノが得られるので、本記事では立体ペントミノにも対応したソルバーを示します。

### ソースコード
https://github.com/sense-n-react/PentominoSolvers/blob/main/solver-3D.rb

Ruby です。

### 実行
“`shell-session
$ ruby solver-3D.rb –size 3x4x5
“`
3x4x5 だけでなく 5x6x2 や 3x10x2 も指定できます。
Wikipedia に示されているようにそれぞれ 3,940、260, 12通りの解を表示します。
サイズを指定しなければ2次元(6×10)の解を表示します。

### 立体の表示
キャラクターベースで3次元表示は難しいので、下図のように表示しています。画面垂直方向に

元記事を表示

Railsで利用しているsitemap_generatorのテストを書く

Railsで `sitemap_generator` gemを利用してサイトマップを生成しています。
https://github.com/kjvarga/sitemap_generator

そのテストを書く方法を記載します。

# 結論

`SitemapGenerator::Interpreter` を使います。
https://www.rubydoc.info/gems/airblade-sitemap_generator/0.3.5/SitemapGenerator/Interpreter

`SitemapGenerator::Interpreter.run` でXMLファイルを生成します。
それを読み込み、期待するURLが含まれているか検証します。

# 検証用Repo

下記で検証をしていますので、詳細が気になる方はご参照ください。
https://github.com/yuya-yuzen/test-sitemap-generator-spec

# 1. sitemap_generatorを導入する

## 1-1. Gemfileに追加

“`:Gemfile

元記事を表示

書籍「AWSではじめるインフラ構築入門」 サンプルアプリに関するメモ

## はじめに
[「AWSではじめるインフラ構築入門 第2版」(翔泳社)](https://www.amazon.co.jp/AWS%E3%81%A7%E3%81%AF%E3%81%98%E3%82%81%E3%82%8B%E3%82%A4%E3%83%B3%E3%83%95%E3%83%A9%E6%A7%8B%E7%AF%89%E5%85%A5%E9%96%80-%E7%AC%AC2%E7%89%88-%E5%AE%89%E5%85%A8%E3%81%A7%E5%A0%85%E7%89%A2%E3%81%AA%E6%9C%AC%E7%95%AA%E7%92%B0%E5%A2%83%E3%81%AE%E3%81%A4%E3%81%8F%E3%82%8A%E6%96%B9-%E4%B8%AD%E5%9E%A3-%E5%81%A5%E5%BF%97/dp/4798178004)を購入して、AWSでのインフラ構築を実践的に学習した。
第1章から順に読み進めたが、第13章「サンプルアプリを動かしてみよう」でいくつか問題が発生したので記事にまとめる。
私は、インフラ、AWS、Webアプリ開発の技

元記事を表示

ペントミノ・ソルバーのアルゴリズム

# はじめに
この記事

https://qiita.com/sense_n_react/items/0875e969626c1892b60a

で紹介したプログラムのアルゴリズムを説明します。
個人的にはいろんな言語の中で *Ruby* が一番シンプルだと感じていてるので、*Ruby* 版のソルバー([solver.rb](https://github.com/sense-n-react/PentominoSolvers/blob/main/solver.rb))を例示しながらアルゴリズムを説明して行きます。

# 戦略
0. 全ての可能性を試す
**全てのピース**の**全ての姿勢**の組合せを再帰呼び出しによるバックトラッキングで試して行きます。

0. 左上から敷き詰める
左上を起点として、右方向に空きエリアを探します。空きがなければ1列下の左端から右端に向かって空きを探します。空きが見つかればそこに配置します。

0. 対称性の排除
6×10 のペントミノは2,339通りの解がありますが、盤面を左右反転や上下反転した場合の解を考慮せずに探索すると4倍の 9,356 通りが見

元記事を表示

{{macro_list}}

hello_world
Sample macro.
macro_list
Displays a list of all available macros, including description if available.
child_pages
Displays a list of child pages. With no argument, it displays the child pages of the current wiki page. Examples:

{{child_pages}} -- can be used from a wiki page only
{{child_pages(depth=2)}} -- display 2 levels nesting only
{{child_pages(Foo)}} -- lists all

元記事を表示

Ruby on Railsのyaml.h not found解決方法(Windows11)

# STEP 0
基本的なインストールは、こちらの記事を参考に

https://qiita.com/tks_00/items/711a022c6234fc495724

ただ、新規プロジェクト作成時にyaml.hが無いというような以下のようなエラーが出たので修正
~~~
C:/Ruby32-x64/lib/ruby/site_ruby/3.2.0/bundler/installer/parallel_installer.rb:123:in
`block in worker_pool'
C:/Ruby32-x64/lib/ruby/site_ruby/3.2.0/bundler/worker.rb:62:in `apply_func'
C:/Ruby32-x64/lib/ruby/site_ruby/3.2.0/bundler/worker.rb:57:in `block in
process_queue'
C:/Ruby32-x64/lib/ruby/site_ruby/3.2.0/bundler/worker.rb:54:in `loop'
C:/Ruby32-x64/

元記事を表示

Rails 7.1 で render_to_string の仕様が変わった

Rails 7.1 で,render_to_string の仕様が変わったらしい。
そのために,自作アプリで〈rubyXL で Excel データを生成してダウンロード〉という機能がおかしくなって困ったが,最終的に直せた,という話。

なお,Rails のコードを調べたわけではなく,実験によって得た知見なので,少し間違っているかもしれない。誤りに気づかれた方はご指摘いただけると助かります。

各種バージョンは以下のとおり

* ruby 3.3.1 (2024-04-23 revision c56cd86388) [arm64-darwin23]
* Rails 7.1.3.2
* rubyXL 3.4.27
* stringio 3.1.0

(トラブルが起こらなかった Rails バージョンとしては,7.0.8.1 や 6.1.7.7 など)

# はじめに

Rails アプリで,CSV だの Excel だの PDF だのを動的に生成して返す(ダウンロードさせる),ということはよくある。
コントローラーでは `send_data` メソッドにそういったデータを渡してやればいい。

元記事を表示

バージョン指定して特定のマイグレーションファイルを削除する、ついでにNO FILEのマイグレーションファイルも消す

# はじめに
あんまりつかうことがないので忘れがちなマイグレーションファイルの削除について....

## statusでみる

```
& bundle exec rails db:migrate:status
```

```
up 202312250xxxx Delete hoge
up 202401091xxxxx Add hoges
up 20240207xxxxxx Change hoge body
up 2024030xxxxxxx Add hoge messsage
```

## 消す
```
up 202312250xxxx Delete hoge
up 202401091xxxxx Add hoges // これを消す
up 20240207xxxxxx Change hoge body
up 2024030xxxxxxx Add hoge messsage
```

downする
```
$ bundle exec rails db:down VERSION=202401091xxxxx

元記事を表示

GraphQL Rubyでfieldを共通利用したい

graphql-rubyを利用する際、複数のObjectで同一のfieldを共通利用したくなりました。
下記手順で、Interfaceを利用して実現できました。

1. BaseInterfaceを定義する
2. 共通利用したいfieldをまとめたInterfaceを定義する
3. fieldを定義するObjectでInterfaceをimplementsする

なお公式ドキュメントは下記です。詳細はこちらをご参照ください。
https://graphql-ruby.org/type_definitions/interfaces

# 0. Interfaceとは

> Interfaces are lists of fields which may be implemented by object types.

Interfaceとは、Objectによって実装することができるfieldのリストです。

# 1. BaseInterfaceを定義する

これから定義するInterfaceにおいて、その基底となるBaseInterfaceを定義します。

```ruby:types/b

元記事を表示

ruby-install failed :error: use of undeclared identifier 'RSA_SSLV23_PADDING'

### ruby-install failed :error: use of undeclared identifier 'RSA_SSLV23_PADDING'

```
$ ruby-install 2.7.4
(省略)
ossl_pkey_rsa.c:942:5: error: use of undeclared identifier 'RSA_SSLV23_PADDING'
DefRSAConst(SSLV23_PADDING);
^
ossl_pkey_rsa.c:877:58: note: expanded from macro 'DefRSAConst'
#define DefRSAConst(x) rb_define_const(cRSA, #x, INT2NUM(RSA_##x))
^
:160:1: note: expanded from here
RSA_SSLV23_PADDING
^
115 warn

元記事を表示

good_jobを導入して定時実行のジョブ(cron)を実装する手順、全体像

# 実装に必要な最低限の知識

good_jobとは
Ruby on Railsアプリケーションでバックグラウンドジョブを実行するためのGemです。

https://github.com/bensheldon/good_job

good_jobはActive_jobを基本としているので、忘れていたらActive_jobについてさらっと目を通すと理解が深まります。

https://railsguides.jp/active_job_basics.html

# 実際の手順

未来の自分のために手順をそのまま残しておきます。

## 初期設定

### gemを導入
```Gemfile
gem 'good_job'
```

```terminal
bundle install
```

### good_jobがRailsアプリケーションに統合されるための初期設定
ターミナルでコマンドを実行します。
```terminal
bundle exec rails generate good_job:install
```

このコマンドで、いくつかファイルが

元記事を表示

ActiveRecord::Relationにおける present? exists? blank? empty?

## 結論

- 条件に合致するレコードが1件以上存在するかどうかを確認したい場合
- `exists?`メソッドを使う
- 条件に合致するレコードが1件も存在しないかどうかを確認したい場合
- `empty?`メソッドを使う

## 使用データ

```rb
irb(main):001> ExternalUser.all
ExternalUser Load (2.1ms) SELECT `external_users`.* FROM `external_users`
=>
[#]
```

## 実行結果

元記事を表示

GroveBeginnerKit を、C++(Aruduino)とRuby(ラズパイ,Rboard) で使う I2C - 温湿度センサー編

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

[Grove Beginner Kit for Arduino を使ってみる記事](https://qiita.com/HirohitoHigashi/items/dc43ea72d572b21a6823)の第6回、今回は I2C 接続の温湿度センサーを題材にします。

このレポートでは、

「メーカーのデータシートを見て、センサICを直接コントロールをすること」

を、方針とします。
もちろん、プログラムを書く上で既存のライブラリ等の実装を参考にすることは良い事です。しかしながらこのレポートは、I2C バスやセンサ IC の扱い方、データシートの読み方を示す事も目的としているため、できるだけ低レイヤーでの説明を行います。

ターゲットは、以下の通り。
* Arduino - 付属の Arduino Uno 互換機
* Ruby - Raspberry Pi + [Grove Base HAT for Raspberry Pi](ht

元記事を表示

【LINE WORKS】rubyでオウム返しBotを作る

# はじめに
前回、AWS SAMのサンプルを実行してたので、今回はそれを利用してline worksのオウム返しbotを構築した備忘録になります

前回の記事は[コチラ](https://qiita.com/youfuku/items/38f582889a05027f713f)

## 初期設定
まずは、環境の新規構築を行います
```shell:コマンド
$ sam init
$ 省略
Project name [sam-app]: oumu
$ 省略
$ cd oumu
$ mv hello_world/ oumu/
```

## テンプレート改修
```diff_yaml:oumu/template.yaml
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: >
oumu

Sample SAM Template for oumu

# More info about Globals: https://github.com/awslabs/

元記事を表示

OTHERカテゴリの最新記事