- 1. 【Ruby】between?でtime.zoneを範囲指定として渡す際の注意点
- 2. 【オブジェクト指向】デザインパターンについて
- 3. [Rails] 単一ファイルのRailsアプリケーションを作ってみた
- 4. RubyKaigi2024初参加者レポート
- 5. RubyXLで利用できる罫線の種類を調べる
- 6. erbからslimに変換する際の`File.exists?` メソッド使用についての解決方法
- 7. 【2024年6月】Rails7をWindows上で環境構築する方法
- 8. Ruby: ヘッダーを考慮した csv ファイルの読み込み
- 9. Ruby 練習問題 随時追加予定 (Range, Arrayとか)
- 10. 【Rails, MySQL, ORM】where(‘user.id’: 1)ってことができる
- 11. DHH流のルーティングの書き方
- 12. エンドレスメソッドについて
- 13. 【Ruby】数値Nを3桁ずつカンマ区切り
- 14. Rubyでデザインパターン (4) FactoryMethodパターン
- 15. Rubyのクラス
- 16. ruby文字列
- 17. Railsヘルパー
- 18. rubyの予約語の意味まとめ
- 19. ずんだもんがリアルタイムで会議内容をレビューし読み上げるプログラムを作る
- 20. rbenv: ruby: command not found
【Ruby】between?でtime.zoneを範囲指定として渡す際の注意点
Rubyの`between?()`の返り値が想定と違かった原因をメモ。
“`Ruby:
now = Time.zone.now
start_time = Time.zone.parse(“2024/07/01 12:00”)
end_time = Time.zone.parse(“2024/07/31 23:59”)if now.between?(start_time, end_time)
~…
end
“`
データとしてはこんな感じ。
`now`が`2024/07/31 23:59`になったと仮定して動作を確認していたら
条件がfalseになってif文に入らなかった。
## 原因
`end_time`をparseしたときに秒数を指定していないので、
`now`が`23:59:00`以降になると分岐条件がfalseになってif文に入らない。
## 解決策
終了時刻は秒数を指定する。
“`Ruby:
end_time = Time.zone.parse(“2024/07/31 23:59”)
↓
end_time = Time.zone.parse(“2024/07/
【オブジェクト指向】デザインパターンについて
## デザインパターンとは
JavaやRubyなどオブジェクト指向言語において、よく使われる設計をパターン化したものです。
これを用いることでプログラムが再利用しやすくなり、読みやすいものとなります。## デザインパターンの種類
「GoF」のデザインパターンがあり、全23種の設計パターンに分けられており、大カテゴリーに分けると
「生産」「構造」「振る舞い」の3つに分けることができます。+ 生産
+ [Abstract Factory](#abstract-factory)
+ [Builder](#builder)
+ [Factory Method](#factory-method)
+ [Prototype](#prototype)
+ [Singleton](#singleton)
+ 構造
+ [Adapter](#adapter)
+ [Bridge](#bridge)
+ [Composite](#composite)
+ [Decorator](#decorator)
+ [Facade](#facade)
+ [F
[Rails] 単一ファイルのRailsアプリケーションを作ってみた
# はじめに
上記の記事で、気になる箇所がありました。
**1ファイルで動くRailsアプリケーションを作った**
これを見た時の自分は、「え?そんなことできるの?」と思いました。
https://greg.molnar.io/blog/a-single-file-rails-application/
上記記事の記載があったので、参考にして自分も作ってみました。
その内容をアウトプットいたします。# 実装
## 環境
– Ruby:3.2.2お好きなディレクトリで、`app.ru`を作成します。
“`rb:app.ru
# frozen_string_literal: true
require ‘bundler/inline’gemfile(true) do
source ‘https://rubygems.org’gem ‘rails’, ‘7.0.4’
gem ‘sqlite3’, ‘~> 1.4’
gem ‘puma’
en
RubyKaigi2024初参加者レポート
初めまして、Qiitaに初投稿させていただきます。株式会社キネカでWebエンジニアをやらせていただております。nikeです。
## はじめに
今回初めて、弊社のメンバーとRubyKaigiに参加させていただいたので、振り返りも兼ねてレポートとしてまとめます。恥ずかしながら技術的な内容は私の力不足もあり、ほとんどできませんが、今後初めてRubyKaigiに参加する人の参考になればなと思い書かせていただきます。https://rubykaigi.org/2024/
## 事前に準備したこと
#### Rubyコミッターの松田明さんによる「初心者のための RubyKaigi 入門 」
私が技術カンファレンス自体の参加が初めてなこともあり、かなり不安だったのですが、こちらを一読してからRubyKaigiにかなり臨みやすくなったなと感じています。私と同じようにRubyKaigi初参加を考えてる方是非!
RubyKaigi自体の目的、参加者の心構え、に関してかなり簡潔にまとめてくださっています。https://speakerdeck.com/a_matsuda/rubykaigi-int
RubyXLで利用できる罫線の種類を調べる
## 環境
Ubuntu 20.4
Ruby 2.6
Rails 5.2## はじめに
Excelファイルに対し、読み取りと書き込みの両方ができる、RubyXLというgemがあります。このgemのchange_borderメソッドを利用して、Excelのセルに罫線を引くことができます。このメソッドで使うことができる、パラメータと罫線の種類について調べてみました。
## change_borderの使い方
change_borderの使い方は公式サイトを見れば載っています。
公式サイト
https://github.com/weshatheleopard/rubyXL?tab=readme-ov-file#changing-borders-“`
# Possible weights: hairline, thin, medium, thick
# Possible “directions”: top, bottom, left, right, diagonal
worksheet.sheet_data[0][0].change_border(:top, ‘thin’)
erbからslimに変換する際の`File.exists?` メソッド使用についての解決方法
# はじめに
erbからslimに変換しようとしてエラーで詰まって調べてあまり有用な記事がなかったため
作成することにします(自分見直し用でもあります!)# 起きたこと
dockerコンテナ内で
“`bash
erb2slim app/views/users/ app/views/users/ -d
“`
をしてapp/views/users/内のerbファイルを一括でslimファイルに変換しようとしたところ
“`
NoMethodError: undefined method `exists?’ for File:Class
Use –trace for backtrace.
“`
とエラーが出て、できなかったので
“`bash
erb2slim app/views/users/ app/views/users/ -d –trace
“`
–traceオプションをつけてエラーが起きているファイルを特定したところ
“`
/usr/local/bundle/gems/html2slim-0.2.0/lib/html2slim/converter.rb:1
【2024年6月】Rails7をWindows上で環境構築する方法
「Railsをインストールできない」
RailsはWebアプリ開発フレームワークで初心者にもわかりやすいと言われます。
しかし、環境構築で挫折する人が多いのも現状です。
今回はRailsをWindows11で開発できるセットアップを行います。
せっかく始めるのに、何もできないまま終わりたくないですよね。
動画でサポートしていきます。
YouTubeを活用してぜひ始めてみてください。
結論は、WSL2を使いましょう。
# YouTubeでの解説-2024年6月24日投稿
Ruby 練習問題 随時追加予定 (Range, Arrayとか)
# はじめに
みなさん、こんにちは **torihazi**です最近、ReactとかRailsばっか触っていて
純粋なRubyに触れることを忘れていました。
初心者だからすぐに忘れるし、ひたすら爆速でやり続けるしかないと思うので
練習問題作ってやってみました!
解説とかは自分で色々調べてやってみてください
別解とかあれば是非是非!!
では行ってみましょう!!
# 環境について
Docker使っています!
ローカルでやるか Dockerでやるかはお任せします!
Rubyの単純な実行環境をDockerで作るにはどうしたらいいのか?も
含めて色々勉強になったのであえて隠しちゃってます!
各自自分で最初から作るかコピーなりしちゃってください!
めんどくさい人はPaiza.ioとかでもいいかと。Dockerfile
“`Dockerfile:Dockerfile
FROM ruby:3.2.0
WORKDIR /app
COPY . .
“`dock
【Rails, MySQL, ORM】where(‘user.id’: 1)ってことができる
業務開発でRailsを使用しており、ORMもよく使用しているのですが、業務開発を通して知った `where` 句の文法的なのをここで紹介していきます。
## where(column: value)
これはRailsのwhere句の一番オーソドックスな書き方だと思います。
whereをメソッドチェーンで繋げていけば `and` 句となり条件をより絞ることができます。
“`ruby
# e.g.
User.where(id: 1)
User.where(gender: “man”).where(name: “hoge”)
“`## where(column: [value])
これはいわゆる `where in` 句の書き方で、 `or` 検索をかけたい時は基本的にこの書き方が一番いい気がします。
若干話が変わりますが、SQLアンチパターンにおいて、 `or` 検索はインデックスが効かない `where` 句の書き方ですが、 `where in` 句はインデックスが効く書き方なので、もし `or` のような**和集合条件**でインデックスが効く検索をしたい場合は **`wher
DHH流のルーティングの書き方
今回は私が現場で使用しているルーティング構成について自分のメモとしてまとめました。
## DHH流ルーティングとは?
DHH流ルーティングとは、Railsの創始者であるDavid Heinemeier Hansson(DHH)の提唱するルーティング設計の方法論です。DHH流ルーティングでは、リソースに対して標準的なCRUD操作(Create, Read, Update, Delete)を簡潔に定義し、カスタムアクションやネストリソースを最小限に抑えることで、ルートの複雑さを減らして記述を行うというものです。
つまり、デフォルトCRUDのindex , show, new, edit, create, update, destroyメソッドのみですべてを表現するということです。
## 具体的な設定例
### ・ 例1
“`
namespace :admins do
root ‘dashboards#index’resources :staffs
resources :users do
resource :enable, only
エンドレスメソッドについて
今回は元有名企業で開発をしていた方が御用達しているというエンドレスメソッドについて調べたのでその使い方をメモ程度にまとめました。
## エンドレスメソッドとは
『end を書かずにメソッドを定義する』というそのままの意味のメソッドになります。
これにより def set_user = @user = User.find(params[:id]) という形でメソッドを定義する事ができるようになります。基本的には1行でかけるメソッドの時に多様するようです。
### わかりやすいイメージ
“`
# 今までは def ~ end でメソッドを定義していた
def set_user
@user = User.find params[:id]
end# これが def だけで定義できるようになる
def set_user = @user = User.find(params[:id])
“`### 実際のコード
“`
class ExampleController < ApplicationController def show sum = squ
【Ruby】数値Nを3桁ずつカンマ区切り
## はじめに
学習記録のために自分なりに解説したいと思います。# 問題
大きな数値 N が入力されます。3 けたごとにカンマ区切りで出力してください。
ただし、N のけた数は 3 の倍数です。# 解答例
“`rubynum = gets.chomp # 数値を入力
reversed_num = num.to_s.reverse # 数値を文字列に変換し、逆順にする
comma_separated = reversed_num.gsub(/(\d{3})(?=\d)/, ‘\1,’) # 3桁ごとにカンマを挿入
puts comma_separated.reverse # 文字列を再度逆順にして出力
“`## 考え方
Rubyには組み込みの形式設定機能があり、それを利用して数値を指定した桁数ごとに区切って出力します。まず、`to_s`を用いて数値を文字列に変換し、その後に`reverse`と`gsub`を使って3桁ごとにカンマを挿入します。最終的に`reverse`で文字列を正しい順序に戻します。—
## 使用したメソッドについて###
Rubyでデザインパターン (4) FactoryMethodパターン
## この記事は何
デザインパターンについて、Rubyでどのような使い方ができるかをまとめた記事です。
デザインパターン自体の解説は詳しく行いません。## FactoryMethodパターンとは
FactoryMethodパターンとは、スーパークラスで特定のインスタンスに対しての処理のステップを実装し、サブクラスでどのインスタンスに対して処理を行うのかを指定するデザインパターンです。詳しくはこちらをご覧ください。
https://qiita.com/shoheiyokoyama/items/d752834a6a2e208b90ca
## Rubyでのコード例
スーパークラスで手続きの流れを実装し、サブクラスで手続きの処理で呼び出しているメソッドの定義と、インスタンスの定義を行います。“`rb
class SuperClass
def factory_method
instance = build_instance
method1(instance)
method2(instance)
method3(instance)
end
Rubyのクラス
Rubyのデータ(値)は、オブジェクトであり
オブジェクトは何かしらのクラスに属しています。
オブジェクトがどのクラスに属しているのかは
“`.例
“Hello World”.class
“`
例のようにclassメソッドを使うことによって知ることができます。
ruby文字列
Rubyで文字列を作るには
基本的にシングルクォート(’)、もしくはダブルクォート(”)で囲む
“`.例
“ダブルクォートで囲う。”
‘シングルクォートで囲う。’
“`
コンソールで囲わずに入力するとエラーになる
Railsヘルパー
“`.rb
# ページごとの完全なタイトルを返す
def full_title(page_title = ”)
base_title = “Ruby on Rails Tutorial Sample App”
if page_title.empty?
base_title
else
“#{page_title} | #{base_title}”
end
end
“`
のようなヘルパーを作成することで“`.application.html.erb
<%= full_title(yield(:title)) %>
“`
で呼び出すことができる
rubyの予約語の意味まとめ
## はじめに
rubyの予約語についてまとめたくなったので、予約語とその意味をまとめます。## 予約語
予約語はクラス名、変数名などに用いることはできない。
ただし接頭辞$, @、@@が先頭についたものは予約語とは見なされない。
[ruby リファレンス](https://docs.ruby-lang.org/ja/latest/doc/spec=2flexical.html)
| 予約語 | 意味 | 例 |
|————–|————————————————————————————————
ずんだもんがリアルタイムで会議内容をレビューし読み上げるプログラムを作る
:::note info
本記事は2024年6月に執筆しました。
今後もっと効率的な実現方法が出てくるかと思います。
:::![03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2951879/fcc974ac-d576-057b-2559-b56f77544b67.jpeg)
# 趣旨
前回の記事([GPT-4o同士で会話して会議を代行するプログラムを作る(プロト版)](https://qiita.com/kdi384ldp/items/8b8714d5f0a8395a1eb7))執筆中に、「ChatGPTの出力内容を音声合成ソフトで読み上げることが出来るのでは?」と思いついたので、作ってみた。# 環境
| 製品 | バージョン |
|:————|:——————-|
|Windows 11|23H2|
|Ruby|3.3.1|
|ChatGPT API|モデルはGPT-4oを指定|
|Google Spee
rbenv: ruby: command not found
# 問題
rbenv: ruby: command not foundが発生## 解決策
`rbenv versions`でバージョンを確認
例:
“`
system
2.7.6
*3.3.0 (/.ruby-version)
“`バージョンをローカル設定
`rbenv local 3.3.0`