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

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

Webアプリケーションに正規表現を応用

#①.Ruby on Railsにおけるバリデーションへの応用

どのような正規表現で、バリデーションが設定されているのか理解しておきましょう!

よく使われる以下の3つを紹介します!

・郵便番号

・全角かな/カナ漢字の区別

・passwordの英数混合の判断

#②.郵便番号について考える!

郵便番号は、3桁の数字とハイフンと4桁の数字で構成されています!

ユーザーが正しくハイフンが記入された正しい形式で郵便番号を入力しているか判別する方法を学びます!

この郵便番号を正規表現らしく言い換えると、先頭に少なくとも3回の数字、そしてハイフン、末尾に少なくとも4回の数字 となります!

“`php:例
irb(main):001:0> postal_code = “150-0044”

irb(main):002:0> postal_code.match(/\A\d{3}[-]\d{4}\z/)
=> #
“`

新しい表現方法が出てきたので、以下の2つについて解説します!

\A

\z

#\A

\Aの直後に置いた文字を、文

元記事を表示

Ruby を使って気軽に LTSV 形式のログをパースしたい

“`bash
$ cat access.log
time:2015-09-06T05:58:05+09:00 method:POST uri:/foo/bar?token=xxx&uuid=1234 status:200 size:12 apptime:0.057
time:2015-09-06T06:00:43+09:00 method:GET uri:/foo/bar status:400 size:15 apptime:-
time:2015-09-06T06:00:43+09:00 method:GET uri:/foo/bar/5xx status:504 size:15 apptime:60.000

# Ruby 2.6 より前でも動くように Hash#to_h にブロックを渡さない書き方をする。
$ cat access.log | ruby -e ‘ARGF.read.each_line { |line| hash = line.split(“\s”).map { |i

元記事を表示

Ruby:クラスの概念を整理してみた

#そもそもクラスとは
###ー設計図ー
正直ピンと来そうで来ないです・・・・   もう少し細分化していきます。

まず設計図に必要な情報は・・・・
・どのような情報を持っているのか(初期設定)・・・・・インスタンス変数
・どんなことができるのか(メソッド)・・・・・・インスタンスメソッド

#####インスタンスとは??
・インスタンスが付く時は必ずクラス内で定義されている
・newアクションで生成された実体である(設計図だけでは実体はない)

#まず日本語で記述してみる(今回はカップを設計してみます)
“`
class  カップ    
     有無や容量を全てのメソッドで使えるようにする
def 初期設定 (有無,容量)
    - 取っ手があるかないか
    - カップの容量
  end

def カップのできること (投入量,消費量)
     - 飲み物を保管する
     - 飲み物を取り出す
      →条件分岐  投入量が多すぎる時
              →条件分岐  消費量が多すぎる時
  end
end

