Ruby関連のことを調べてみた2021年08月15日

Ruby関連のことを調べてみた2021年08月15日
目次

満経過月数を計算するロジック(Ruby)

経過月数(満月)を計算するロジックについて解説します。(あまり記事がなかった)
具体的に言うと以下のようなロジック。

start:2021年01月15日
end:2021年02月14日
→経過月数0を返す

start:2021年01月15日
end:2021年02月15日
→経過月数1を返す

start:2021年01月15日
end:2022年03月15日
→経過月数14を返す

## コード

IN:開始日(start),終了日(end) :data型
OUT:満経過月数

“`ruby
def calculation_diff_months(start,end)
(end.year – start.year) * 12 + end.month – start.month – (end.day >= start.day ? 0 : 1)
end
“`

## コードの解説
■年の計算
(end.year – start.year) * 12
→ 年の差分を求めて月変換

■月の計算
end.month – start.month 
→ そのまま月の差分を求める
ここ

元記事を表示

has_one型のデータを表示させたくて

こんにちは!!
ユーザー登録が完了したら、ライブ情報を
投稿できるアプリを作成中です。
今回はhas_one型のデータの表示方法について
自分のメモ用としてアウトプットしていきたいです。

# アソシエーション

作成中のアプリには3つのエンティティが存在します。
deviseを使って実装したユーザー登録をするadmin_usersテーブル、
ユーザーの詳細なプロフィールを保存するadmin_profilesテーブル、
ライブ情報を投稿できるeventsテーブルが存在します。

3つのテーブルのアソシエーションは以下の通りです。
Admin_user has_one admin_profiles.
Admin_user has_many events.
Admin_profile belongs_to admin_user.
Event belongs_to admin_user.

ユーザー登録はウィザード形式で保存する為、
AdminProfileモデルに

“`rb
belongs_to :admin_user, optional: true
has_one_attached

元記事を表示

RubyでPayPayのAPIを呼んでみる

# 目的
PayPayのAPIをRubyで使いたいです。しかし公式のSDKはPython, Node, PHP, JavaしかないのでREST APIを叩くことにします。リファレンスは[こちら](https://www.paypay.ne.jp/opa/doc/jp/v1.0/webcashier)です。APIキーの取得などは[Developerサイト](https://developer.paypay.ne.jp/)で確認してください。

# プログラム
プログラムはNodeのSDKのコードを参考に作りました。リファレンスもかなり詳細に書いてあるので助かります。APIはQRコードの作成だけ実装してあります。

“`ruby:Gemfile
# frozen_string_literal: true

source “https://rubygems.org”

