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

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

Google Place APIを使用して情報を取得(Rails)

## はじめに

個人開発をするにあたって、セレクトショップとカフェの情報を取得したかったので、GooglePlacesAPIを使用して取得することにしました。ただ、今回APIを使用するのが初めてで苦労したので、同じような状況の方のために、使い方を記録として残します。

## GooglePlacesAPIとは

Googleが提供するAPIの一つで、地理的な情報(緯度、経度、place_id等)をもとに場所や施設に関する情報を取得できるサービスのこと。取得できる情報は以下の表のとおりです。

| 取得キー | 内容 |
| — | — |
| @address_components | 住所の詳細 |
| @formatted_address | 住所 |
| @formatted_phone_number | 電話番号 |
| @icon | Googleマップ上で使われるアイコン画像のURL |
| @international_phone_number | 国際電話番号 |
| @json_result_object | データがJSON形式でまとめられたもの |
|

元記事を表示

[Rails]いいねしてくれたユーザに、新規投稿をメール通知する(開発環境編)

## きっかけ
#### 経緯
就活中の選考での課題として
[投稿者のレビューにいいねをしたユーザに、その投稿者が新規でレビューしたときにメールでお知らせする機能]
の作成が出てきましたので、アウトプット用に記載いたします。

#### 開発環境
Ruby 3.1.2
Rails 6.1.7.3

## 手順
この機能を実装するためには、以下の手順で行うことにします。

#### ①モデルの設定
ユーザとレビュー、いいねのモデルを設定します。ユーザとレビュの関連付け、いいねとユーザ・レビューとの関連付けをします。
~~~app/models/user.rb
class User < ApplicationRecord has_many :contents has_many :favorites end ~~~ ~~~app/models/content.rb class Content < ApplicationRecord belongs_to :user has_many :favorites end ~~~ ~~~app/models/favorite.rb cl

元記事を表示

Railsでjqueryのajaxを使ってCSVインポート・エクスポートを実装

