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

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

macOS BigSurで`rbenv install`が失敗する問題を解決した

# 困っていたこと
– 次のように`rbenv install`で指定のバージョンのrubyをインストールしようとしても失敗してしまい、いろいろ試してみた備忘録として残しておこうと思います
– 環境
– macOS BigSur 11.6
– rbenv 1.2.0

“`bash
$ rbenv install 2.7.4
Downloading openssl-1.1.1l.tar.gz…
-> https://dqw8nmjcqpjn7.cloudfront.net/0b7a3e5e59c34827fe0c3a74b7ec8baef302b98fa80088d7f9153aa16fa76bd1
Installing openssl-1.1.1l…
Installed openssl-1.1.1l to /Users/mikan3rd/.rbenv/versions/2.7.4

Downloading ruby-2.7.4.tar.bz2…
-> https://cache.ruby-lang.org/pub/ruby/2.7/r

元記事を表示

正規表現について①

#①.結論!

正規表現とは、文字列の一部分を抽出・置換したり、文字列が制約を満たしているかを調べるための表現方法です!

さまざまなアプリケーションに触れてきた中で、「パスワードが6文字未満だったり、メールアドレスに@が入っていなかったりするとユーザー登録ができないのは、どのように判断されているのだろう?」 と疑問に思ったことがあるかもしれません!

これらはすべて正規表現という技術を用いて実装されています!

#②.正規表現を用いるシーンをイメージ

登録フォームに電話番号を記入する欄があります!

Aさんはハイフンを付けて入力しましたが、Bさんはハイフン無しで入力をしています!

そのままデータベースに保存すると、異なるフォーマットで保存されてしまい管理が大変です!

フォーマットを統一させるために、入力された電話番号にハイフンが入っていたら必要に応じて処理をしてあげます!

“`php
webページ
電話番号 電話番号 ハイフンを取り除く処理

090-1111-2222 09011112222 090-111

元記事を表示

rails s が実行できない【エラー:LoadError(nokogiri), RuntimeError/ENOENT(webpacker)】【ターミナル再起動】

ターミナルで `rails s` を実行した際に起こったエラーたち

##環境
OS:macOS Monterey12.0.1
Rails:6.1.4.1(2021/11/07現在最新版)

:::note info
前提となる、Ruby(3.0.2), SQLite3(3.36.0), Node.js(16.13.0), Yarn(1.22.17), Homebrew(3.3.2), rbenv(1.2.0) はインストール済み(2021/11/07現在最新版)
:::

##問題1: nokogiriに関するエラー(LoadError)

“`
cannot load such file — nokogiri/nokogiri (LoadError)
 :
(省略)
 :
dlopen(/Library/Ruby/Gems/2.6.0/gems/nokogiri-1.12.5-x86_64-darwin/lib/nokogiri/2.6/nokogiri.bundle, 0x0009): tried: ‘/Library/Ruby/Gems/2.6.0/gems/nokogir

元記事を表示

【RSpec】Railsチュートリアル第6版 第12章

#はじめに
Railsチュートリアル第6版のテストをRSpecで書き直していく。

###目次
– [第3章](https://qiita.com/supyolo888/items/35081ead2cfafb40a995)
– [第4章](https://qiita.com/supyolo888/items/939b670b62eb18467f6d)
– [第5章](https://qiita.com/supyolo888/items/42234ac2ed3919b14586)
– [第6章](https://qiita.com/supyolo888/items/bd10e64c77fe391cf203)
– [第7章](https://qiita.com/supyolo888/items/d2824ced26402b5f58d1)
– [第8章](https://qiita.com/supyolo888/items/508caaa40edf307093ed)
– [第9章](https://qiita.com/supyolo888/items/62e471b07a0c9a81575

元記事を表示

action_mailboxやactive_storageをRailsのルーティングに表示しないようにする

Rails6以降でrails new直後に`rake routes`を実行すると以下のような結果が表示されます。

“`rb
~ 省略 ~
rails_postmark_inbound_emails POST /rails/action_mailbox/postmark/inbound_emails(.:format) action_mailbox/ingresses/postmark/inbound_emails#create
rails_relay_inbound_emails POST /rails/action_mailbox/relay/inbound_emails(.:format) action_mailbox/ingresses/relay/inbound_emails#create
rails_sendgrid_inbound_emails POST /rails/action_ma