git_source(:github) {|repo_name| “https://github.com/#{repo_name}” }

gem ‘httpclient’
“`

“`ruby:paypay.rb
re

元記事を表示

【Ruby on Rails】Time.currentメソッドを使って簡単に時間表示をする方法

#対象者

* 時間の表示方法を知りたい方

#目的

* Time.currentメソッドを使って時間を表示する

#実際の手順と実例
###1.結論

**Time.current**メソッドを使えば簡単に時間が表示できます。
rails cで確認すると

““
$ rails c
Running via Spring preloader in process 6425
Loading development environment (Rails 5.2.6)
[1] pry(main)> Time.current
=> Sat, 14 Aug 2021 23:20:51 UTC +00:00
[2] pry(main)>
““

上記のように今日の時間が取得できます。

###2.応用編

“`
Time.current.all_month #今月
Time.current.all_week #今週
Time.current.all_day #今日
“`

#参照

>[時刻や日付を扱うメソッドの基本情報まとめ【Ruby】【Rails】](https:

元記事を表示

[Rails]redirect_toとrenderの違いについて

# はじめに
本記事では、redirectとrenderの違いについて記述しています。
私自身何気なく、コントローラーなどに記述しておりましたが、
改めて振り返りアウトプットしたいと思います。

# redirectとrenderの違い

“`
redirect_to

ルーティング

コントローラー

ビュー

“`

“`
render

ビュー
“`

随分あっさり書きましたが、このような違いです。

### redirect_to
redirect_toは新しくリクエストが送られてきた時と同じ流れになります。
そのため、同様に`ルーティング→コントローラー→ビュー`の流れになります。

### render
renderは、特にリクエストをされることがなく、そのまま直接ビューにいきます。

`redirect_toはコントローラーへ!` `renderはビューへ!`ということですね。

## 例え

“`ruby
class MessagesController < ApplicationController . . 省略 . . def creat

元記事を表示

◤画像アップロード◢ CarrierWaveとMiniMagickで画像アップロード機能を実装(具体例付き)

![スクリーンショット 2021-08-12 9.38.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89868/fc499218-4bbe-4499-62eb-4c0be00062c2.png)

# 0. はじめに

Railsで画像アップロードといえば`CarrierWave`と`MiniMagick`が鉄板ですね。
数年前、プログラミングスクールに通っていた際にはあまり理解していなかった画像アップロード機能。
超久々に触ったので備忘録として残します?

`ActiveStorage`という選択肢もありますが、あまり優位性がなさそうだったので採用を見送りました。
*参考: [ActiveStorage vs CarrierWave](https://qiita.com/w5966qzh/items/510d4c2a3829524b2e64)*

# 1. 作業環境

“`yaml
OS: macOS Big Sur 11.5.1
Ruby: 3.0.2
Rails: 6.1.4

元記事を表示

【小ネタ】Ruby で new するたびにクラスインスタンス変数をインクリメントして、インスタンス変数にぶち込む

“`Ruby
class BankAccount
@current_account_number = 0

class << self attr_reader :current_account_number end def self.new(name) super(name, @current_account_number += 1) end attr_accessor :name attr_reader :account_number def initialize(name, account_number) @account_number = account_number @name = name end end ```

元記事を表示

[シリーズ] Ruby Elasticsearch 7.x client の使用例

# はじめに

Ruby の Elasticsearch Client を使って Elasticsearch 7.14 で REST API の操作する.
また、比較のために、Kibana DevTool でのクエリも合せて記しておく.

調査状況に応じて都度更新する予定です

|コンテンツ|掲載時期|
|:–|:–|
|[[000] Ruby の elasticsearch client パッケージを使って Elasticsearch 7.14 を操作してみる … 検証環境構築編](https://qiita.com/robozushi10/items/8bd936fe6fbab080149e)|2021/08|
|[[001] クラスタ状態の取得 by Ruby elasticsearch 7.14](https://qiita.com/robozushi10/items/c8ae660cb6ae47317c59)|2021/08|
|[[004] マッピングの取得 by Ruby elasticsearch 7.14](https://qiita.com/robozush

元記事を表示

[030] ドキュメントを全件(11万件超)取得する by Ruby elasticsearch 7.14

|シリーズトップページ|
|:–|
|https://qiita.com/robozushi10/items/2c8b6951ee342b013974|

# 概要

Ruby の Elasticsearch Client を使って Elasticsearch 7.14 で REST API の操作する.
また、比較のために、Kibana DevTool でのクエリも合せて記しておく.

今回はインデックス「shakespeare」から「全件(11万件超)」を取得する.

# 検証環境

下記の要領で検証用データ「Shakespeare」が登録された
・Elasticsearch + Kibana (7.14)
を使用した

[[00] Ruby の elasticsearch client パッケージを使って Elasticsearch 7.14 を操作してみる … 検証環境構築編](https://qiita.com/robozushi10/items/8bd936fe6fbab080149e)

# 参考にした情報

|URL|
|:–|
|https://zen

元記事を表示

[017] ドキュメントの検索結果と該当件数の表示をする by Ruby elasticsearch 7.14

|シリーズトップページ|
|:–|
|https://qiita.com/robozushi10/items/2c8b6951ee342b013974|

# [017] ドキュメントの検索結果と該当件数の表示をする by Ruby elasticsearch 7.14

# 概要

Ruby の Elasticsearch Client を使って Elasticsearch 7.14 で REST API の操作する.
また、比較のために、Kibana DevTool でのクエリも合せて記しておく.

今回はインデックス「shakespeare」から次の「**ドキュメントの検索**」と「**件数表示**」をする.

以下2つを全て満たすドキュメントを抽出し、件数を表示させる.

“`
・フィルード「text_entry」の値に「ACT」という単語を含む
・フィルード「text_entry」の値に「V」という単語を含む
“`

ただし、ここでも Elasticsearch デフォルト挙動の 10件しか取り出さないものとする.

# 検証環境

下記の要領で検証用データ「Sha

元記事を表示

【個人開発】家の中にときどき出る不快な虫を検索するサービス「むしめがね」をリリースしました。

### はじめに
はじめまして。森と申します。

この度、個人サービス「むしめがね」をリリースしました!
サービスに関して記事にしましたので、ぜひご一読いただけたら嬉しいです!

アプリのURL:[https://mushimegane.fun/](https://mushimegane.fun/)

※記事内でゴキブリの画像がでてきます。

### サービス概要
「むしめがね」は、家の中にときどき出て来る不快な虫を検索できるサービスです。

全体を通してシンプルなデザインにしています。
トップページには興味をそそる一文を入れました。

[![Image from Gyazo](https://i.gyazo.com/c26f6f97c70920898bc80fa758839c93.png)](https://gyazo.com/c26f6f97c70920898bc80fa758839c93)

検索するにはワード検索と画像検索があります。

ヘッダーのドロップダウンから「画像検索」ボタンをクリックするとモーダルがでてきます。

そして検索したい虫の画像を入れて検索します。

[![

元記事を表示

[016] ドキュメントの複数フィールドを使った AND による絞り込み検索 by Ruby elasticsearch 7.14

|シリーズトップページ|
|:–|
|https://qiita.com/robozushi10/items/2c8b6951ee342b013974|

# 概要

Ruby の Elasticsearch Client を使って Elasticsearch 7.14 で REST API の操作する.
また、比較のために、Kibana DevTool でのクエリも合せて記しておく.

今回はインデックス「shakespeare」から次の「**ドキュメントの検索**」を行う.

以下3つを全て満たすドキュメントを抽出する.

“`
・フィルード「text_entry」の値に「ACT」という単語を含む
・フィルード「text_entry」の値に「V」という単語を含む
・フィルード「play_name」の値に「Cymbeline」という単語を含む
“`

ただし、ここでも Elasticsearch デフォルト挙動の 10件しか取り出さないものとする.

# 検証環境

下記の要領で検証用データ「Shakespeare」が登録された
・Elasticsearch + Kibana

元記事を表示

[015] ドキュメントの AND による絞り込み検索 by Ruby elasticsearch 7.14

|シリーズトップページ|
|:–|
|https://qiita.com/robozushi10/items/2c8b6951ee342b013974|

# 概要

Ruby の Elasticsearch Client を使って Elasticsearch 7.14 で REST API の操作する.
また、比較のために、Kibana DevTool でのクエリも合せて記しておく.

今回はインデックス「shakespeare」から次の「**ドキュメントの検索**」を行う.
・**フィルード「text_entry」の値に「ACT」かつ「V」という “単語” を含むドキュメントを取り出す.**

ただし、ここでも Elasticsearch デフォルト挙動の 10件しか取り出さないものとする.

# 検証環境

下記の要領で検証用データ「Shakespeare」が登録された
・Elasticsearch + Kibana (7.14)
を使用した

[[00] Ruby の elasticsearch client パッケージを使って Elasticsearch 7.14 を操作し

元記事を表示

[014] ドキュメントの検索 by Ruby elasticsearch 7.14

|シリーズトップページ|
|:–|
|https://qiita.com/robozushi10/items/2c8b6951ee342b013974|

# 概要

Ruby の Elasticsearch Client を使って Elasticsearch 7.14 で REST API の操作する.
また、比較のために、Kibana DevTool でのクエリも合せて記しておく.

今回はインデックス「shakespeare」から次の「**ドキュメントの検索**」を行う.
・**フィルード「text_entry」の値に「ACT」という文字を含むドキュメントを取り出す.**

ただし、ここでも Elasticsearch デフォルト挙動の 10件しか取り出さないものとする.

# 検証環境

下記の要領で検証用データ「Shakespeare」が登録された
・Elasticsearch + Kibana (7.14)
を使用した

[[00] Ruby の elasticsearch client パッケージを使って Elasticsearch 7.14 を操作してみる …

元記事を表示

[010] ドキュメントを 10件だけ取得する by Ruby elasticsearch 7.14

|シリーズトップページ|
|:–|
|https://qiita.com/robozushi10/items/2c8b6951ee342b013974|

# 概要

Ruby の Elasticsearch Client を使って Elasticsearch 7.14 で REST API の操作する.
また、比較のために、Kibana DevTool でのクエリも合せて記しておく.

今回はインデックス「shakespeare」から「**ドキュメント10件のみの取得**」を行う.[^1]

# 検証環境

下記の要領で検証用データ「Shakespeare」が登録された
・Elasticsearch + Kibana (7.14)
を使用した

[[00] Ruby の elasticsearch client パッケージを使って Elasticsearch 7.14 を操作してみる … 検証環境構築編](https://qiita.com/robozushi10/items/8bd936fe6fbab080149e)

# 参考にした情報

|URL|
|:–|
|h

元記事を表示

[004] マッピングの取得 by Ruby elasticsearch 7.14

|シリーズトップページ|
|:–|
|https://qiita.com/robozushi10/items/2c8b6951ee342b013974|

# 概要

Ruby の Elasticsearch Client を使って Elasticsearch 7.14 で REST API の操作する.
また、比較のために、Kibana DevTool でのクエリも合せて記しておく.

今回はインデックス「shakespeare」に対する「**マッピングの取得**」を行う.

# 検証環境

下記の要領で検証用データ「Shakespeare」が登録された
・Elasticsearch + Kibana (7.14)
を使用した

[[000] Ruby の elasticsearch client パッケージを使って Elasticsearch 7.14 を操作してみる … 検証環境構築編](https://qiita.com/robozushi10/items/8bd936fe6fbab080149e)

# 参考にした情報

|URL|
|:–|
|https://

元記事を表示

[001] クラスタ状態の取得 by Ruby elasticsearch 7.14

|シリーズトップページ|
|:–|
|https://qiita.com/robozushi10/items/2c8b6951ee342b013974|

# 概要

Ruby の Elasticsearch Client を使って Elasticsearch 7.14 で REST API の操作する.
また、比較のために、Kibana DevTool でのクエリも合せて記しておく.

今回は「クラスタ状態の取得」を行う.

# 検証環境

下記の要領で検証用データ「Shakespeare」が登録された
・Elasticsearch + Kibana (7.14)
を使用した

[[00] Ruby の elasticsearch client パッケージを使って Elasticsearch 7.14 を操作してみる … 検証環境構築編](https://qiita.com/robozushi10/items/8bd936fe6fbab080149e)

# 参考にした情報

|URL|
|:–|
|https://www.elastic.co/guide/en/ela

元記事を表示

[000] Ruby の elasticsearch client パッケージを使って Elasticsearch 7.14 を操作してみる … 検証環境構築編

|シリーズトップページ|
|:–|
|https://qiita.com/robozushi10/items/2c8b6951ee342b013974|

# 概要

Ruby の Elasticsearch Client を使って Elasticsearch 7.14 で REST API の操作する.

# 検証環境の構築手順

## 1. docker-compose を使ってローカルマシン上に Elasticsearch を立ち上げる

Elasticsearch と Kibana のポート番号がやや特殊である.

“`bash
$ git clone -b Qiita-02 git@github.com:robozushi10/qiita-efk.git
$ cd qiita-efk
$ docker-compose build –no-cache
$ docker-compose up -d
“`

引用元:
[[02] EFK (Elasticsearch + Fluentd + Kibana) の構築 … Dockerコンテナの立ち上げ(説明なし)](ht

元記事を表示

[備忘録] Docker上の Ubuntu 18.04 に rbenv を導入する

# はじめに

2021年6月だったと思うが、
突然 rbenv でエラーが発生して動かないという問題があり調査をした.[^1]

このとき物理ホストを汚すわけにはいかないので、
Docker 上の Ubuntu 18.04 に rbenv を導入してデバッグをした.

通常、**Docker 上に rbenv をインストールするような面倒なことはしないはず** [^2]
なので、参考記録として書き出しておく.

今回は rbenv を使って「2.7.3」「3.0.1」の 2つを導入する.

なお、Dockerfile での「rbenv install バージョン」に導入したいバージョンを書けば
異なるバージョンも導入できるはずである.

# 参考サイト

|URL|
|:–|
|https://ccbaxy.xyz/blog/2020/02/06/docker3/|
|https://github.com/rbenv/ruby-build/wiki|
|https://takatoshiono.hatenablog.com/entry/2015/01/09/012040|
|h

元記事を表示

[シリーズ 全2回] docker-composeを活用して即座に Ruby 3.0 slim-buster を立てる

次の記録である.

限られた物理PC の中で、複数の Ruby バージョンをインストールして
プログラムを作成することになった.
 
ただし、物理PC を汚染させるわけにもいかないので Docker を活用した.
(操作しやすいように docker-compose を導入した)

|コンテンツ|掲載時期|
|:–|:–|
|[[01] docker-composeを活用して即座に Ruby 3.0 slim-buster を立てる (簡易手順のみ)](https://qiita.com/robozushi10/items/6bcbc01ecb792f2ddb06)|2021/08|
|[[02] docker-composeを活用して即座に Ruby 3.0 slim-buster を立てる (説明あり)](https://qiita.com/robozushi10/items/2cb56482f9c8ff604746)|2021/08|

元記事を表示

OTHERカテゴリの最新記事