- 1. 5 つの文字列の半角スペース区切りでの分割
- 2. Twi●●er風サービスの日次サマリー機能を例にRuby on Railsでバッチ処理テストを極める
- 3. Ferrum を使って特定の要素のスクリーンショットを撮影する
- 4. 技術選定しよう! ~ ビルドツール編 ~
- 5. デフォルト値付きのHashを宣言する
- 6. Ruby2.7から3.2にアップデートした時につまづいたところ一覧
- 7. Rubyではメソッドの最後の引数がハッシュの場合、{}を省略できる
- 8. Ruby:多重ループを抜ける大域脱出とは
- 9. 【Rails】Railsチュートリアル第6章 復習用
- 10. Docker 環境で binding.pry を使ってデバッグする方法
- 11. [paiza×Qiita記事投稿キャンペーン] Rubyでmod7占いを解いてみた
- 12. 【AWS SAM】入門してみた dockerで環境構築 ruby
- 13. ‘rubygems/user_interaction’ を使って、簡単なプロンプト UI を実装する
- 14. 【Rails】環境構築まとめ
- 15. カレー好きのためのActiveRecord学習ガイド 〜スパイシーなメソッドを添えて〜
- 16. centos9でlibyaml-develが見つからない
- 17. 配列の各要素ごとにカウントする方法【Ruby JS】
- 18. Ruby3.0系から3.1系へのバージョンアップ
- 19. 【Rails】Railsチュートリアル 第5章 復習用
- 20. 割り算の余りが出せなくてもエンジニアとしてやっていけますか?
5 つの文字列の半角スペース区切りでの分割
>5 つの文字列の半角スペース区切りでの分割し、1行ずつ出力する問題をRubyを使って解きました
“`ruby
array1 = [“one”,”two”,”three”,”four”,”five”]
for str in array1 do
puts str
end“`
出力結果
“`
one
two
three
four
five
“`
Twi●●er風サービスの日次サマリー機能を例にRuby on Railsでバッチ処理テストを極める
## はじめに
本記事では、Ruby on Railsを使用したバッチ処理の実装とテスト方法について、実践的な例を交えて詳しく解説します。Twitter風のサービスで日次サマリーを生成するバッチ処理を題材に、効果的なテスト手法を紹介します。
## 1. プロジェクトのセットアップ
まず、新しいRailsプロジェクトを作成し、必要なgemをインストールします。
“`bash
rails new twitter_summary_app –database=postgresql
cd twitter_summary_app
“`次に、`Gemfile`を以下のように編集します:
“`ruby
source ‘https://rubygems.org’
git_source(:github) { |repo| “https://github.com/#{repo}.git” }ruby ‘3.1.2’
gem ‘rails’, ‘~> 7.0.0’
gem ‘pg’, ‘~> 1.1’
gem ‘puma’, ‘~> 5.0’
gem ‘bootsnap’, r
Ferrum を使って特定の要素のスクリーンショットを撮影する
# はじめに
[Ferrum](https://github.com/rubycdp/ferrum) は [CDP (Chrome DevTools Protocol)](https://chromedevtools.github.io/devtools-protocol/) を使用して Ruby で Chrome を操作できる Gem です。今回はこの Gem を使用して、Web ページ上の特定の要素のスクリーンショットを撮影してみます。
# 例
[Yahoo!天気・災害](https://weather.yahoo.co.jp/weather/) で [福岡県福岡市](https://weather.yahoo.co.jp/weather/jp/40/8210.html) の本日の天気の部分を撮影したいです。
![weather.yahoo.co.jp_weather_jp_40_8210.html(PC).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6697/9dfc77eb-1a9a-
技術選定しよう! ~ ビルドツール編 ~
# 技術選定しよう!
技術選定は、重要で大変な作業ですよね。
適切な技術を選ぶためには、候補をしっかりとリストアップし、それらを比較し根拠を持って判断することが欠かせません。
そこでこの記事では、技術選定を行う際のポイントや役立つ情報について紹介しています。
それにより、担当システムに最適な選択肢を見つける手助けとなるでしょう。
ぜひこの記事を参考にして、より適切な技術選定ができるようにしてください!# 今回選定する技術
今回選定するのは「**ビルドツール**」 です!
webpack一択の時代は終わりを迎え、新たなツールが人気を集めています。
# 候補一覧
下記2つのツールをピックアップしました!
– [webpack](https://webpack.js.org/)
– [Vite](https://ja.vitejs.dev/)# 背景
比較する前に、今回記事に取り上げようと思った背景を説明いたします。
本題までスキップしたい方は[こちら](https://qiita.com/q_halleluja
デフォルト値付きのHashを宣言する
## やりたかったこと
`{ x:1, y:2 }` みたいなハッシュを宣言しつつデフォルト値も与えるっていうのを1行でやりたかった。
## パターン1 : Hash.new + merge
ハッシュを定義しつつデフォルト値も、っていう魔法のメソッドは無くて、2つのメソッドをチェーンするしかないっぽい。
悪くはないけど `Hash.new` ってあんまり馴染みが無いから若干意図が伝わりづらい気もする。“`rb
hash = Hash.new(5).merge(x: 1, y: 2)hash[:x] #=> 1
hash[:y] #=> 2
hash[:z] #=> 5
“`## パターン2 : ハッシュリテラル + tap
さっきより長くなっちゃったけど、こっちの方が意図が明確で好きかな。
“`rb
hash = { x: 1, y: 2 }.tap { |h| h.default = 5 }hash[:x] #=> 1
hash[:y] #=> 2
hash[:z] #=> 5
“`
Ruby2.7から3.2にアップデートした時につまづいたところ一覧
## 重い腰を上げた
プラットフォームの期限切れも近づいており、そろそろRuby2.7→3.2にあげないといけないタイミングになった。
コケたところを備忘録として残す。### アップデート内容
“`
ruby ‘2.7.6’ → ‘3.2.2’
rails ‘6.0.3’ → ‘~> 6.1′
“`# 起きた問題一覧
## Macで Ruby 3.2.2 のダウンロードができない
“`terminal
$ bundle install
rbenv: version `3.2.2’ is not installed
$ rbenv install 3.2.2
BUILD FAILED (macOS 14.4.1 on x86_64 using ruby-build 20240727)
“`下記の記事を元に3.2.2のインストール完了(感謝)
https://qiita.com/orangeQ/items/117826cdf55806f4209c## bundle update 時の依存関係エラー
### nio4rエラー
“`terminal
$ bundle
Rubyではメソッドの最後の引数がハッシュの場合、{}を省略できる
## はじめに
メソッドの引数に関するRuby特有の挙動がわからずハマったため、備忘録としてまとめます。なおこの記事におけるRubyのバージョンは**3.3**です。
## 問題
以下のようなコードを見かけました。“`ruby
class A
attr_reader :arg1, :arg2, :arg3def initialize(arg1:, arg2:, arg3:)
@arg1 = arg1
@arg2 = arg2
@arg3 = arg3
enddef execute
# キーワード引数で3つの引数を渡しているつもり
B.execute(param1: arg1, param2: arg2, param3: arg3)
end
endclass B
# 引数は1つだけ、キーワード引数でもない
def self.execute(params)
params.each do |key, value|
puts “#{key}: #{value}”
end
Ruby:多重ループを抜ける大域脱出とは
※この記事は初学者が自分なりにまとめたものになります。
# 目次
– [はじめに](#はじめに)
– [大域脱出とは](#大域脱出とは)
– [代表的な大域脱出方法2選](#代表的な大域脱出方法2選)
– [1. return](#1-return)
– [2. throw catch](#2-throw-catch)
– [まとめ](#まとめ)
– [使い分けのポイント](#使い分けのポイント)# はじめに
今日は、Rubyにおいて2重3重に重なったループを一撃で抜ける方法を調べてみました!
### 大域脱出とは
この何重にも重なったループを抜け出す処理を”**大域脱出**”と言います。
# <代表的な大域脱出方法2選>
以下は、Rubyの大域脱出の方法で代表的なもの2つです。
**1. return**
メソッドやブロックの実行を終了し、呼び出し元に制御を戻します。メソッドの中で使われることが多いです。
**2. throw catch**
特定のスコープから大域脱出するための方法で、throwは指定されたシンボルを投げ、対応するcatc
【Rails】Railsチュートリアル第6章 復習用
はじめに
今日もチュートリアルに取り組んでいく。
今回はモデルを主に扱っているようだUserモデル
・Railsでは、データモデルとして扱うデフォルトのデータ構造のことを **モデル(Model)** と呼びます
・データベースを使うことで長時間データを保存することができる
・データベースをやりとりするライブラリ(テンプレのようなもの)を **Active Record** という
・ActiveRecordにはデータの作成、保存、検索のメソッドが用意されている
・これらをつかうためにSQLを意識する必要がない!!
・**マイグレーション** = Rubyでデータのはいったテーブル(表)を操作する仕組みRailsにおける属性
・第4章では`attr_accesor`を用いてUserクラスにnameとemail属性を定義した。
・しかしこれはRubyだから必要なのであって、実はRailsでは属性を定義する必要がない(デフォルトでその仕組が提供されている)モデル作成
・ここでこれらのユーザー情報を保存するモデルを作成する
・Control
Docker 環境で binding.pry を使ってデバッグする方法
## 初めに
Ruby アプリケーションを Docker コンテナ内でデバッグする際に、`binding.pry` を使いたいと思ったことはありませんか?この記事では、Docker 環境で `binding.pry` を設定する手順を解説します。## ステップ 1: Gemfile に pry を追加
まず、`Gemfile` に `pry-byebug` を追加します。
“`ruby
gem ‘pry-byebug’
“`これで、`bundle install` を実行
“`bash
bundle install
“`## ステップ 2: docker-compose.yml の設定
`docker-compose.yml` ファイルを作成または編集して、デバッグ用の設定を追加します。
“`yaml
docker-compose.yml
web:
build: .
command: bash -c “rm -f tmp/pids~/////↓この2文を追加
stdin_open: true
tty: true
“`## ステップ 4
[paiza×Qiita記事投稿キャンペーン] Rubyでmod7占いを解いてみた
この記事は **paiza×Qiita記事投稿キャンペーン「プログラミング問題をやってみて書いたコードを投稿しよう!」** キャンペーンへの参加記事です。
https://paiza.jp/pages/campaign/paiza-qiita
今回キャンペーンの候補問題の中から、ランクSの「mod7占い」を解いてみました。
https://paiza.jp/works/mondai/s_rank_skillcheck_sample/mod7
解いたソースコードの全体像は以下にあります。
https://github.com/Umekawa/paiza-open-problem/blob/main/mod7.rb
## 問題分
問題文の詳細ははPaizaの記事の方を読んでいただくとして、要点は
– 最初にカード数が与えられ、その後カードの数だけ入力が与えられる
– すべて異なるカードがn枚与えられる (nは3以上)
– 与えられたカードから同時に3枚選び、3枚のカードの和が7の倍数になる組み合わせ数を出力するの3点です。
では実際に作成していきましょう。
## 実
【AWS SAM】入門してみた dockerで環境構築 ruby
# はじめに
今までserverless frame workを使用して、lambdaのデプロイを行ってきたのですが、serverless frame work V4から有料化ということを受けてSAMへ移行したいと思いました。https://dev.classmethod.jp/articles/sls-migrate-cdk-or-sam/
# 環境構築
dockerで行いました。
* ruby3.3.4
* node 20.16.0
* aws-sam-cliをzipで公式ページから取得しインストールhttps://github.com/yuuki4135/sam-test-app
“`dockerfile
FROM ruby:3.3.4-slim-bookwormRUN useradd -u 1000 developper \
&& apt-get update -qq && apt-get install -qq –no-install-recommends \
curl awscli unzip wget git vimRUN wget h
‘rubygems/user_interaction’ を使って、簡単なプロンプト UI を実装する
RubyGems 内には、 `rubygems/user_interaction` という (RubyGems 用の) プロンプト UI を実装するためのヘルパーがあります。
“`ruby
require ‘rubygems/user_interaction’ # 標準ライブラリなので、これ自体のインストールは不要ui = Gem::ConsoleUI.new
ui.ask(‘What is your name?’)
# What is your name? tomoasleep
# => “tomoasleep”ui.ask_yes_no(‘Are you ok?’)
# Are you ok? [yn] y
# => trueui.ask_yes_no(‘Are you ok?’, true)
# Are you ok? [Yn]
# => trueui.choose_from_list(‘What is your favorite food?’, [‘ramen’, ‘sushi’, ‘tempura’])
# What is your favorite
【Rails】環境構築まとめ
はじめに
現在Railsチュートリアル2周目に取り組み始めて約1週間が経つ
Railsチュートリアル7版ではGitHub CodespacesというクラウドIDE環境での開発が取り上げられている
→テンプレートが用意されていて、環境構築が非常に楽なのだが(というかほぼない)実際に環境構築をする際に何も知らなくて困ってしまう更に私は来週から技育CAMPのオンラインハッカソンに出場する予定なので、
「さすがに環境構築を知らないのはまずい!」
と思い、環境構築について学習することにする。もしかしたらチュートリアルのテンプレートは今後開発をする際にも流用できるのかもしれないが、他のエンジニアの方はおそらく環境構築から取り掛かっているだろうし、何かと今後困りそうなので!
基本的にこちらの記事を参考にさせていただいてるが、具体的なインストール手順などは重複してしまうためこちらでは書かない。この記事では必要な部分を要約する形にしたい。
ま
カレー好きのためのActiveRecord学習ガイド 〜スパイシーなメソッドを添えて〜
## はじめに
Rails学習中のカレー屋めぐりにハマっている私を含め、多くの初学者はActiveRecordを使用する際、背後で実行されているSQL文をあまり意識していなく「これ、どんな動きをするんだっけ?」と手が止まることも少なくありません。
SQL文を理解していないと、複雑なデータ操作などができず、気が付かぬうちに非効率なコードを書いてしまう可能性があります。
本記事ではカレー屋めぐりにハマっている私がカレー屋を例えに、ActiveRecordのメソッドをまとめてみました。## 対象者
– Rails初学者
基本的な Rubyの記法の理解
– SQL初学者
クエリの構造の理解## 環境
Ruby バージョン: 3.2.2
Rails バージョン: 7.0.4
## メソッド一覧とSQL### find: 番号でカレーを探す
“`
CurryDish.find(1)
# SELECT `curry_dishes`.* FROM `curry_dishes` WHERE `curry_dishes`.`id` = 1 LIMIT 1CurryDish.find([
centos9でlibyaml-develが見つからない
conohaサーバーを借り、ruby3.2.2をasdf経由でインストールしようとしていた際、libyaml-develが必要だからインストールしてね、と出るのにインストールコマンドを打つと、
“`:command
$ sudo dnf install -y libyaml-devel
Last metadata expiration check: 0:00:43 ago on Mon 29 Jul 2024 11:00:14 PM JST.
No match for argument: libyaml-devel
“`
となり、見つからないとなってしまった。その際解決した手順の忘備録です。## 対処法
下記ページの通りに実行したところ、無事インストールできrubyのインストールも完了しました。
https://github.com/rbenv/ruby-build/discussions/2197
参考ページの通り、以下のコマンドを実行します。
“`:command
sudo dnf install -y epel-release
sudo dnf config-m
配列の各要素ごとにカウントする方法【Ruby JS】
# はじめに
配列の各要素ごとにカウントする方法について記述していきます。
今回はHashの形でreturnします。
# Rubyの場合
簡単です。`tally`メソッドを使用します。
“`rb
arr = [“apple”, “banana”, “apple”, “orange”, “banana”, “apple”]
tallied = arr.tally
# => {“apple”=>3, “banana”=>2, “orange”=>1}
“`https://docs.ruby-lang.org/ja/latest/method/Enumerable/i/tally.html
# JSの場合
最も美しいのは、`reduce`メソッドを使用し`tally`メソッドを再現することだと思います。
“`js
function tally(array) {
return array.reduce((acc, item) => {
acc[item] = (acc[item] || 0) + 1;
return acc;
}, {});
}
Ruby3.0系から3.1系へのバージョンアップ
# 背景
Ruby3.0.6とRails6.1.7.7で開発したアプリを運用します。デプロイ先はheroku(heroku-20)で特に問題なくアプリは動いていました。しかしながら、Ruby3.0系はheroku-20と互換性はありますが、heroku-22と互換性がなく、Ruby3.0系でherokuにデプロイしようとすると以下のエラーが発生しました。
~~~
remote: This app is using the Heroku-20 stack, which is deprecated:
remote: https://devcenter.heroku.com/changelog-items/2895
remote:
remote: From April 30th 2025, Heroku-20 will be end-of-life, and apps using it
remote: will no longer receive security updates, and be run at your own risk.
remote:
remote: From M
【Rails】Railsチュートリアル 第5章 復習用
前回の第4章ではRubyのコードに関して学習し、基礎的なオブジェクト指向が理解出来た(はず)
第5章ではおそらくviewの部分をメインに扱っている
さらに今回はBootstrapも用いるclassとid
・HTMLではclassに似たようなidというものがある
・idは重複してはならない(一度しかつかえない)
・クラスとidはcssを当てる時に便利
・また今回のclass名にはbootstrapにおいて特別な意味を持つため、適当につけてはいけない。“`css
.nav{ /*ここはidの場合は.ではなく#を用いる*/
font-size:20px
}
“`link_to(重要)
・様々なRailsのコードを見る限り恐らくめちゃくちゃ頻出するコード
・link_toはページ内にリンクを作成するコード(HTMLでいう
割り算の余りが出せなくてもエンジニアとしてやっていけますか?
## はじまりはいつも自己紹介から
どうも!
割り算の余りが出せないモンスターです!今回ですが、rubyで割り算と余りを算出する問題が出され正解を一発で出すことができなかったので、こちらの記事を書く決心をしました。
以下本文
## なんで、できんかったん?
今回の問題を解くのが難しいと感じたのは以下の理由があったからです。
“`
1. rubyの組み込みメソッドが使えない。
2. 割り算の”/”は商しか出すことができないこと。
“`そのためわかりませんでした。
## 余りを出す組み込みメソッド “modulo”
皆様ご存知かと思われますが、rubyには割り算の余りを出すメソッドがあります。
それがmoduloメソッドです。### 以下”modulo”の解説
### moduloメソッドの使い方
moduloメソッドは数値オブジェクトに対して呼び出され、引数として除数を指定します。すると、割り算の余りを返してくれます。以下にいくつかの例を示します。“`
puts 10.modulo(3) # 出力: 1
puts 20.modulo(4)