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

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

【個人開発】家庭の問題に特化した情報共有アプリ「katekate」を作りました

# はじめに

こんにちは、@seshiruff4214と申します。
日々色々なニュースがある中で家庭環境や家庭の問題から大きな事件に発展してしまうようなことが連日のように報道され、核家族世帯も増加している中で悩みなどを人に相談できていないのではないか?と考えました。
自分の家庭でも子育てを行う中で、体調が悪かったり、落ち着きがなかったり、幼稚園で困っていると先生に言われたり…日々色々な子育ての悩みがあり、他の人たちはどうしているのだろう?と考えることも多く、悩みを解決できた人、今悩んでいる人がつながって互いに問題解決をすることができないだろうかと考えこのアプリを作成しました。

katekate〜家庭の過程〜
http://www.katekate.blog
katekateは親や子供が抱える問題や知識を他者と共有しユーザー同士で繋がることができるアプリです。 あなたの悩みは誰かの悩みでもあり、あなたの経験が誰かの希望になります。
![スクリーンショット 2022-09-02 10.41.10.png](https://qiita-image-store.s3.ap-northea

元記事を表示

rubyの「gem graphql-client」を使用しているときにfragmentの定義でハマった

## 内容

github: https://github.com/github/graphql-client

以下のように定義したら、

“`ruby
HumanFragment = SWAPI::Client.parse <<-'GRAPHQL' fragment on Human { name homePlanet } GRAPHQL ``` こんな感じで使えるgithubには書いてあるのに使えない。 ```ruby HeroNameQuery = SWAPI::Client.parse <<-'GRAPHQL' { luke: human(id: "1000") { ...HumanFragment } leia: human(id: "1003") { ...HumanFragment } } GRAPHQL ``` そんな時の対処法。 ```shell ... uninitialized constant HumanFragment (GraphQL::Client::Va

元記事を表示

ミニツク演習3から学んだこと

## 演習内容
ミニツクの「Ruby演習コース」演習3
URL: http://www.minituku.net/courses/500228005/contents/820836204.html

## 解答と実行例
上記サイトより引用。モジュールの解答と問題文で提示されたclassなどは同じファイルにまとめる想定です。
“`
##### 本問題では以下モジュールの中身を考える。 #####
module Mail
attr_reader :sender, :recipient, :text, :date ### 要点1 ###

def send
puts “#{@date = Time.now}: Sending a #{self.class} to #{self.recipient}.” ### 要点2、4 ###
end

def write(text)
@text = text
end

def to_s ### 要点3 ###
“#{self.class} of #{@date}:\n\nDear #{@

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlのファイル入出力の比較

Qiita > プログラミング言語の比較

Python,Ruby,PHP,Java,JavaScript,Perlのファイル入出力の比較

# Python

https://qiita.com/onishi_820/items/f3068d5533a1f4f5ae39

# Ruby

https://qiita.com/Morio/items/8f0dc0801cfcb98d8269

# PHP

https://qiita.com/Morio/items/1deca77b370851ed914f

# Java

https://qiita.com/DeraTosev/items/77cd689da4426b892793

# JavaScript

https://qiita.com/shirokuman/items/509b159bf4b8dd1c41ef

# Perl

https://perlzemi.com/blog/20

元記事を表示

Ruby入門

# Ruby超基礎文法
自分用

## Hello World
“`ruby
puts “Hello World”
puts “Hello” + “World”
“`
– puts
出力命令

– 文字列
文字列にはシングルクォーテーションかダブルクォーテーションをつける
数値には不要
`+` で文字列の連結もできる

## 変数
“`ruby
number = 1
number += 1 # number = 2 になる
user_name = “イチロー”
“`
– 変数
スネークケース
数字スタート・ローマ字不可

– 変数更新
後に代入すれば上書きできる
`+=` などは利用可能
`++` `–`  は利用不可らしい

“`ruby
hello = “こんにちわ”
name = “イチロー”
puts hello + name # こんにちわイチロー
name += “さん” # イチローさん
puts “こんにちわ#{name}” # こんにちわイチローさん
“`
– 文字列の結合
`+` を用いることで文字列を連結可能

– 変数展開
文字列内に

元記事を表示

確認ダイアログに変数をぶち込む方法 rails + javascript

## やりたいこと

プロ野球の試合を予想するアプリを作っています。
以下の画像のように確認ダイアログに変数を表示したい。(下記画像のチーム名とスコアは変数である)
![https://i.gyazo.com/9fd0b8470b61681e0780fd3d441d61d8.png](https://i.gyazo.com/9fd0b8470b61681e0780fd3d441d61d8.png)
## やり方
Railsで確認ダイアログで変数を表示することはほぼ不可能らしい。よってJavaScriptに頼る。
しかしフォームを送信し保存する処理はRailsで書いた。
なのでフォーム送信はRailsで実装。確認ダイアログの表示はJavaScriptで実装していく。
## 手順

1. railsで確認ダイアログの表示設定を消す
2. JavaScriptで確認ダイアログを表示する
3. 送信ボタンにイベントを設定する
4. 確認ダイアログに変数を格納する
5. confirmメソッドの性質を理解する
6. 処理を分岐させる

## 1, railsで確認ダイアログの表示設定を消す
確認

元記事を表示

/Users/*****/.rbenv/shims/rails: line 21: /usr/local/Cellar/rbenv/1.1.2/libexec/rbenv: No such file or directoryの解決方法

## 何をしたらこのエラーが出たか
以下のコマンドを押したときにエラーが出た。
“`
brew install imagemagick
“`

## 解決までに試したこと
まず、cd start-appで移動してから、始まります。

“`
[******@******: (画像投稿機能の実装)start-app]$rails s
/Users/******/.rbenv/shims/rails: line 21: /usr/local/Cellar/rbenv/1.1.2/libexec/rbenv: No such file or directory
“`
“`
[******@******: (画像投稿機能の実装)start-app]$rbenv rehash
rbenv: cannot rehash: /Users/yuma_mukai/.rbenv/shims/.rbenv-shim exists
“`
rehashができない。
ここで、rbenvに問題があることがわかる。

“`
[******@******: (画像投稿機能の実装)start-app]$rbe

元記事を表示

direnv: error can’t find bash: exec: “bash”: executable file not found in $PATHエラーの解決方法

## どういう状況だったか
あらゆるコマンド(ls,ruby -v,rails s等)を押しても、command not foundになってしまっていた。

## 原因
vim ~/.bash_profileで、PATHの環境変数をいじって、source ~/.bash_profileで反映させた時、誤字が含まれてしまった。実際に、echo $PATHで確認してみると、以下のように表示された。
https://gyazo.com/fa12919337960c038255c183cb6c765b

## 解決方法
bash_profileの中身がおかしくなっていた時に、上記のエラーが出た。そして、vim ~/.bash_profileコマンドでは弾かれたので、ホームディレクトリで/usr/bin/vi .bash_profileコマンドを押すことによって、bash_profileの中身は確認できる。

以下は同じ意味
“`
/usr/bin/vim .bash_profile
vim ~/.bash_profile
“`

bash_profileに誤字かスペースが入っていたため、

元記事を表示

GoogleDriveが表示されない。

# はじめに
本記事はプログラミング初心者が、railsの学習を進めながら、躓いた部分、解決した箇所、またそれらの解決方法を備忘録も兼ねてまとめているものです。
最初はprogate。そのあと、「現場で使える RubyonRails5 速習実践ガイド」(通称)「現場Rails」を参考に進めていきました。
そのため、記事の内容には誤りがある可能性があることをご理解ください。
誤りがあればお手数ですが、ご指摘いただければと思います。よろしくお願いします。

# 環境
Ruby 3.1.2
Rails 7.0.3.1

“`new.slim
.d-flex.flex-column.bd-highlight.mb-3
iframe src=”https://drive.google.com/file/d/1VuZoeLxVGNaEAs41OFyc5tCWpTU8Wbq4/view?usp=sharing” width=”100%” height=”100%”
.d-flex.justify-content-center
= f.check_box :agree

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlの関数定義の比較 (メソッド定義・サブルーチン定義なども)

Qiita > プログラミング言語の比較

Python,Ruby,PHP,Java,JavaScript,Perlの関数定義の比較 (メソッド定義・サブルーチン定義なども)

# Python

https://qiita.com/simonritchie/items/0f7b3768031dda834907

# Ruby

https://qiita.com/shizen-shin/items/dd41d1f0176a5e764f9f

# PHP

https://qiita.com/miriwo/items/a33688165a5f36ea8e76

# Java

https://qiita.com/takahirocook/items/5bfe43576d87a2a4006c

# JavaScript

https://qiita.com/tomcky/items/988fc5f56d019e9dc097

# Perl

ht

元記事を表示

Rubyで標準入力から値を受け取る方法 2022年版

# はじめに
この記事は、プログラミング問題などでよく見られる、標準入力から値を受け取る方法をまとめたものです。
# 前提
使用する言語はRubyです。
# 一行に1要素のとき(文字列)
### 標準入力
“`
Ruby
“`
### 標準入力を受け取るコード
“`
string = gets
“`
### 出力するコード
“`
p string
“`
### 出力結果
“`
“Ruby”
“`
# 一行に半角スペース刻みで要素があるとき(文字列)

### 標準入力
“`
Ruby PHP Python
“`
### 標準入力を受け取るコード
“`
strings = gets.split
“`
### 出力するコード
“`
p strings
“`
### 出力結果
“`
[“Ruby”, “PHP”, “Python”]
“`
splitを使用することで、3つの要素をそれぞれ別のものとして配列に格納しています。

※splitの使い方
split(‘ ‘)としている記事などもありますが、
半角スペース刻みの入力値の場合は引数(‘ ‘)

元記事を表示

python 使いの ruby メモ

# 概要
python と ruby はメソッドなどは大体同じなんですがちょいちょい違うところがあるので個人的な備忘録として作成しました。随時加筆します。

# ruby メモ
## 文法・作法
– `:` はいらない
– python だと定義文やコンテキストブロックを作るときに必要だが ruby は不要
– `if` `elsif` `else` `end`
– python だと `if` ブロックを閉じるときはインデントを抜けるだけだが ruby は終了範囲を明示的に `end` で指定する必要あり
– `return` は書かない
– 書いてもエラーは起きないが慣習的に書かない
– 関数 / メソッドの最後に評価された値が勝手に戻り値になるので明示的に書かなくてよい
– `unless`
– python で書くなら `if not`
– `case` `when`
– `case state` `when value` で条件分岐を書ける。複数条件あるときに便利
– python だと `match` `case

元記事を表示

【Rails】ActionMailerで作成したメールを簡単にプレビューで見る方法

## 環境
Rails 6.0.1
Ruby 2.6.3
PostgreSQL 11.16

## プレビューで見る方法

“`ruby
class UserRegisterMailer < ApplicationMailer default from: 'info@example.com' def registered_email(user) @name = user.name @email = user.email mail to: @email, subject: 'ご登録ありがとうございます' end end ``` ```UserRegisterMailer```なら```UserRegisterMailerPreview```という名前で```Preview```を作成。 ```Preview```では```registered_email```メソッドに引数を渡せないので注意。 ```ruby class UserRegisterMailerPreview < ActionMailer::Preview def regist

元記事を表示

【Rails】マイグレーション時に既存データも一緒に更新する方法

## 環境
Rails 6.0.1
Ruby 2.6.3
PostgreSQL 11.16

## 前提

“`Category“`モデルに“`code“`というカラムがあったが“`name“`を追加したい
その際、下記の既存データの“`code“`の値を“`name“`カラムに更新したい

“`ruby
Category.seed(:id,
{ id: 1, code: Category.code.ruby.value },
{ id: 2, code: Category.code.rails.value },
{ id: 3, code: Category.code.php.value },
{ id: 4, code: Category.code.laravel.value },
{ id: 5, code: Category.code.js.value },
{ id: 6, code: Category.code.java.value },
{ id: 7, code: Category.code.kotlin.value }

元記事を表示

【入門】RubyのDateクラスについて

# はじめに
今回は、Rubyの標準ライブラリである `Dateクラス`についてまとめます。

※おことわり※
基本的に学習内容のアウトプットです。
初学者であるため、間違い等あればご指摘いただけますと嬉しいです。

# この記事の目的
– Rubyのライブラリと、Dateクラスのアウトプット

# この記事の内容
1. ライブラリについて
2. Dateクラスについて

# 1. ライブラリについて

ライブラリとは、汎用性が高いプログラムコードを集めたファイル郡のことです。 ※フレームワークは別物
標準ライブラリと、外部ライブラリの2種類があります。(参照:画像)

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

– ライブラリ一覧
https://docs.ruby-lang.org/ja/latest/library/index.html

– 組み込みライブラ

元記事を表示

【入門】必ず覚えておきたいRubyの基礎

## はじめに

今回は、Rubyの基礎についてまとめます。

※おことわり※
基本的に学習内容のアウトプットです。
初学者であるため、間違い等あればご指摘いただけますと嬉しいです。

## この記事の目的
– Ruby基礎内容のアウトプット

## この記事の内容
1. ハッシュの基礎
2. 二重ハッシュ
3. クラスとインスタンス

## 1. ハッシュの基礎

ハッシュとは、複数のオブジェクトをキーとバリューのセットで、まとめて管理することがきるオブジェクトです。
**ハッシュは、`キー` で要素を管理している**ことがポイントです。
キーとバリューのセットを、 `キーバリューストア` と言います。

– ハッシュの書き方
“`ruby
#書き方① シンボル
hash = { キー: 値}

#書き方② ロケットハッシュ
hash = {:キー=> 値}
“`

– キーの取得方法(keysメソッド)
“`ruby
#オブジェクト.keys
hash.keys
“`

– バリューの取得方法(valuesメソッド)
“`ruby
#オブジェクト.values
has

元記事を表示

【Rails】生SQLを書きそうになったらsanitize_sql_for_orderを検討しよう

## 環境
Rails 6.0.1
Ruby 2.6.3
PostgreSQL 11.16

##
UserモデルにPost作成日でnilが最後に来るようにソートするスコープがあったとき、
“`created_at_sort“`に入ってきた値が“`desc“`か“`asc“`で降順か昇順にソートしている。
“`order“`の中で生のSQLを書くことになってしまいセキュリティとしてあまり良くない。
あと美しくない。
“`models/user.rb
scope :sort_by_created_at, ->(created_at_sort) do
if created_at_sort == ‘desc’
eager_load(:posts)
.order(‘posts.created_at DESC NULLS LAST’)
.select(‘users.*’, ‘posts.created_at AS posts_created_at’)
else
eager_loa

元記事を表示

RuboCopでC: [Correctable] Rails/RakeEnvironment: Include :environmentと指示された

## RuboCopで指摘されたこと
`bundle exec rubocop`を実行すると、以下のエラーが生じました。
“`ruby:エラー内容
lib/tasks/auto_annotate_models.rake:6:3: C: [Correctable] Rails/RakeEnvironment:
Include :environment task as a dependency for all Rake tasks.
task :set_annotation_options do
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
“`

結論を言うと`auto_annotate_models.rake`の記載を以下のように修正することで解決できます。
“`ruby:修正内容
– task :set_annotation_options do
+ task :set_annotation_options => environment do
“`

## エラー解消のために行ったこと
エラーメッセージの内容が`task :set_annotation_

元記事を表示

Web APIのエンドポイントやレスポンスにIDを使用してはいけないか考える

# はじめに
皆様、こんにちは!
佐久間まゆちゃんのプロデューサーの[@hiroki_tanaka](https://note.com/hiroki_tanaka)です。

私は現在、RailsシステムのAPIリプレイス活動に携わっています。
その際にエンドポイントにIDを使用するかどうかやレスポンスにIDフィールドを含めるか含めないかといったID問題があったので、考えたこと・調べたことをまとめたいと思います。

# 結論
**エンドポイントやレスポンスにIDを使用しないほうが良い。**

# 理由
Railsにおいて、IDカラムは基本的にDBでAuto Incrementされて発行された連番のサロゲートキーに当たります。
そのため、サロゲートキーであるIDカラムが露出してしまうことで以下のような問題が発生します。

### IDの値の大小によって、サービス規模が推測出来てしまう。
例えば、`Get /api/users/:id`といったIDに紐づくユーザ情報を取得するAPIが存在した場合、ユーザは`:id`に好きな値を入れることができます。
そのため`Get /api/users/1

元記事を表示

【Ruby】電話番号をハイフンなしの半角数字に成形する方法

## 環境
Rails 6.0.1
Ruby 2.6.3
PostgreSQL 11.16

## ハイフンなしの半角数字に成形する方法

“`ruby
phone_number = ‘090ー1234ー5678’
phone_number.tr(‘0-9’, ‘0-9’).gsub(/[^0-9]+/, ”)

# => “09012345678”
“`

“`tr“`で全角数字だったら半角数字に成形。
“`gsub“`でハイフンなどの“`integer“`以外の文字列が入っていたとき削除(空文字に変換)。

## 成形するメソッド

下記記事の内容を組み合わせて、電話番号をきれいに成形するメソッドにしてもいいかも。

“`ruby
def format!(phone_number)
return nil if phone_number.blank?
return phone_number if phone_number.match?(/\A[0-9]+\z/)

phone_number.tr(‘0-9’, ‘0-9’).gsub(/[^0-9]+/

元記事を表示

OTHERカテゴリの最新記事