カップ1 = カップ.new(取って

元記事を表示

【RSpec】リクエストテストupdateで値が更新されないとき

##環境
Ruby 3.0.2
Rails 6.1.4.1

employee.update(post_params)でDBの値を更新するとテストが通る。

“`spec.rb
context ‘記事を編集する際、正しい値の場合’ do
let!(:post) { create(:post) }
let!(:post_params) { attributes_for(:post, title: ‘other’) }
it ‘記事を編集できること’ do
subject
employee.update(post_params)
expect(response).to have_http_status(302)
expect { subject }.not_to change(Post, :count)
expect(post.title).to eq ‘other’
end
end
“`

元記事を表示

[Ruby] paizaで頻出するメソッドまとめ

#はじめに

paizaラーニング(Cランク)をやっていく上で必要不可欠なメソッドをまとめてみました。
ぜひ参考にしてください。

# 入力メソッド

“`ruby
/文字列(string型) 改行あり /
input = gets

/文字列(string型) 改行なし/
input = gets.chomp

/数値(integer型) 改行あり/
input = gets.to_i

/数値(integer型) 改行なし/
input = gets.chomp.to_i
“`

# 配列メソッド

###※string型

“`ruby

/入力値を配列に格納 /
input = gets.split(” “)

/入力値を分割して配列に格納/ 
a,b,c = gets.split(” “)

/入力値を順番に格納/
a = readlines.map

“`

###※integer型

“`ruby
/入力値を配列に格納 /
input = gets.split.map(&:to_i)

/分割して配列に格納/
a,b,c = gets.split(” “)

元記事を表示

【個人開発】独学 + 職業訓練校でプログラミングを学び、ブックマークサービスを作りました。

# 1. はじめに
シンプルを追求したブックマークサービス「5Keeps」(ファイブキープス)を作りました。

|![5Keeps_ogp_jp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1048052/ecccda94-9098-ca42-c67e-6eb9e5aa5a1f.png)|
|:–|

2020年11月に未経験からプログラミングの学習を開始して、あっという間に1年が過ぎ去り、ようやく自作アプリのリリースにこぎつけました。この記事では、前半に開発したサービスについて解説し、後半に1年間の学習の過程をまとめています。

– 5Keepsへのリンク
https://www.5keeps.com/

– ソースコード
https://github.com/daichihayasaka/five_keeps_ver01

# 2. サービスについて
### 2-1. サービス概要
#### 解決したい課題
プログラミング学習の環境は、時間や場所によって様々です。私の場合、家やカフェではMacb

元記事を表示

test

aaaa

“`ruby:qiita.rb
puts ‘The best way to log and share programmers knowledge.’
“`

“`diff.rb
+ s = “こんにちは”
+ puts s
+
– puts “こんにちは”

“`

ああああ

元記事を表示

rubyで文章のサイズ変更

今回実装したアルゴリズムの備忘録として!!

##お題
ウィンドウのサイズを変更すると文章表示部分の大きさも同様に変更され、文章表示部分の幅に合わせて自然に改行されるという機能を現在の文章表示部分の高さと幅、及び変更後の幅を元に、新しく表示される文章を表示するプログラムを作成してください。

入力例の場合、以下の図のように高さが 6 行、幅が 8 文字の文章が与えられています。
##入力/出力例
“`
//入力例
6 8 6
My#name#
is#AVIOT
.#I#love
#program
ming#ver
y#much.#
“`
“`
//出力例
My#nam
e#is#A
VIOT.#
I#love
#progr
amming
#very#
much.#
“`

#実際に記述したコード
“`ruby
info = gets.chomp.split.map(&:to_i)
str = info[0].times.map{gets.chomp.split.map(&:to_s)}
array = str.flatten.join
ans = array.chars.ea

元記事を表示

【FormObject】使ってみた

##環境
Ruby 3.0.2
Rails 6.1.4.1

##状況

userとemployeeテーブルの作成と更新を一つの画面で行いたいとき、
accepts_nested_attributes_forは非推奨なのでFormObjectを使ってリファクタリングしてみた。

“`app/models/employee.rb
class Employee < ApplicationRecord ... accepts_nested_attributes_for :user ... end ``` ##メリット コントローラーがすっきりする ##EmployeeForm ```app/forms/employee_form.rb class EmployeeForm include ActiveModel::Model include ActiveModel::Attributes attribute :firstname, :string attribute :lastname, :string attribute :number, :integ

元記事を表示

【エラー】Invalid char `\x08′ in expression

##環境
Ruby 3.0.2
Rails 6.1.4.1

##状況

見たことないエラー

“`
Invalid char `\x08′ in expression
“`

##原因
キーボードの全角半角切り替えの際に全角のスペースが入ってしまってた。
Vscodeに「zenkaku」を入れて、もし全角スペースが入ったら可視化するようにしていたのに
このエラーが出たときは全角スペースが見えなかった!

##解決法
見えない全角スペースを削除

https://tattaka-s.hatenablog.com/entry/2019/07/06/153703

元記事を表示

部分テンプレートのlocalオプションで変数指定

##環境
Ruby 3.0.2
Rails 6.1.4.1

##
form_with以下を部分テンプレートにしたいため、
localオプションで変数fを指定する。
ここではlocalオプションで変数“`form“`と“`f“`の2つ指定してることになる。

“`new.html.slim
= form_with model: @user_form, url: manage_user_path, local: true do |f|
= render ‘form’, form: @user_form, f: f
“`

“`edit.html.slim
= form_with model: @user_form, url: manage_users_path, local: true do |f|
= render ‘form’, form: @user_form, f: f
“`

“`_form.html.slim
= f.label :number, ‘No.’
= f.number_field :number

= f.label :name,

元記事を表示

Railsで新規作成/編集の確認画面を作る

## はじめに
確認画面の情報は既にいくつも公開されていますが、編集の際の確認画面に関しては、あまり見当たらなかったため記事にしました。

### 開発環境
– Rails 6.0.3.1
– Ruby 2.6.8

### やりたいこと
既に新規登録/編集機能があるアプリにて、それぞれ投稿の前に確認画面を挟みたい。
今回は、`title`と`content`というカラムを持つ`Blog`モデルに関して実装していく。

## 新規投稿の確認画面
### Controllerの実装

新規投稿の際のcontrollerは以下のようになります。

“`blog_controller.rb
def new
@blog = Blog.new
end

def confirm
@blog = Blog.new(blog_params)
render :new if @blog.invalid?
end

def create
@blog = Blog.new(blog_params)

if params[:back] || !@blog.save
rend

元記事を表示

【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

元記事を表示

OTHERカテゴリの最新記事