## 概要
※初投稿なので読みづらかったらすみません
RailsにてCSVインポートエクスポートをしたかったのですが、
リクエストをjqueryのajaxで行い、json形式でレスポンスを返す必要があり、form_tagなどのヘルパーメソッドで完結できませんでした。
また、エクスポートに関しては、一度CSVファイルを作成し、それをエクスポートする必要がありました。(既存のCSVファイルのエクスポート
実装に時間がかかったので、まとめることにしました。

## コード(CSVインポート)
“`ruby:index.html.erb
<%=form_tag'', method: 'post', multipart: true, id:"importForm" do %>

<% end %>
“`

“`javascript:import.js
// インポートボタン押下時の処理
let param1

元記事を表示

docker-composeで開発環境を構築する

# はじめに
今回はdocker composeでRuby on RailsとPostgreSQLを使用した開発環境の構築手段をまとめます。

# 開発環境について
構築する開発環境は以下のようになります。

| App名 | バージョン |
|:– |:–:|
| Ruby | 3.2.2 |
| Ruby on Rails | 7.0.6 |
| postgres | 12 |
| docker-compose | 3.9 |

# 構築手順
## 1. 必要なファイルを作成
環境構築に必要なファイルを作成していきます。
ファイル構造は以下のようになります。

“`
/raiis-docker
├─ Dockerfile
├─ Gemfile
├─ Gemfile.lock
└─ Docker-compose.yml
“`

### 1.1 Dockerfileを作成
Dockerfileをroot直下に作成します。
Dockerfileの記述内容は以下になります。
installが必要なアプリケーションは適宜追加してください。
今回は開発環境が決まっている

元記事を表示

【Ruby】ハッシュの値でreduceする

HashのValueをreduceしたい際に迷ったためメモ。

# 結論

“`ruby
hash = {
hoge1: 10,
hoge2: 20,
hoge3: 30
}

# 第二引数を (key, value) で渡す
hash.reduce(0) do |acc, (_, number)|
acc + number
end
# => 60
“`

# 第二引数に一つだけ渡してみた場合
key → value → key → … と交互に繰り返し処理が行われる
“`ruby
hash.reduce([]) do |acc, item|
acc + item
end
# => [:hoge1, 10, :hoge2, 20, :hoge3, 30] keyとvalueが交互に配列に格納された
“`

https://docs.ruby-lang.org/ja/latest/method/Enumerable/i/inject.html

元記事を表示

Rubyでgemを使わずにSlackにメッセージを送信する

# 目的
gemを使わないでSlackにメッセージを送ります。

# コード
“`ruby:main.rb
require ‘net/http’
require ‘uri’

uri = URI.parse(‘https://slack.com/api/chat.postMessage’)
params = {
channel: ‘#random’,
icon_emoji: ‘:robot_face:’,
username: ‘bot’,
token: ENV[‘SLACK_API_TOKEN’],
text: “予定表~①?ハンカクだ”,
}
res = Net::HTTP.post_form(uri, params)
pp res
pp res.body
“`

元記事を表示

Crystal で四捨五入するには

:::note info
この記事で扱う Crystal のバージョンは 1.9.1 です。
:::

# 結論

#round メソッドの引数で `:TIES_AWAY` モードを指定します。

“`crystal
puts 0.5.round(:TIES_AWAY) #=> 1.0
“`

モード指定は Symbol で。String だとエラーになります。
Symbol であればアルファベット部分は小文字でも OK のようです。
丸める対象の桁や基数を指定できる overload を使う場合は名前付き引数 `mode` を明示的に書く必要があります。

“`crystal
puts 0.5.round(“TIES_AWAY”) #=> エラー
puts 0.5.round(:ties_away) #=> 1.0
puts 5.round(-1, mode: :TIES_AWAY) #=> 10
“`

# この記事を書いたきっかけ

Crystal で四捨五入しようとして #round を使ったけど期待と異なる結果になって困惑したのがきっかけです。

“`Cry

元記事を表示

optparseを使ってRubyでカレンダープログラムを作ってみた

# はじめに
`calコマンド`は、Linuxの基本的なコマンドで、カレンダーを表示するコマンドです。デフォルトでは今月の1ヶ月分のカレンダーが表示され、オプションを指定すると年や月などを指定することができます。

[【 cal 】コマンド――カレンダーを表示する](https://atmarkit.itmedia.co.jp/ait/articles/1701/11/news016.html)

今回は、こちらをrubyのプログラムを実行して同様の結果を得られるようにしたいと思います。

また、**optparse**を使ってオプションを指定できるようにして指定した月のカレンダーを表示できるようにします。

# optparseとは?
Rubyのoptparseライブラリは、コマンドラインオプションの解析をサポートするためのものです。このライブラリを使用すると、コマンドラインツールやアプリケーションでオプションとその引数を簡単に扱うことができます。

以下参考記事です
[library optparse – Ruby3.2リファレンスマニュアル](https://docs.rub

元記事を表示

【Ruby】Timeクラス 曜日の出力方法

# はじめに

自己学習の復習として投稿します。

### 何も使わず出力した時

“`ruby
now = Time.new
puts now.wday
“`

出力結果は、**0~7** の数字で出力されます。

### 曜日で出力したい場合は?

“`ruby
now = Time.new
week = [“日曜日”, “月曜日”, “火曜日”, “水曜日”, “木曜日”, “金曜日”,”土曜日”]
puts week[now.wday]
“`

このように、曜日を配列で記述する必要があります。
基本的に出力される数字は日曜日から始まっている為、配列も日曜日から始めてます。

元記事を表示

TechStreamのコース紹介

フリーランスでフロントエンドのエンジニアをしながら、[TechStream](https://protech-rho.vercel.app/)というプロダクトを個人開発しております、かいです!
今回はTechStreamのコース紹介について書いていきます。

### TechStreamとは?
[TechStream](https://protech-rho.vercel.app/)は、「誰よりも早く、エンジニアへ」というコンセプトの元に発足されたプログラミングの動画プラットフォームです。未経験からエンジニアへ費用をなるべく抑えて転職するためのサポートをいたします。

![tekusuto.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3475205/948ddc5b-0ed2-cabc-9a0f-9239dcb9ea87.gif)

[リンク](https://protech-rho.vercel.app/)はこちらから☟

https://protech-rho.vercel.app

特徴は以下

元記事を表示

optparseを使ってrubyのプログラムでオプションを指定する

## はじめに
optparseという標準のライブラリを使用することで、rubyのプログラムにオプションを指定して実行することが可能になります。
本記事ではoptparseの使用方法について簡単にまとめます。

参考
[library optparse (Ruby リファレンスマニュアル)](https://docs.ruby-lang.org/ja/latest/library/optparse.html)

## 実行時のオプションの設定方法
* 例えば-aオプションで指定された引数を受け取りたい場合は以下のように書きます。
“`rb:optparseの使用例
# 標準ライブラリのoptparseを読み込む
require ‘optparse’

# optparseを使用するためのOptionParserのインスタンス化
opt = OptionParser.new

# オプションの登録
opt.on(‘-a’) { |v| v }

# argumentから引数のみを抽出
opt.parse!(ARGV)
“`

* `ARGV`の中にオプションや引数が配列として格納され

元記事を表示

米国起業家が実践済み「収益をあげるまでのビジネスアイデアの練り方」

# 対象読者
・真に消費者のニーズに答えたサービスを作りたい方
・遠回りせず収益を上げたい開発者、ビジネスマン、起業家
・ブレインストーミングでアイデアだしする方法を知りたい方

# はじめに
皆さん、こう思ったことはないでしょうか。
あの人はなぜあんな斬新なことが思いつくのだろうか。
頭の出来が違うからだろうと・・・
やはり限られた才能ある者だけが誰もやったことのないサービスを思いつき、結果を残せるのだと・・・

実はアイデアを形にして成功を納めるには典型的な型があるのです。
アメリカで何百万ものオンラインビジネスを立ち上げているCourtland Allen氏が運営しているコミュニティで学ばれている内容を紹介したいと思います。

https://www.indiehackers.com/

「How to brainstorm great business ideas」
優れたビジネスアイデアをどうやっておもいつきますか?

https://www.indiehackers.com/post/how-to-brainstorm-great-business-ideas-ab51c

元記事を表示

【Rails】マイグレーションとは

最近ruby on railsの学習を始めたのですがHTMLとPHPの勉強してきた人間なので、
はじめはマイグレーションという言葉の概念すらわからない状態でした。

なんとなくマイグレーションについてわかってきたので同じような初学者に向けて
学んだことをまとめていきたいと思います。

# 目次
[マイグレーションとは](#マイグレーションとは)
[マイグレーションを使うメリット](#マイグレーションを使うメリット)
[マイグレーションファイルを作成する](#マイグレーションファイルを作成する)
[マイグレートの実行](#マイグレートの実行)
[マイグレーションの修正](#マイグレーションの修正)
[絶対これはしちゃダメなこと
](#絶対これはしちゃダメなこと
)
# マイグレーションとは
そもそもマイグレーションファイルとは何か。
マイグレーションはデータベースの構造を書き記した設計書のようなものです。
データベースは以下DBとさせていただきます。
マイグレーションファイルのスゴイ所は、
SQL文を書かなくてもDBの変更(テーブルの作成や変更)ができるというところです。

# マイ

元記事を表示

Rubyの累乗計算

累乗の計算を***Ruby***で実装しました。

“`Ruby
# 累乗の計算
# Create 2023/8/14

A = 80
B = 22
C = 10
ANS = ((A+B)*C) ** 3
puts ANS

“`

“`Ruby
ANS = ((A+B)*C) ** 3
“`
の例は3乗の計算を表します。

元記事を表示

Rubyの環境構築手順

フリーランスでフロントエンドのエンジニアをしながら、[TechStream](https://protech-rho.vercel.app/)というプロダクトを個人開発しております、かいです!
今回はRubyの環境構築の手順について書いていきます。

### 1.Rubyとは

Rubyは多くの開発者に愛されているプログラミング言語の一つです。今回は、Rubyの環境構築手順について解説します。特に、初心者の方にも分かりやすく、手軽に始められるように説明します。

### 2.TechStreamについて
(宣伝許してください:rolling_eyes:)
[TechStream](https://protech-rho.vercel.app/)は、「誰よりも早く、エンジニアへ」というコンセプトの元に発足されたプログラミングの動画プラットフォームです。未経験からエンジニアへ費用をなるべく抑えて転職するためのサポートをいたします。

![tekusuto.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/34

元記事を表示

不労所得獲得装置開発その3~AVアラート~(アダルト注意)

# はじめに
2023年5月に「[不労所得獲得装置開発その2~AVブログパーツサイト構築~(アダルト注意)](https://qiita.com/drafts/a41e4bd5308ff22dee8b)」で、RailsによるAVブログパーツを作成できるサイト[ヨメレバ](https://yomereba.com/)のパクリについて投稿しました。

https://www.avaffi.link/

しかし、こけました。まったく使ってもらえておりません。サーバー代も払えません…

自分なりに理由を考えてみたのですが、少なくとも日常的に自分で使うものでなれば、他人だって使わないし、改善案も出てくるはずがないというものでした。

そこで今回は、自分でも前から欲しいと思っていた機能を開発しました。その機能とは、簡単に言うとGoogleアラートのAV版です。アラートを設定すると、それを含んだAVタイトルが発売されるとメールでお知らせします。対象サイトはFANZA、DUGA、SOKMIL、MGS動画です。

例えば、私の推しAV女優天使もえは、毎月10日(?)に新タイトルが発

元記事を表示

RailsアプリケーションにWYSIWYGエディタ(CKEditor)を導入する

## はじめに
こんにちは。[kosukein38](https://twitter.com/kosukein38)です。
業務でRails4系のアプリケーションにWYSIEIGエディタを導入する必要があったため、そのライブラリの導入手順やできることについて、まとめておきます。
※知識の整理目的も含まれるため、少々冗長になる可能性があります。適宜読み飛ばしていただければと思います。
こんなのをメールの本文入力フォームに導入します。
editor.jpg

## 対象者
– WYSIEIGエディタが何かということを知りたい方
– Rails4系のアプリケーションにWYSIEIGエディタを導入する方法が知りたい方

Rails6系以降はTrixというWYSIEIGエディタをベースにした、Action Textという

元記事を表示

【Ruby】モジュールでコールバックメソッドを定義する場合、included do内に記述する理由

# 結論
– コールバックメソッドは、実行するクラスのコンテキストで評価される必要がある。
– モジュール内にそのまま記述すると、モジュールのコンテキストで評価されてしまう。
– includedブロック内に記述することでコールバックメソッドがincludeしたクラスのコンテキストで評価されるから。

# コールバックを定義するコード
– `difine_method`を使用して、実行時にメソッドを定義している
– `difine_method`が呼び出されるクラスに定義される
“`ruby
[:before, :after, :around].each do |callback|
define_method “#{callback}_action” do |*names, &blk|
_insert_callbacks(names, blk) do |name, options|
set_callback(:process_action, callback, name, options)
end

元記事を表示

Rubyのincludeについて

# はじめに

#### ※以下の内容には誤りが含まれる可能性があります

# includeとは

includeはモジュールの性質を他のクラスに追加するために使用されるメソッドです。

簡単に言うとincludeはモジュールを呼ぶためのメソッドです。

# includeの使い方

書き方は基本的にクラスと同じに、モジュールを定義し、

その中にメソッドを記述します。

“`
module モジュール名
def メソッド名()
メソッドの機能
end
end
“`

そうしたらクラスの中でincludeでモジュールを指定し、モジュールに記載されたメソッドをクラスに取り込みます。

# まとめ

– includeはモジュールを呼ぶためのメソッド
– 書き方は
“`
module モジュール名
def メソッド名()
メソッドの機能
end
end
“`

元記事を表示

Ruby言語 (ruby/ruby) のビルド時に、`make miniruby`がこけた

## エラー詳細

以下どドキュメントに従い、ビルドしようとした。

https://docs.ruby-lang.org/en/master/contributing/building_ruby_md.html

ディレクトリ構成は以下。Rubyのコミットバージョンは、[e1683b4](https://github.com/ruby/ruby/commit/e1683b4958b217d246ff737bdd1b046554c73e18)

“`
– workdir
– ruby
– build
“`

`workdir/ruby/build` 配下で、以下を叩いた。

$ `make miniruby V=1`

“`sh
file2lastrev.rb: Command failed with exit 128: git
BASERUBY = /Users/daiki-kudo/.rbenv/shims/ruby –disable=gems
CC = clang
LD = ld
LDSHARED = clang -dynamiclib
CF

元記事を表示

OTHERカテゴリの最新記事