Ruby関連のことを調べてみた2022年12月04日

Ruby関連のことを調べてみた2022年12月04日
目次

【Ruby】カッコつけたコードを書いてみよう

※ 本記事はDMM WEBCAMP mentor Advent Calendar 2022 4日目のエントリーです。

## カッコつけたコードとは

* 可読性を度外視した、知識をひけらかしてスキルをアピールするためのコードです
* 実用面は微妙ですが、自分用のアプリや競プロなんかではちゃんと役に立つかも
* 何より、Rubyの記法の自由度の高さを楽しむことを第一にやっていきます

普通のコードを書き換えていくハンズオン形式なので、是非手を動かしながらやってみてください。

## 今回書き換えるコード

入力された文字列を、所謂「Leet」表記の文字列に置換して出力するプログラムです。

> leet(リート、1337、l33t)は、主に英語圏においてインターネット上で使われるアルファベットの表記法である。(Wikipediaより)

つまり、「HELLO」を「H3LL0」と書くような表記で、名前の被りを避けるためにたまにライブラリ名等でも採用されています。

Leetにも色々ありますが、今回は単純に以下のように、英語大文字→数字のみの置換を考えます。

|対象|置換先|
|:—

元記事を表示

飲食店検索サイトの情報をとってきてみよう -食べログ編-

## 概要

久々にスクレイピングで情報を取得するスクリプトを組みたくなったので組んで見る

## 言語
– ruby

## 使うライブラリ
– nokogiri
– mechanize

nokogiriはHTMLをパースする上では欠かせない子です。
net/httpで簡単なスクレイピングはできるがリダイレクトとかが発生する場合に難しいのでそのへんを簡単にやってくれるmechanizeを採用しました。

## 本題
スクレイピングの基本は
1. 通信内容の理解
1. コードに落とし込む

以上である。

### 1. 通信内容の理解

通信内容の理解ということで、基本的にサイトを訪れてデベロッパーツールを開いてNetworkタブを開きます。
そこで検索時にどんな通信が行われているのかを見てみます。
![スクリーンショット 2022-11-29 9.31.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83409/ffae714a-0f99-99de-5abe-afaa5f8fe827.png)

元記事を表示

【OSS】小さなコントリビュートで得た気づき