元記事を表示

【Ruby on Rails】Devise + omniauth-facebook + omniauth-twitterでログイン機能作成(基本から詳細まで)

この記事は devise、omniauth-facebook、omniauth-twitterのGemを使って、メールとFacebookとTwitterでログイン機能を作ります。

まずはFacebookとTwitter側の設定から始めます。

# Facebook側の設定

アプリを作成URL:[https://developers.facebook.com/apps/create](https://developers.facebook.com/apps/create)

![スクリーンショット 0003-11-07 10.58.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35605/a6ba4d02-6d33-f626-6d24-eac36edbc97e.png)

![スクリーンショット 0003-11-07 10.59.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35605/69070694-a

元記事を表示

用意された機能を呼び出す方法!

#①.ライブラリ

ライブラリとは、汎用性の高いプログラムを再利用可能な形でまとめたものです!

Rubyではライブラリに用意されている機能を呼び出すことによって、プログラムを動かしています!

Rubyには、最初からさまざまな機能が用意されています!

プログラムを書くということは、この機能を適宜呼び出して使用することと言い換えてもよいでしょう!

文字列を記述する、数値を計算する、配列で複数の要素を管理するなど、これらはすべてRubyというプログラミング言語に用意された機能です!

そして、ライブラリには大きく分けて以下の3種類があります!

#②.標準ライブラリ

Rubyに標準で用意されているライブラリです!

インストールは不要ですが、使用する際には明示的に読み込む必要があります!

代表的なものとして、日付を扱うDateクラスがあります!

#③.組み込みライブラリ

標準ライブラリの中でも、特に利用する頻度が高いライブラリです!

文字列のStringクラスや数値のIntegerクラス、配列のArrayクラス、ハッシュのHashクラスなどが該当します!

使用する際の読み

元記事を表示

APIとは

最近学習しているAPIについて改めて復習したいと思います。

# APIとは

> アプリケーションプログラミングインターフェースの略。
サーバが提供している機能やデータを、httpで通信して利用するための機能の一つ。
データの形式は最近はJSONで返される。

## APIで出来ること

仕様例
・Google Maps API (住所を地図で表示させる)
・楽天商品検索API(キーワードから楽天市場の商品を検索することができる)
・Twitter API(コードを書けば、Twitterを開かずに特定のツイートにリツイーやリプライができる)

## RailsをAPIモードで実行するには

rails newの際に `–api` を入力する。

“`
rails new myapp –api
“`

## APIモードとのファイル差分

ざっくり言うと、ビューファイルやUI関連のgem等が省かれて生成される。

https://qiita.com/61503891/items/d4eda649a10a3494830c

次回はpostmanを使ってログイン認証したいと思いま

元記事を表示

Shopify のデータを BigQuery にエクスポートする方法(Ruby)

## 前提
– Shopify のデータは Bulk Operations で取得する物とします。詳しい方法は[公式ドキュメント](https://shopify.dev/api/usage/bulk-operations/queries)をご覧ください。
– BigQuery へのデータのエクスポートには [google-cloud-bigquery gem](https://github.com/googleapis/google-cloud-ruby/tree/main/google-cloud-bigquery) を使用します。

## 実装

“`:Gem
$ gem install google-cloud-bigquery
“`

“`ruby
require “google/cloud/bigquery”
require ‘open-uri’

# Ref: https://googleapis.dev/ruby/google-cloud-bigquery/v1.37.0/file.AUTHENTICATION.html
Google::Cloud::Bigque

元記事を表示

配列内の要素を自動集計するメソッド

## 開発環境
`ruby 2.6.5`
`Ruby on Rails 5.2.5`

[“京都府”, “東京都”, “東京都”, “東京都”, “東京都”, “東京都”, “東京都”, “東京都”, “東京都”, “東京都”, “東京都”, “東京都”, “東京都”, “広島県”, “東京都”, “東京都”, “東京都”, “東京都”, “島根県”, “東京都”, “東京都”, “茨城県”, “東京都”, “東京都”, “東京都”, “東京都”, “東京都”, “東京都”, “東京都”, “広島県”, “広島県”, “東京都”, “東京都”, “東京都”, “東京都”, “東京都”, “広島県”, “広島県”, “広島県”, ” 島根県”, “東京都”, “東京都”, “東京都”, “東京都”, “東京都”, “東京都”, “東京都”, “東京都”, “京都府”, “東京都”, “東京都”, “東京都”, “東京都”, “東京都”, “東京都”, “東京都”, “東京都”, “東京都”, “東京都”, “千葉県”, “東京都”, “東京都”, “東京都”, “東京都”, “広島

元記事を表示

geochart 日本地図が描画出来ない

## 開発環境
`ruby 2.6.5`
`Ruby on Rails 5.2.5`

## 前提
`slim` で書いている

## 本題

https://developers-dot-devsite-v2-prod.appspot.com/chart/interactive/docs/gallery

上のを参考に日本地図を描画する

ゆくゆくは変数を渡したいけど今回の目標は素の日本地図を描画すること

`js` ファイルを記事を参考にセットアップ。しかし描画されず

コンソールでは

“`
Uncaught ReferenceError: google is not defined
“`

読み込みエラー

___

読み込み位置が悪かった

“`
= javascript_include_tag ‘application’
script src=”https://www.gstatic.com/charts/loader.js”
“`

ってなってたけど正しくは

“`
script src=”https://www.gstatic.com/charts/loa

元記事を表示

Rails でつくる fullcalendar

`fullcalendar` を実装することにした

https://github.com/bokmann/fullcalendar-rails

https://qiita.com/d0ne1s/items/fecd8dca4d34e005ce6d

https://qiita.com/isaatsu0131/items/ad1d0a6130fe4fd339d0

https://qiita.com/syukan3/items/68280ce4ff45aa336363

上の記事参考にさせていただく

結果的にはこんなふう

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

神社の参拝した日付と詳細がラベルになっている
それぞれラベルの部分を選択すると詳細にいく

## 開発環境
`ruby 2.6.5`
`Ruby on Rails 5.2.5`

## 前提
日付の入

元記事を表示

[Rails]GoogleSheetsをAPIで操作してみた[Ruby]

# はじめに

こんにちわ。
RPA、作業の自動化に関して、興味を持って色々勉強しているひとです。

「なんかこれ毎回同じことしてない…?」

と感じることが最近ままありまして、自動化やってみたい!と思ったので、すぐに実践。  
とりあえずプログラムが書けるように、環境を構築しないと。

この記事は、備忘録として書いていきますが、見ていってくれる皆さんの何かお役に立てれば幸いです。

##### 参考, 引用記事:
>
[TECHBLOG by GMO RubyでGoogle スプレッドシートを操作する
](https://techblog.gmo-ap.jp/2018/12/04/ruby_google_sheets_drive/)
[Google Sheets and Ruby](https://www.youtube.com/watch?v=VqoSUSy011I&t=10s): [ by Twilio](https://www.youtube.com/channel/UCWh3G9LZmZ3q_xWOyPpn8ag)   // Youtube です
>

#

元記事を表示

Geocoder seed データの反映でコールバックが発生しない

## 開発環境
`ruby 2.6.5`
`Ruby on Rails 5.2.5`

## 前提
神社テーブルがあり、その住所カラムに `geocoder` をコールバックさせている
`seed_fu` をつかって `seed` データを作成している
説明上関係ないカラムは無視してください

## 本題

神社の `CSV` ファイルの `seed` データを反映する。

そのタイミングで住所カラムにコールバックさせて緯度と経度を登録したかった

モデルには以下のように定義

“`
class Shinto < ApplicationRecord geocoded_by :address after_validation :geocode end ``` `seed` データには以下 ``` import_read('test_shinto.csv') do |line, idx| Shinto.seed do |s| s.id = idx s.name = line[0] s.image = line[1] s.addres

元記事を表示

ransack 検索前と検索後のアクションを1つにする

## 開発環境
`ruby 2.6.5`
`Ruby on Rails 5.2.5`

## 前提
`ransack` を導入している

## 本題

`ransack` を導入するにあたって色々調べた。

どこの記事も検索前の画面と検索後の画面でアクションを分けている。
理由はないんだけど、なんとなくあんまりアクションを増やしたくなかった。

うまいこと1つにできないかなと。
そしたらなんとかできたので。

実際の画面は

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

こうやって検索したら

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

こうやって同じ

元記事を表示

CSV ファイルを読み込んだら特殊文字がエスケープされた

## 開発環境
`ruby 2.6.5`
`Ruby on Rails 5.2.5`

## 前提
スクレイピングで `seed` データをつくるための `CSV`ファイルを作成してある

## 本題

`CSV`ファイルを `seed` データとしてインポート

内容は
[![Image from Gyazo](https://i.gyazo.com/f01e29bde5d533dd50e6860e25a8e169.png)](https://gyazo.com/f01e29bde5d533dd50e6860e25a8e169)

こんなかんじ。
`View` で表示したとききちんと改行されてほしかったので
`\n` の部分をうまいこと残してスクレイピングしておいた

で、DB に反映させて。
`View` で見てみる

すると

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

元記事を表示

shrine っていう名前のテーブルは作れない

## 開発環境
`ruby 2.6.5`
`Ruby on Rails 5.2.5`

## 前提
管理者画面に `rails_admin` を使っている

## 本題

神社テーブルを作ろうと思って
`shrine` っていう名前で設計した。

実際の開発で `scaffold` で作成して
`rails_admin` の管理者画面で見ると以下のエラー

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

クラス名やテーブル名が不整合おこしてるみたいなので
どっかでタイポしたのかとおもった

なのでブランチを切って再度トライ

しかしまた同じエラー

___

おそらく

https://qiita.com/fuku_tech/items/abbce671e7d882ec2f14

https://github.com/shrinerb/shrine

`shrine` っ

元記事を表示

user モデルが作成されたときに孫モデルまでビルド

以前の続き

https://qiita.com/TatsuyaIsamu/items/a97ae2d911a4e23016d0

ふわっとやりたかったことが形になったので頑張って言語化

## 開発環境
`ruby 2.6.5`
`Ruby on Rails 5.2.5`

## やりたかったこと

`user` モデルが作成されたときに
`user` モデルに紐づく `ranking` モデルと
その子モデルの `ranking_item` モデルまで `build` する

こうすることで以下みたいになる
[![Image from Gyazo](https://i.gyazo.com/da48ab57b7a0362c9858b42c8e534d2c.png)](https://gyazo.com/da48ab57b7a0362c9858b42c8e534d2c)

テーブルをプロフィールとランキングとで分けることで
ユーザーとしては それぞれを独立した形で変更できる。

さらに神社ランキングにユニークなランキングアイテムをビルドしているので
神社ランキングっていう枠組みの中で神

元記事を表示

devise を使いながら user 作成時に関連モデルをビルドする

`user` モデルを作った
そして `user` モデルに `has_one` の `user_introduction` モデルを作った

自分的には `user` に `user_introduction` をネストさせておいて
作成時にビルドさせる形にしたい。

しかし `devise` をつかっているのでどうしようとなった

## 開発環境
`ruby 2.6.5`
`Ruby on Rails 5.2.5`

https://qiita.com/krile136/items/e04181bb9e9dc0f37a79

https://madogiwa0124.hatenablog.com/entry/2017/11/26/221657

このへん参考させていただいた。

どうするのかというと

① `user` と `user_introduction` をネスト
②自分の環境に `devise` のコントローラーをインストール
③ユーザーの新規作成時だけ自分のコントローラーを通るようにルーティング
④ `create` アクションのあとに作成したユーザーに `use

元記事を表示

ルーティング member でネストする場合としない場合

きれいなルーティングで悩んだ

`ranking` テーブルがあって、その `ranking` テーブルの動的な ID を含む
`ranking_item` コントローラーへの URL を作りたかった

`ranking_item` を `member` で囲ってやるといい感じになった。

けどそれだと致命的にだめだったので備忘録

## 開発環境

`ruby 2.6.5`
`Ruby on Rails 5.2.5`

①member でネストしない場合

“`
resources:rankings do
resources :ranking_items
end
“`
生成される URL は

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

まあいいんだけどなんかなあってかんじ
外側の `rankings` のルーティングがいらないんだけどつくられ

元記事を表示

OTHERカテゴリの最新記事