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

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

.rbenv/shims/docker-sync: line 21: /usr/local/Cellar/rbenv/1.1.2/libexec/rbenv: No such file or directory

## はじめに
brew upgradeしたらdocker-sync ~~だけ見つからなくなりました。~~
gemで入れたもの全部動かなくなった(全部は確認してないけど)
探しても対処法がぱっと見つからなかった(ちゃんと探してないだけ)のでメモがてら書きます。

## 結論(解決した方法)

以下を実行で解決した。

“`zsh
rbenv rehash
“`

> rbenv rehash コマンドを実行すると、大まかには ~/.rbenv/versions/*/bin/ 以下のファイルを ~/.rbenv/shims/ 以下にコピーする。

> なぜコピーする必要があるかというと、通常PATHが通っているのは ~/.rbenv/shims 以下となっているからで、ここにコピーしないと rspec とか rubocop といったGemが提供するコマンドを実行できないからである。

cf. https://mogulla3.tech/articles/2020-12-29-01

ということみたいです。

## やったこと

brewのupdate, upgradeがうまくいってな

元記事を表示

railsのconstraintsを使って、ルーティングを制限する

おはようございます!
朝から警察の方に職務質問を受けてしまった、プレイライフの熊崎です。

そんな怪しさ全開の雰囲気が出ていた僕ですが、引き続きアウトプットを行なっていきたいと思います。

## constraintsとは?

> :constraintsオプションを使って、動的セグメントのURLフォーマットを特定の形式に制限できます。
ref: https://railsguides.jp/routing.html#セグメントを制限する

→ ルーティングに制限を設定するオプション。constraintsの和訳が制約なので、そのまんま。

## 制限の仕方

“`routes.rb
get ‘/articles/:id’ , to: ‘articles#show’, constraints: { id: /[A-Z]\d{5}/ }
# match => /articles/A11111, not_match => /articles/111
“`

また、リクエスト内容に応じて制限を加えることができる。
ref: https://railsguides.jp/routing.

元記事を表示

[Ruby] Rubyで動くブラックジャック作ってみた

Rubyの基礎文法を勉強したときに知識を定着させるために作成したブラックジャックゲームです。
ちなみに、プログラミングを勉強して初めて作った成果物。

# 実行動画

![ezgif.com-gif-maker (5).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/974719/ac23f06f-59dd-6f31-c642-cdcd0433c8f4.gif)

# 実装部分
実装の前にマインドマップを作って各クラスの各メソッドが何をするのかを明確にしてから作りました。

– マインドマップ
![スクリーンショット 2021-10-08 9.05.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/974719/51c7874b-e0c8-d37c-4c96-3de284e4ce1c.png)

## Blackjackクラス
“`ruby:bjackjack.rb
require “./deck.rb”
requi

元記事を表示

Progate Ruby on Rails5 I〜III 個人的ざっくりまとめ

# Railsの立ち上げ

“`:ターミナル
$ rails new アプリケーション名 例) rails new tweet_app

$ rails server
“`
上記入力後、ブラウザのurlに「localhost:3000」を入力し、「Yay!You’re on Rails!」と書いてあるページが表示されていればOK

# ページ作成
○ページ作成に必要なもの
・ ビュー
・ コントローラ
・ ルーティング

# ビュー

**ビューとは、ページの見た目を作るHTMLファイルのこと。**

“`:ターミナル
$ rails generate controller コントローラ名 アクション名

例)rails generate controller home top または、 rails g controller home top でもOK
“`
「rails g controller home top」でviewsフォルダの中にhomeフォルダとtop.html.erbファイルが作成される。

“`html:app/views/home/top.ht

元記事を表示

リクエストとレスポンスについて!

#①結論!

リクエストとは、「データや情報を要求する」こと!

レスポンスとは、「リクエストに対応するデータや情報を返却する」こと!

データのやり取り自体にも名前がついています!

それをリクエストとレスポンスと言います!

#②.リクエスト

主に、クライアントサイドから送られてくるのがリクエストです!

簡単にいうと、データを見たいから要求するという事です!

#③.レスポンス

主にデータベースから、クライアントサイドに送るデータのことです!

簡単にいうと、要求されたデータを送るという事です!

#④.まとめ

MVCの流れで1番最初の初歩的な事ですね!

これ自体の意味は難しくは無いので、きちんと覚えておくべきですね!

次回から更にMVCについても詳しくアウトプットして行こうと思います!

何か説明で間違っていたらご指導お願い致します(_ _)

元記事を表示

Rails で楽天APIを使ってみる(gem無し)

楽天apiを初めて使ったので忘れないようにメモとして残しときます。

前提条件

Ruby: 2.6.5
Rails: 5.2.6

使用するgem
インストールしてください

“`
gem ‘dotenv-rails’ <- 環境変数を使えるようにする gem 'faraday' <- httpクライアントとして導入する gem 'faraday_middleware' ```

楽天APIのセットアップ

まずはここから使いたいAPIを選んでください。
僕は商品検索APIを使いました。

https://webservice.rakuten.co.jp/document/

選んだら、APIの使用に必要なIDを発行します。
アプリ名とリンクを記載する必要があるので準備しておいてください。
ログインしてない人はログインを促されますのでログインしてください。

![スクリーンショット 2021-10-08 21.09.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0

元記事を表示

[Ruby] tallyメソッド

##はじめに
Rubyで便利なメソッドを見つけたので記事にしておきます。

##tallyメソッド
リファレンスマニュアルではEnumerable#tallyとして掲載されています。
普段は配列に対して使うことが多そうです。

その辺はまだまだ勉強不足なため、配列を使って説明します。
配列に対して使用し、ハッシュで配列の中のそれぞれの要素が何個ずつあるか教えてくれます。

例えば“`[1, 2, 2, 2, 3]“`という配列があるとして、tallyを使うと“`{1=>1, 2=>3, 3=>1}“`というように返してくれます。

“`ruby
[1, 2, 2, 2, 3].tally
=> {1=>1, 2=>3, 3=>1}
“`

重複している要素を数えたりするときに使えます。
似たメソッドにgroup_byメソッドがあります.

group_byはブロックを必要とし、いろんな使い方ができるみたいです。

tallyのように出力させる方法もあれば、さっきの配列を“`{1=>[1], 2=>[2, 2, 2], 3=>[3]}“`のように出力させることができる

元記事を表示

Rails LINE messaging APIを使用してLINEbot通知してみた ブロードキャストメッセージ プッシュメッセージ

***LINE messaging API***を使用してメッセージを送信する
私は、Twitter APIで取得した内容をLINEで通知したかった!!

# 目標
友達登録している方全員に通知を送信したい

# 結論
・LINE messaging API を使用して通知を送る
・**broadcast通知**を使用する

# LINE messaging API
>Messaging APIを使って、ユーザー個人に合わせた体験をLINE上で提供するボットを作成できます。

>作成したボットは、LINEプラットフォームのチャネルに紐づけます。チャネルを作成すると生成されるLINE公式アカウントをボットモードで運用すると、LINE公式アカウントがボットとして動作します。

https://developers.line.biz/ja/docs/messaging-api/overview/

#使用してみる
メッセージの種類は様々ある
>プッシュメッセージ(1対1)
マルチキャストメッセージ(1対多:ユーザーID指定)
ナローキャストメッセージ(1対多:絞り込み配信)
ブロードキャスト

元記事を表示

OmniAuthの公式のwikiを読んでみた。

##はじめに

[OmniAuthの公式のwiki](https://github.com/heartcombo/devise/wiki/OmniAuth:-Overview#facebook-example)を読んで学習した内容を備忘録としてこちらに投稿します。

##OmniAuthって?
Deviseのバージョン1.2から追加された、[OAuth](https://qiita.com/TakahikoKawasaki/items/e37caf50776e00e733be)に関するモジュールのこと。
このモジュールを利用すれば、twitterやfacebookといったプロバイダーに登録されている情報でユーザー認証を行うことができます。

##Before you start
config.omniauthは、アプリケーションにomniauth プロバイダーのミドルウェアを追加します。これは、config/initializers/omniauth.rbにconfig.omniauthを記述するべきではないことを意味します。なぜなら、そうしてしまうとお互いのomniauth プロバイ

元記事を表示

Railsのform_withの使い方を素人ながらまとめました。

##form_withはフォームにす関するHTML要素を簡単に生成することができる便利なメソッド

まずフォームの値をデータベースに保存する際の書き方です。
↓railsでこう書くと

“`java
<%= form_with(model: @user, local: true) do |f| %>
<%= f.label :name %>
<%= f.text_field :name %>

<%= f.label :email %>
<%= f.email_field :email %>

<%= f.label :password %>
<%= f.password_field :password %>

<%= f.label :password_confirmation, "Confirmation" %>
<%= f.password_field :password_confirmation %>

<%= f.submit "Create my account",

元記事を表示

RailsのN+1問題をincludesメソッドで解決する

## アプリの概要(前提)
[![Image from Gyazo](https://i.gyazo.com/e4e30c01447d6af3ec95ce71221af4a9.gif)](https://gyazo.com/e4e30c01447d6af3ec95ce71221af4a9)

・こんな感じで、ユーザーaaaの投稿に対してコメントが6件ついていて、そのコメントと共に、コメントした人のユーザー情報(名前とプロフ画像)が載っている

・`/posts/8`にGETリクエストを送ると`views/posts/show.html.slim`が返される

・ユーザーaaaの`id`は`16`
・ユーザーoooの`id`は`17`

・Commentはbodyカラムを、Userはnameカラムとimageカラムを持つ

## N+1問題とは
N+1問題とは、データベースからデータを取り出す際に、必要以上にSQLが発行されることで、パフォーマンスが悪くなる(処理速度が遅くなる)問題のこと
## 具体例

先程のアプリのpostsコントローラー

“`ruby:posts_co

元記事を表示

バリデーションとは!

#①結論!

バリデーションとは、データの入力に制約をかけるという事です!

データを登録する際に、一定の制約をかけることを言います!

例えば、以下のようなものがあります!

・空のデータが登録できないようにする!(ブログ記事など)

・既に登録されている文字列を登録できないようにする!(メールアドレスの登録など)

・文字数制限をかける!(パスワードなど)

バリデーションを設ける際は、モデルにvalidatesメソッドを記述します!

#②.validatesメソッド

validatesとは、バリデーションを設定する時に使用するメソッドです!

以下が記述方法になります!

“`php
モデルファイルへ記述

validates :カラム名, バリデーションの種類
“`

これが書き方です!

続いて下記の例は、presence: trueと記述することで、nameカラムが「空ではないか」というバリデーションを設けています!

“`php
モデルファイルへ記述

validates :name, presence: true
“`

これで完成です!

このバリデーショ

元記事を表示

初めてのオリジナルアプリ公開までの道のり

# 公開までの道のり

月 | やってたこと
— | ———————-
5月 | tech camp(教養コース入学)
7月 | tech camp(転職コース入学、夜間休日タイプ)
8月 | カリキュラム終了
9月 | オリアプ作成開始
10月 | オリアプ完成

卒業予定は1月、笑

# 公開したアプリの概

## アプリ名
**FX-Traders**
https://fxtraders.jp

## どんなアプリ?
fx取引の記録を公開できるアプリになります。そしてその記録をもとにグラフを作り結果を解析できるアプリです。
それを公開することで

* 自身が決めた取引ルールの厳守
* 取引ルールのブラッシュアップ
* 第三者からのフィードバック
* 他者取引への理解

などを狙っています。

## なんで作ったの?
まずは自分で欲しかったから。一番大きな理由でもありますね。学生の頃にfxの記録を紙のノートに書いていて、画像を残せないのが残念で書くだけで満足していて、笑笑
こんなことを思っている人がたくさんいるんじゃないか?って思ったのも作った理由の

元記事を表示

`rails s` 実行時にRubyGemsのエラーが発生する

## 環境情報

– macOS Big Sur 11.6
– Ruby 2.6.1
– Rails 5.2.6

## 起きたこと

OSのアップデートやrbenvの再インストールを行った後、
`rails s` や `rails c` を実行した時に下記エラーが発生するようになってしまった  
(起きていた現象として、エラーが発生するだけで起動は行われる)

“`
/path/to/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/bundler-2.2.28/lib/bundler/rubygems_integration.rb:12: warning: already initialized constant Bundler::RubygemsIntegration::EXT_LOCK
/path/to/.rbenv/versions/2.6.1/lib/ruby/2.6.0/bundler/rubygems_integration.rb:12: warning: previous definition of EXT_LOCK wa

元記事を表示

Ruby 正規表現を使用して文字列からほしい文字を取得する!! 【gsubメソッド】【sliceメソッド】【scanメソッド】【最短マッチ】

[前回の記事](https://qiita.com/mm_st/items/3c613bdce6f18594355c)で取得したツイートから必要な内容を取得したい!!!と思い正規表現についてググったものをまとめていきます:)

# 正規表現
>正規表現(regular expression)は文字列のパターンを記述するための言語です。また、この言語で記述されたパターンも正規表現と呼びます。
正規表現を用いると、文字列が指定したパターンを含んでいるかどうかを判定し、また含んでいるならばそれが文字列中のどの場所であるかを知ることができます。

[Ruby 3.0.0 リファレンスマニュアル > 正規表現](https://docs.ruby-lang.org/ja/latest/doc/spec=2fregexp.html)

# 今回取得したツイート
このツイートから***値段*** ***ブランド*** ***アイテム名*** を取得したい!
> 【GUCCI】
インターロッキングGシルバー
¥40,700- tax in

>【Lansing store】
アロマキャンドル(4個)

元記事を表示

【Rails】便利な正規表現まとめ

オリジナルアプリ作成にあたり使用した正規表現を、備忘録としてアウトプットします。

#英数字混合
※大文字・小文字の区別なし

“`
/\A(?=.*?[a-z])(?=.*?\d)[a-z\d]+\z/i
“`

#半角数字のみ

“`
/\A[0-9]+\z/
“`

# 全角(漢字・ひらがな・カタカナ)

“`
/\A[ぁ-んァ-ヶ一-龥々ー]+\z/
“`
・`ァ-ン`ではなく`ァ-ヶ`としているのは`ヴ、ヵ、ヶ`を含めるため。
・`一-龥`ではなく`一-龥々`としているのは`々`を含めるため。
・末尾に`ー`があるのは「ジュリー」「メアリー」などのハイフンを含めるため。

# 全角(カタカナのみ)

“`
/\A[ァ-ヶー]+\z/
“`

#電話番号10桁以上11桁以下(ハイフンなし)

“`
/\A[0-9]{10,11}+\z/
“`

#郵便番号(ハイフンあり)

“`
/\A\d{3}[-]\d{4}\z/
“`

#今回登場した正規表現のパターン表記一覧

`[a-z]`: 角括弧で囲まれた文字のいずれか 1個にマッチ
`\d`:数字にマッ

元記事を表示

[Rails]非同期(Ajax)でのコメント機能実装

## この記事の目的
非同期処理(ajax)でのコメント投稿機能を学んだのでアウトプットします
## 目標
[![Image from Gyazo](https://i.gyazo.com/13b13c9847585f462000a341b671e8b8.gif)](https://gyazo.com/13b13c9847585f462000a341b671e8b8)
## 要件
コメント投稿は非同期で行う
## 環境
・Ruby 2.7.1

・Rails 5.2.6
## 前提
・UserとPostは作成済み

・bootstrapとjquery-railsが入っている

## 設計
ER図
[![Image from Gyazo](https://i.gyazo.com/919c4a7bc8f4e5e4c7ff50fb2efcdab1.png)](https://gyazo.com/919c4a7bc8f4e5e4c7ff50fb2efcdab1)

ルーティング

“`
POST /posts/:post_id/comments comments#creat

元記事を表示

Gzip圧縮したデータを連結したデータはRubyのZlib::GzipReaderでは読めない

### 複数のGzipデータを連結した1つのデータ

gzipコマンドは複数のgzip圧縮されたファイルをcatで結合したものでも展開することができます。簡単な例をbashで見てみましょう

“` bash
date –iso-8601=ns | gzip > a.gz
date –iso-8601=ns | gzip > b.gz
cat a.gz b.gz > all.gz
gzip -dc all.gz # 2行出てくる
“`

RFC1952でファイルフォーマットについて説明があります。

https://datatracker.ietf.org/doc/html/rfc1952

Gzipファイルフォーマットは先頭10byteは必ずメンバ情報になっており、あとはメンバ情報のFLGによって可変長データが続くような形になっています。

この繰り返しなので、複数の圧縮されたデータがあっても、ひたすら展開して連結することで1つのデータが得られる仕組みになっているようです。上記の通り、gzipコマンドやzcatコマンドや著名なアーカイバ(7-zipとか)はサポートしています。

元記事を表示

WEBrickを使って動的なhtmlを返す(〜 GETとPOSTの違い 〜)

前回の記事([Webrickを使って静的なhtmlを返す](https://qiita.com/sonoyuki13/items/3dcfac99b05eca29cc19))の続き

### 前回作ったページ
##### 投稿フォーム

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

##### 対応するhtml(一部)
“`html

GETで送る



元記事を表示

WEBrickを使って静的なhtmlを返す

WEBrickを使ってHTMLを返すというのを学習したので、アウトプットしようと思います。

####`http://localhost:8000/fom.html`にアクセスして以下の画面が表示されるようにする

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

##### (1)まずWEBrickというライブラリを使ってWebサーバーを構築する
webrick.rbファイルを作成し以下のコードを記述

“`ruby:webrick.rb
require ‘webrick’

server = WEBrick::HTTPServer.new({
:DocumentRoot => ‘./’,
:BindAddress => ‘127.0.0.1’,
:Port => 8000
})
“`
##### 解説
・ __require ‘ラ

元記事を表示

OTHERカテゴリの最新記事