Ruby開発の[Advent calendar](https://qiita.com/advent-calendar/2022/ruby-dev)の4日目です。本日はOSS参加での学びを書こうと思います。
数年経験を積んで開発はある程度できるけどOSSにはまだ参加したことない方に読んでもらえると嬉しいです。

# 自己紹介?‍♂️
経験5年程のエンジニアです。最近はRubyとReactを書いている事が多いです。
現在は福岡県に住んでいます。

# OSS参加のきっかけ
まず私がOSSをちゃんと認識したのは今在籍している会社に転職してきたタイミングです。
社内にRubyのコミッターが2名在籍されていてすごいなと思った記憶があります。
その後、社内の勉強会でOSS活動についての発表を聞いたりと意識する機会は何度かありました。

特に、RubyKaigiで登壇された方のエンジニアの話を聞いた時と、
10月に開催される[hacktoberfest](https://hacktoberfest.com/)のイベントを知った時は印象に残っています。

大きなきっかけは、11月から社内で**OSS

元記事を表示

ファイルを削除する、存在を確かめる

# ファイルを削除する
“`削除したファイルの数“`を返します。
削除に失敗した場合は“`例外 Errno::EXXX が発生“`します。
“`rb
File.delete(“ファイル名”) # => 1
“`

# ファイルの存在を確かめる
“`rb
File.exist?(“ファイル名”) # => true
“`

# 感想
Fileクラスのメソッドを使うことができて嬉しい。
これからも頑張る。

# 出典
https://docs.ruby-lang.org/ja/latest/method/File/s/delete.html

元記事を表示

cloud vison apiとRubyで簡単にOCRしてみる

## はじめに
OCRを使って画像から文字を抽出したいことがありましたが、自前で作るのはしんどいので既存のサービスで良いものがないか探していました
Cloud Vision APIを使えばかなり簡単に実現できそうだったので紹介します

## 事前準備
googleのドキュメントを参考にCloud Vision APIを有効にしてください
https://cloud.google.com/vision/docs/detect-labels-image-client-libraries?hl=ja

jsonでcredential情報がダウンロードできるので、任意の場所において
環境変数`GOOGLE_APPLICATION_CREDENTIALS`で指定してください

cloud vision APiのgemをインストール
“`sh
gem install google-cloud-vision
“`

## 使い方
今回はこちらの自分のQiitaのマイページの一部分に対してOCRを使ってみます
![2990f756141a0c40fe1b356a4fc6c92d.png](http

元記事を表示

evenメソッドで偶数値の取得

# 問題
配列にある値の中から偶数の値をカウントして出力するメソッドを作りましょう。

出力例:
“`
count_evens([2, 1, 2, 3, 4]) → 3
count_evens([2, 2, 0]) → 3
count_evens([1, 3, 5]) → 0
“`

ヒント
even?というメソッドを使いましょう。
 
 
 
# 解答
“`
def count_evens(nums)
count = 0
nums.each do |num|
if num.even?
puts count
end
end
end
“`
 
 
 
# 模範解答
“`
def count_evens(nums)
count = 0
nums.each do |num|
if num.even?
count += 1
end
end
puts count
end
“`

# 解説
配列の中の偶数の数を出力するためにカウントした数を保持するための変数countを用意する。
countを

元記事を表示

【Rails6】コンソールでアソシエーションを理解しよう②(多対多)

この投稿は、
[DMM WEBCAMP mentor Advent Calendar 2022](https://qiita.com/advent-calendar/2022/infratop_mentor)
の投稿3日目のエントリーです。

2日目の @tomoaki-kimura の投稿、
[【Rails6】コンソールでアソシエーションを理解しよう①(一対多)](https://qiita.com/tomoaki-kimura/items/165fdcf94c179e8e08b4) の続きとなります。

## 環境と前提

– ruby 3.1.1
– Rails 6.1.7
– yarn 1.22.18

前提として、

[【Rails6】コンソールでアソシエーションを理解しよう①(一対多)](https://qiita.com/tomoaki-kimura/items/165fdcf94c179e8e08b4)

こちらの環境が作れていて、手を動かした状態からスタートとなります。

## 多対多のモデル
### 中間テーブルとは

中間テーブルは、今回の `User` と `P

元記事を表示

「位置引数とキーワード引数の分離」の要修正箇所収集するマン

## 0. はじめに

前置きとなる記事は以下 :rolling_eyes:

##### [Ruby 3.0 に含まれる非互換「位置引数とキーワード引数の分離」の乗り越え方](https://qiita.com/m-kubo/private/0cff8efb04390eb32e75)

## 1. 「位置引数とキーワード引数の分離」の要修正箇所を収集するコード

さっそくですが、以下のようなコードを Rails に追加します。

“`ruby:config/initializers/separation_of_positional_and_keyword_arguments.rb
# 「位置引数とキーワード引数の分離」の対応を進めるための補助モジュール
# Warning.warn をオーバーライドし、warning を出力する条件、出力先を制御します。
# 参考:https://docs.ruby-lang.org/ja/2.7.0/class/Warning.html
# https://docs.ruby-lang.org/en/2.7.0/Warning

元記事を表示

eager_load!で失敗した反省文

この記事は「READYFOR Advent Calendar 2022」の3日目の記事です。

# ようするに

Railsアプリケーションでは以下の設定がおすすめ。

“`rb
# config/environments/test.rb
config.eager_load = ENV[“CI”].present?
“`

# `Rails.config.eager_load`とは

アプリケーションは、コードが大きくなればなるほど読み込みに時間がかかってしまいます。

例えば「ちょっと動作確認のためにconsoleを開きたいんだけどな」と考えコンソールを開いたとき、毎回この読み込みが発生すれば開発効率が低下するのは火を見るより明らかです。

そこでRailsではコードの読み込みを最小限にするための遅延読み込みをサポートしています。Ruby定数名からファイルを探し出して読み込む仕組みで、開発用途なら非常に便利な機能ですね。

一方production用途ではリクエストを高速に返したいので、遅延読み込みではなく、Rails起動時にまとめて読み込んでいます。この切り替えを`Rails.

元記事を表示

飲食店検索サイトの情報をとってきてみよう -ぐるなび編-

## 概要

いつか横断検索みたいなものを作りたいのでその前段階的に飲食店の情報取得をしてみる

## 言語
– Ruby

## 使うライブラリ
– nokogiri

nokogiriは取得したHTMLをパース(解析)するのに使います。
情報の取得部分はrubyの標準ライブラリのnet/httpをつかます。

## 本題
スクレイピングの基本は

– 通信内容の理解
– コードに落とし込む

以上である。

### 1. 通信内容の理解

ぐるなびのページに移動してデベロッパーツールで通信を確認します。
![スクリーンショット 2022-11-30 3.00.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83409/bfe0c9ac-2363-687a-c3ec-34e68e2f86b8.png)

今回はこのリクエストからrubyのコードを取得します。

通信を右クリックして「Copy as cURL」を選択します
![スクリーンショット 2022-11-30 3.00.40.png](h

元記事を表示

[rails]Googlemap APIを使ってプチ食べログを作りたいのでテスト環境で途中まで実装してみた!(Googlemap表示位置の変更、新規投稿編)

#### 初心者がやりたいことを綺麗にできないのでゴリ押ししてやり通しています。
間違いなく綺麗な書き方ではないので、そういったコードが嫌いな方は本気で見ないことをお勧めします。

## [やりたいこと]
ポートフォリオ用に、食べログのラーメン屋さん専門みたいなのを作ろうかなと
やろうとしている機能は
– [x] 口コミ投稿機能(今回の主軸)
– [ ] Device機能(既に完了済み)
– [x] GooglemapAPI(ちょっとだけ)
– [ ] 多対多(アソシエーション、フォロー機能)
– [ ] AWS(デプロイ済み)
などです。

## [注意]
かなり行き当たりばったりな記事です。
後々、他のgemなどの影響で書き方など変わる可能性があります。ご承知ください。

## [環境]
※使っていない可能性のある環境も記載してます。
Mac M1チップ
rails 6.1.6
ruby 3.0.1
node v16.17.1

## [前回まで]

https://qiita.com/_soratanaka_/items/766cf2fd0d56e538593c

##

元記事を表示

【個人開発】京都観光できっと大活躍!?京都の抹茶スイーツ店と神社仏閣のどちらも検索できるサービスを作った話。⛩【Rails7】

# [始めに?](#始めに?)

突然ですが、皆様**抹茶スイーツ**はお好きでしょうか?
**神社仏閣**を巡って御朱印を貰ったことはありますか?
私は抹茶スイーツと神社仏閣を巡るのが大好きで京都に住んでいるような**変わり者**です。
まあそんな特殊な人はあまりいないと思うのですが。
けれどそのどちらも普段は行わないだろう方も、折角京都に来たのならどっちか、
あわよくばどちらも巡りたいな〜と思ったりしないでしょうか?思いますよね?
抹茶スイーツ何選紹介記事とかはありますし、神社仏閣情報が豊富なサイトは勿論あります。
**しかしそのどちらもが同時に載っているサービスは存在しないのです……**
えっ。。何故。。絶対需要があるのに!
そうだないなら作ろう!私が**ユーザー**だ!
というわけで今回作ったサービスが以下になります。

[サービスURL]

https://www.matcha-to-jinja.com/

[GitHubのURL]

https://github.com/hiiragi17/greentea_temple

# 目次
| 章 | タイトル | 備考 |
|

元記事を表示

Excelを扱うRubyGemまとめ 2022

※本記事は、22/12/02の[Qiita Night~Ruby~](https://increments.connpass.com/event/265957/)のLTでお話したことを記事化したものです。

8年前、[RailsでExcelを扱うGemまとめ](https://qiita.com/Kta-M/items/02a2c41c5624f75498aa)という記事を書きました(RubyではなくRailsと書いているのは若気の至り)。Qiitaに記事を書き始めてから初めてたくさんのいいねをもらった思い出深い記事です。

ですが、投稿から8年も経っているにもかかわらず、「excel gem」と検索するとまだ最初に出てきます。
Excel関連Gem業界にとってはあんまり良くないと思うので、改めてまとめてみました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39565/2f857727-e9bd-1d7c-d9d1-ade24dd500cf.png)

なお、本記事での検証用コードは

元記事を表示

【徹底解説】プログラミング初心者が2ヶ月かけてRuby on Railsのアプリを開発しました!ぜひ一度ご覧ください!

# みんなの戦国武将

– アプリ → https://sengokubusyou.herokuapp.com/
– Qiita → https://qiita.com/TS1engineer

# 1. 概要

– **200 人以上の豊富な戦国武将の中から、好きな武将を見つけたり、登録することができます。**
– **好きな武将にコメントを投稿することで、気の合う仲間とつながることができるアプリです。**

![top.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/e478e1ba-ee53-1bc5-8c23-6bee5428e205.gif)

# 2. 開発背景

## 歴史が大好き

**2016 年大河ドラマ「真田丸」をきっかけに歴史に興味をもち、歴史の本を購入したりする中で、実際に現地に行くことが趣味になりました。**
中でも戦国武将について調べることが日課となっていて、特に気になる武将がいれば、ゆかりの地を巡ったりしています。
![haikei1jpg.jpg](h

元記事を表示

Rubyでクラスメソッドを定義する方法を思いつく限り挙げてみた

## 概要

タイトルの通り、Rubyでクラスメソッドを定義する方法に関する記事です。

## 動機

元々はクラスメソッド全般に関する記事だったのですが、調べているうちに書き方を色々思いついてしまったのでそちらをメインにすることにしました。

## レギュレーション

* 文法要素については1つとして扱う
* メソッドを使うものについてはメソッドの名前ごとに1つとして扱う
* eval系の場合、文字列とブロックは同じ扱いになる

## 補足

ちゃんとクラスメソッドや特異クラスについて知りたい方は以下の記事をどうぞ!
https://magazine.rubyist.net/articles/0046/0046-SingletonClassForBeginners.html

## 本編

### 1. クラス名スタイル

実は利用頻度が少ない気がします。

“`ruby
class C
def C.m
puts ‘m’
end
end
“`

### 2. selfスタイル

最も一般的な書き方な気がします。

“`ruby
class C
def

元記事を表示

rails g kaminari:views bootstrap4 でprivate method `themes’ called for Kaminari::Generators::ViewsGenerator:Class (NoMethodError)というエラーが出る

# 実行環境
* Windows 10
* Rails 6.0.3.6
* Ruby 3.1.2

# 実践したこと
* gem ‘kaminari’を追加し、ページネーションを実装しようとしていました。
* gem導入後、bootstrap用のビューテンプレートを作成しようとし、
“`rails g kaminari:views bootstrap4“`のコマンドを実行したところ、
タイトルのようなエラーが発生したため、解決のプロセスをまとめます。
# エラー内容
“`言語:ターミナル
% rails g kaminari:views bootstrap4
C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/kaminari-core-1.2.0/lib/generators/kaminari/views_generator.rb:117:in `initialize’: Invalid argument @ rb_sysopen – https://api.github.com/repos/amatsuda/kaminari_themes

元記事を表示

【Ruby on Rails】プログラミング初心者がオンラインスクールのチームで開発したアプリを公開しました!ぜひ一度ご覧ください!

# 1. 開発したアプリ
– アプリ → https://team-project-64.herokuapp.com/
– GitHub → https://github.com/yanbaru-expert/team_project_64
![index.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/635b4f64-3276-2a42-1adc-4252d4027451.gif)

# 2. 開発環境
## 使用技術
| 項目 | 内容 |
| —————- | ——————– |
| 言語 | Ruby 2.7.6 |
| フレームワーク | Ruby on Rails 6.1.6.1 |
| フロントエンド | HTML/scss/JavaScript |
| データベース | PostgreSQL

元記事を表示

メモ:クラスとインスタンス

* クラス(鋳型・設計図)
* インスタンス(クラスから実体を作り出したもの)
* インスタンス化(クラスからインスタンスを生み出す工程)

# インスタンス化(クラスからインスタンス)
#### newメソッド
インスタンスを作り出すためには、クラス名にnewメソッドを利用することで呼び出せる。
“`new.rb
class Class_name
end

Class_name.new # こいつ。
“`
#### initializeメソッド
newメソッドを呼び出すと自動で呼び出されるメソッド。定義していなければ呼び出されない。
定義は普通のメソッドと同じ方法でできる。

newメソッドに引数(実引数)がある場合、同じ値がinitializeメソッドの引数(仮引数)として呼び出される。
“`initalize.rb
class Class_name
def initialize(hikisu)
print “引数は#{hikisu}です”
end
end

Class_name.new(‘引数’) # こんなふうに引数も入れることができる。

元記事を表示

【Rails API】hash値で検索をかけたい場合

## はじめに
調整さんのようなWebアプリを作成していて、ルーティング・コントローラー内で、イベントをidではなくhash化されたidを使用した時の備忘録

### マイグレーションファイル
“`ruby
class CreateEvents < ActiveRecord::Migration[7.0] def change create_table :events do |t| t.references :user, foreign_key: true, null: false t.references :category, foreign_key: true, null: true t.string :name, null: false t.text :description, null: false t.boolean :is_public, null: false, default: true t.string :hashed_url, null: false t.datetim

元記事を表示

TypeScriptとRubyで作る日めくり機能。

Rubyのアドベントカレンダー2022が気づいたら作成されていて、

登録しようと想ったら枠がいっぱいだったので、(いつ作成されたのだろう…)

2枠目に入れました。下のライブラリ、GitHubではスターを2つもらいました。

(1つは自分で入れています。お気に入りのつもりです)

> お題は、TypeScriptとRubyで作る日めくり機能です。

> 自動化の話もあります。それでは、どうぞ。

https://github.com/takkii/himekuri_ts

この数日で少し更新したのですが、このようなRubyGemsを登録しました。

このRubyGemsライブラリは[日めくり](https://github.com/takkii/himekuri)のように、

日付や時間などを出力し表示します。

### v1.1.0の例

“`markdown
時刻を表示 : 2022年6月22日 : 14時14分27秒 : 水曜日
来年の1月1日まであと : 192日です
令和4年6月22日 : R04.6.22 : [和風月] → [水無月]
日めくり数え番号 : 1.1

元記事を表示

OTHERカテゴリの最新記事