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

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

【Rails】Basic認証を本番環境にだけ通す

Basic認証を導入して、結合テストコードを書く・・・・・
ん?始まるときに認証画面が出てきてしまう:confused:

本番環境だけに認証が通るようにできないものか探ってトライしてみたら成功したので、
備忘録として残します:black_nib:

:::note info
macOS Monterey
Ruby 2.6.5
:::

**本番環境以外ではBASIC認証しないように設定**

“`ruby:app/controllers/application_controller.rb
class ApplicationController < ActionController::Base before_action :basic_auth if Rails.env.production? #本番環境以外ではBASIC認証しないよう分岐 private def basic_auth authenticate_or_request_with_http_basic do |username, password| username == 'admin

元記事を表示

正規表現について②

#①.正規表現のさまざまなパターン!

前回はsubメソッド、matchメソッドの基本的な使い方を学習しました!

ここからは正規表現のさまざまなパターンを使い、より応用的な使用方法を見ていきます!

今回紹介するパターンは以下の3つです!

・電話番号のハイフンを取り除く

・パスワードに英数字8文字以上という制約を設定する

・メールアドレスからドメインの部分のみ抽出する

#②.電話番号のハイフンを取り除く!

特定の文字を取り除く場合は、「特定の文字を空文字に置換する」と考えます!

置換するメソッドはsubメソッドでした!

しかしながら、subメソッドでは最初のハイフンしか置換されません!

そこでgsubメソッドを用いることにします!

#gsubメソッド

gが意味するのはグローバルマッチという言葉です!

文字列内に指定した文字が複数含まれている場合、その全てを置換するという意味になります!

gsubではなくsubを使用した場合、最初にマッチした1つだけが置換されます!

“`php:ターミナル
irb(main):001:0> tel = ‘090-1234-5

元記事を表示

dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.68.dylibの解決方法

# 環境
macOS Big Sur ver11.6
Rails 6.0.4.1

# エラー内容

学習のために、railsで新規アプリを作成しようと際に、

“`
$ rails new (アプリ名)
“`
を実行したところ、以下のエラーが発生しました。

“`
(省略)
The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x86-mswin32, x64-mingw32, java. To add those platforms to the bundle, run `bundle lock –add-platform x86-mingw32 x86-mswin32 x64-mingw32 java`.
run bundle exec spring binst

元記事を表示

【Ruby+Sinatra】ゴミの収集日と天気予報がLINEで確認できるポートフォリオを制作しました

###1.はじめに

閲覧していただき、ありがとうございます。
フロントエンドは主にBootstrap、バックエンドはRuby(フレームワーク:Sinatra)で作成しました。
この記事では、アプリ開発にあたって苦労した点や、
各機能実装の際に参考にした記事や教材についてもご紹介していければと思います。

###2.アプリの概要

サービスの概要は、LINEをプラットフォームにしたゴミの収集日と天気予報を確認できるアプリです。
**ゴミ**と**天気**を掛け合わせ、**『gomiten(ゴミテン)』**と名付けました。

※デプロイ先のURLでは、アプリの使い方や特徴を紹介しています。

想定しているユーザーとしては、ゴミの収集日がなかなか覚えられない人や朝に天気予報を確認する人を想定しています。

###3.制作背景

元記事を表示

Rubyで文字列に絵文字が含まれるかどうかを判定する方法(ruby-jp slackで2021/11/08に行った質問回答まとめ)

[ruby-jp slack](https://ruby-jp.github.io/)で質問したところ、識者の皆さんから回答をいただけたので、まとめます。回答いただいた皆さん、ありがとうございました。

## 端的な回答1

[unicode-emoji](https://github.com/janlelis/unicode-emoji) gemを使う。(筆者未検証)

## 端的な回答2

Unicode プロパティによる文字クラス指定を利用するのが便利、しかし文字コード沼は深い。筆者の今回の用途では以下の判定([Githubにも上げました](https://github.com/skuroki/ruby_emoji_check))でほぼ大丈夫そう。

“`main.rb
PATTERN = /[(\p{Emoji}\p{Emoji_Component})&&[:^ascii:]]/

STRINGS_WITH_EMOJI = [
‘?’,
‘0️⃣’,
“?‍?‍?‍?”, “☃️”, “?”,”?”, “?”, “▶️”, “??”, “??”, “???????

元記事を表示

Vagrant環境でRailsアプリケーションのDBを削除しようとすると、Errno::ETXTBSY: Text file busy @ apply2filesのエラーが発生した。

表題の通り、Vagrant環境で作成したRailsアプリケーションでデータベースを削除しようとした際にエラーが発生しました。
ググってみると海外の記事だったり、曖昧な表現の記事が多かったため、自分なりに手順をまとめました。

**実行環境**
– Windows10 20H2
– Vagrant 2.2.18
– Ubuntu 20.04.3 LTS

### データベースの削除
以下のコマンドを使うと、データベースを削除することが出来るので実行します。
“`
rails db:drop
“`
![rails_drop.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2259269/515f155e-9c6c-f46a-e685-3e2f84d7aad3.png)
Couldn’t drop database ‘db/development.sqllite3’
**出たわねっ!**
正直何かしら出る気しかしませんでした。エラー読み解いていきます。

元記事を表示

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

元記事を表示

OTHERカテゴリの最新記事