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

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

検索候補キーワードを取得する

# 前提
– Ruby 2.7.4
– 検索対象は、Google と Wikipedia
– その他にも Amazon とか Youtube とかあるので、気になった人は?
– [サジェストAPIを使って、各サービスのサジェストワードを取得する](https://sakusaku-techs.com/blog/suggest/)
– [Suggest API](https://so-zou.jp/web-app/tech/web-api/suggest-api.htm)
– [キーワードサジェストを秒速で公開したお話](https://qiita.com/shiro_rep/items/79f5cba8764b060305ef#%E3%83%AD%E3%82%B8%E3%83%83%E3%82%AF%E3%81%AE%E4%BD%9C%E6%88%90)

# Google
– [Google Suggest API の仕様](https://so-zou.jp/web-app/tech/web-api/google/sugg

元記事を表示

【Ruby】%記法一覧

## 文字列

### `%`, `%Q`

`%`および`%Q`は式展開できる文字列を表現します。
ダブルクォーテーションで文字列を囲んだ`”文字列”`と同等になります。

“`ruby
%(a b c)
# => “a b c”

a, b, c = 1, 2, 3
%(#{a} #{b} #{c})
# => “1 2 3”
%Q(#{a} #{b} #{c})
# => “1 2 3”
“`

### `%q`

`%q`は`%`や`%Q`と同様に文字列を表現しますが、式展開ができない点で異なります。
シンブルクォーテーションで文字列を囲んだ`’文字列’`と同等になります。

“`ruby
%q(a b c)
# => ‘a b c’

a, b, c = 1, 2, 3
%q(#{a} #{b} #{c})
# => “\#{a} \#{b} \#{c}”
“`

## 配列

### `%W`

`%W`はスペースで区切った文字列を含む配列を表します。

“`ruby
a, b, c = 1, 2, 3
%W(#{a} #{b} #{c})

元記事を表示

[rails 初心者]同率順位を踏まえたランキング機能

初めに

ポートフォリオテーマとして業者のレビューサイトを作成しています。
以下の画像のようなレビューサイトを作っていこうと思います。

![top画面2-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2822721/a259bdd1-d312-4eb9-219e-ecbbd0526cec.png)

※自分用でまとめてますので、分かり辛かったらすいません。
また理解不足・誤りがあったらコメント頂けますと幸いです。m(__)m<ヨロシクオネガイシマス

前提条件

①今回の記事ではランキング機能のみ(※同率順位を踏まえた順位)についてまとめます
②レビュー機能や並び替え機能については、以下URLの記事に記載されている内容を参考にしてください

[[rails初心者]複数権限でのログインを使ったレビューサイトの作成(基本)](https://qiita.com/about10/items/0e376c84022f2ac238d0)
[[

元記事を表示

[Tips] capistranoの設定ファイルにRubocopを適用する

Rubocopではデフォルトで`rb`や`rake`などrubyに関する拡張子に対してフォーマットを行うようになっています。
基本的には[初期設定](https://github.com/rubocop/rubocop/blob/master/config/default.yml)で事足りるのですが、たまに別拡張子で書かれたRubyスクリプトにもRubocopを適用したくなることがあります。
今回自分の場合はcapistranoを使ったスクリプトが`cap`という拡張子で記述されており、そちらにRubocopを適用したかったのです。
その場合、どうするんだろうと少し調べたら下記の記述を`.rubocop.yml`書き足すだけで簡単に`cap`が拡張子のファイルに対してRubocopを動作させることができました。

“`diff_yaml:.rubocop.yml
AllCops:
Include:
– ‘**/*.rb’
– ‘**/*.builder’
– ‘**/*.god’
– ‘**/*.rake’
– ‘**/*.ru’

元記事を表示

Python,Ruby,PHP,Java,JavaScript,PerlのMySQLの比較

Qiita > プログラミング言語の比較

Python,Ruby,PHP,Java,JavaScript,PerlのMySQLの比較

# Python

https://qiita.com/ab-boy_ringo/items/f05bb6329f51e1632965

# Ruby

https://qiita.com/hukuro310/items/ec91beaecd11157e0640

# PHP

https://qiita.com/ab-boy_ringo/items/8274c66b6692966fdc55

# Java

https://qiita.com/namari/items/50d9aac0faf6b7e7b314

# JavaScript

https://qiita.com/PianoScoreJP/items/7ed172cd0e7846641e13

# Perl

https://perlzemi.co

元記事を表示

[rails 初心者]メソッド化についてまとめてみた

初めに

縁があり、通っているプログラミングスクールのメンター(質問対応者)さんから次のことを勧められました
`メソッド化に力を入れた方がいい`と。。。
ということで今回はそのメソッド化についての基本知識?考え方?を自分なりにまとめてみました!!

注意事項

※自分用でまとめてますので、分かり辛かったらすいません。
また理解不足・誤りがあったらコメントにてご指摘頂けますと幸いです。m(__)m<ヨロシクオネガイシマス

前提条件

①今回は`rails`を題材にして話を進めていきます。

②次の二つの知識についてある程度理解済みであること   ※私の場合は60%ぐらいでした・・・多分(;^ω^)
・「メソッド」について理解していること
・「オブジェクト指向」について理解していること
※もしここで不安な方がいましたら、以下のプルダウンのところを開いてリンク先を一読してみてください。

③`posts_conntroller`にて`@post = Post.find(

元記事を表示

モデルやコントローラーの命名規則

## はじめに
モデルのクラス名で誤った名前を気付かないうちにつけてしまい、エラー解消に時間がかかったので、同じミスはしないように記録に残す。

## モデル、コントローラーの命名規則
https://qiita.com/gakkie/items/3afcd505c786364aa5fa

これがシンプルにまとめられていた印象。

元記事を表示

【Rails】development以外の環境のコンソールに入ったときのConnection refusedエラー

## 環境
Rails 6.0.1
Ruby 2.6.3
PostgreSQL 11.16

## development以外の環境のコンソールに入りたいとき
“`
rails console -e production
“`

## コンソールに下記のエラーで入れなかったとき

“`
could not connect to server: Connection refused
“`
“`database.yml“`内のhost名を“`docker-compose.yml“`で定義されているDB用コンテナ名と一致させる。

“`docker-compose.yml
environment:
DB_HOST: postgres
DB_NAME: hoge_development
DB_NAME_TEST: hoge_test
DB_USERNAME: postgres
DB_PASSWORD: password
REDIS_HOST: redis
“`

“`config/database.yml
production:
<<: *de

元記事を表示

Ruby – カラーコードをRGBに変換する

“`
gem install color
“`

“`rb
require “color”

Color::CSS[:red].to_rgb.to_a.map { |rate| (rate * 255).round }
# => [255, 0, 0]

Color::CSS[:orange].to_rgb.to_a.map { |rate| (rate * 255).round }
# => [255, 165, 0]
“`

# チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

# Twitter

元記事を表示

nokogiriの使い方メモ

初投稿&マークダウン慣れついでに、簡単に[nokogiri](https://github.com/sparklemotion/nokogiri “nokogiri”)の使い方のメモ。
[nokogiri](https://github.com/sparklemotion/nokogiri “nokogiri”)はRubyでスクレイピングする際に使うライブラリ。

### 環境
“`
ruby 3.0.0
MacOS Mojave 10.14.4
“`

### インストール&バージョン確認
権限エラーがあれば`sudo`つけること
“`
gem install nokogiri
nokogiri -v
“`

### タイトル取得
下記のポータルサイトのタイトルをnokogiriを使用して、スクレイピングしてみる。
[プログラミングに関するブログ](https://supremecourtlawlibrary.org “ProCode”)

“`
require ‘nokogiri’
require ‘open-uri’

url = “https://supreme

元記事を表示

Rubyで値オブジェクトの集合(Set)を使うには

# 背景: 値オブジェクトの集合(Set)を作りたい
Rubyで値オブジェクト(Value Object)の集合を使う必要がありました。
ただ、Setにそのままオブジェクトを入れるだけではうまくいきませんでした。
その解決法を調べたので記事にしました。

結論としては、hashとeql?を定義すれば良いです。

この記事では、このようなサンプルコードからスタートします。(実際にはたったこれだけの値オブジェクトを作ることはないでしょうが、できる限りシンプルにするためにこうしています。)
なお、Rubyのバージョンは2.7.0です。
“`ruby
require “set”
class ValueObject
def initialize(v)
@v = v
end

attr_reader :v

def ==(other)
other.instance_of?(self.class) && v == other.v
end
end

v1 = ValueObject.new(1)
v2 = ValueObject.new(1)

p Set.new

元記事を表示

x | |= 1 (自己代入)について

## 環境
Ruby2.6

## はじめに
**x ||= 1**のような書き方をすることを、**自己代入**と呼びます。他言語からRubyに移った人から見れば、パッと見ただけでは、「何をやっているのだろう?」と思うものです。ググってみると、変数の値が下記の場合、右辺の値(この場合1)をセットするとあります。
– nil
– false
– 変数が定義されていない

3パターンに当てはまらない場合は、変数が現時点で保持している値を、そのまま維持し続けることになります。つまり、1に変換されません。

## 動作確認
x変数が未定義の場合、右辺の1を返します。x変数が未定義ということは、ロジックの上位個所で、x変数がまだ一度も現れていないということになります。x変数を始めて定義して、初期値に1をセットしたことと同じ意味になります。つまり、x = 1と同じです。
“`test.rb
x ||= 1 # => 1
“`

x変数に、nil or falseがセットされている場合、1に置き換えるという意味になります。
“`test.rb
x = nil
x ||= 1

元記事を表示

【チェリー本】steep checkで”Ruby::UnknownConstant”というエラーが発生する場合の対処法

## 発生する問題
拙著「[プロを目指す人のためのRuby入門 改訂2版](https://gihyo.jp/book/2021/978-4-297-12437-3)(通称 チェリー本)」の13.10節の内容に従ってコードを書いていくと、”No type error detected.?”と表示されるはずの部分で、エラー(warning)が出力される場合があります。

### 書籍の記述

“`
$ steep check
# Type checking files:

…………………………………………………..

No type error detected.?
“`

### 発生するエラー

“`
$ steep check
# Type checking files:

……………………………………………………………………..F..

test/fizz_buzz

元記事を表示

Rubyのオブジェクト・メソッド・インスタンス・変数についてまとめてみた

## オブジェクトについて

### オブジェクトとは
Rubyにおいてはクラスから生成されたもののこと。

### クラスについて
Hogeクラス、のようなクラスを定義したとする。RubyではこのクラスもClassクラスに所属しているオブジェクトである、というのが大きなスタート。
これはどういうことかと言うと、HogeクラスというものがあったとするとこのHogeクラスも実際は`Class.new`して作られている、オブジェクトである、ということ。
下記の意味は`Hoge=Class.new`と同意義である。
“`ruby
class Hoge
end
“`

### インスタンスオブジェクト(インスタンス)
クラスから生成されるのがインスタンスオブジェクト(インスタンス)。
`クラス名.new`で生成することができる。
RailsにおけるモデルはClassクラスからインスタンスを生成し、定数を与えていると言える。
コントローラーも同様。

### レシーバーとは
~~メソッドの戻り値を受ける対象~~
~~下記の場合、Personがレシーバー。オブジェクトの世界ではオブジェクトにメ

元記事を表示

変更に強いコードを設計する(DIパターン)

# 初めに
適切に設計されたオブジェクトは単一責任になっているので実際のアプリケーションでは複数のオブジェクトを組み合わせて仕事をしています。あるクラスから他のクラスを呼び出したり、モジュールをインクルードしたり。そうすることで相互に依存が発生します。依存が発生すること自体は避けられませんが、依存の方法を管理することで変更に強いコードにすることが可能です。

管理しやすいコード、変更に強いコードを書けるようになりたくてオブジェクト指向について学習しています。
学んだことをまとめます。

# 依存関係があるとはどんな状態か

オブジェクトが以下について知っているときは依存関係がある状態です。
1. **他のクラスの名前**
1. **self以外に送ろうとしているメッセージ(メソッド)の名前**
1. **メッセージが要求する引数**
1. **そのメッセージが要求する引数の順番**

コード例
“`ruby
class Gear
def initialize
end

def gear_inches
ratio * Wheel.new(rim, tire).di

元記事を表示

Python,Ruby,PHP,Java,JavaScript,PerlのSQLiteの比較

Qiita > プログラミング言語の比較

Python,Ruby,PHP,Java,JavaScript,PerlのSQLiteの比較

# Python

https://qiita.com/flcn-x/items/69481d31211421e21f21

# Ruby

https://qiita.com/akito_tameto/items/868e3805dc01c7bef6ef

# PHP

https://qiita.com/39_isao/items/a5b4940138bced936de0

# Java

https://qiita.com/tsweblabo/items/39bdd73a910417a9a8df

# JavaScript

https://qiita.com/zaburo/items/a155cbc02832b501a8dd

# Perl

https://perlzemi.com/blog/20

元記事を表示

MYSYS2のインストールできないとき

# MYSYS2のインストールで困った話
rubyの環境構築中にMYSYS2をインストールしようとした際に以下のエラーが発生しました

“`
ridk install
“`
↑によって以下が起動します
“`
_____ _ _____ _ _ _ ___
| __ \ | | |_ _| | | | | | |__ \
| |__) | _| |__ _ _ | | _ __ ___| |_ __ _| | | ___ _ __ ) |
| _ / | | | ‘_ \| | | | | | | ‘_ \/ __| __/ _` | | |/ _ \ ‘__/ /
| | \ \ |_| | |_) | |_| |_| |_| | | \__ \ || (_| | | | __/ | / /_
|_| \_\__,_|_.__/ \__, |_____|_| |_|___/\__\__,_|_|_|\___

元記事を表示

ActiveRecordのトランザクションを理解する

Railsのトランザクションについて理解が曖昧だったため調べてみました。トランザクションって何?という方から、トランザクションについて知ってるつもりな方まで読んでいただけると幸いです。

## この記事の目的
– トランザクションを理解する
– Ruby on RailsのActive Recordでのトランザクションの使い方を理解する

## トランザクションとは?
トランザクションとは、複数のSQL文によるデータの更新を「1つの処理」とし、全てのSQLの実行が成功した時にデータベースに更新分を反映させることです。データベースの整合性を保つ目的があります。

基本的に、複数のSQLを同時に実行する際はトランザクションを使う必要があります。

### トランザクションの使用例
代表的なトランザクションの使用例は、銀行での取引です。

カエル?さんがクマ?さんに2万円送金するとします。?さんは日本におり、?さんはロンドンにいます。その際のデータベースの処理は下記のようになります。

1. ?さんの銀行口座に2万円の残高があるか確認する
1. ?さんの銀行口座から2万円を引き落とす
1.

元記事を表示

一覧ページの読み込みが重たい問題について

初めに

ポートフォリオテーマとして業者のレビューサイトを作成しています。
以下の画像のようなレビューサイトを作っていこうと思います。

![top画面1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2822721/75cffe6d-1714-fc3c-9ad8-068addf06205.png)

※自分用でまとめてますので、分かり辛かったらすいません。
また理解不足・誤りがあったらコメント頂けますと幸いです。m(__)m<ヨロシクオネガイシマス ### 発生している問題・エラー ・先程の画像のように、`一覧ページ(画像を扱っているページ限定)`を開こうとしたとき読み込みが重たくなる現象が発生  ※問題なく表示されるパターンもあれば、タイムアウトや以下のエラーが発生する時もありました。 イメージ画像 ![activerecode-errore.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2

元記事を表示

Rustでmrubyを呼んで見るライブラリminutus

# 目的
Rustでプログラム実行中に後から渡されるプログラムを実行したいです。プラグインみたいな感じです。
Rustだけで実現するのは難しいので(wasmあたりを使うとできるという噂もありますが)、他のプログラム言語を利用します。
ここではRubyを使います。

Rubyを使うものは当然Rubyがインストールされている必要があり、シングルバイナリで実行できないのが難点です。
そこでmrubyを使うことになるんですが、以前からあったものは古いmrubyしか対応していなくて微妙でした。
今回利用するminutusというライブラリは最新のmrubyをサポートしていて、mrubyの知識があまりなくてもサクッと利用できるのがよかったです。
開発の意図などは作者のブログを参考にしてください。[Minutus という mruby の Rust バインディングを作った](https://dawn.hateblo.jp/entry/2022/08/14/202458)

## コードの目的
Rubyのコードでは以下の2点を確認しました。

* 引数を渡せる
* HTTP通信ができる

# コード

元記事を表示

OTHERカテゴリの最新記事