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

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

【Ruby on Rails】初学者専用 デバック練習

Ruby on Railsの勉強を始めて3か月ほどがたちました。
自分でアプリケーションをつくっていくなかでたくさんエラーに悩まされました。

そのため、railsを始める人に知ってほしいエラー処理を作りました。
是非使ってみてください!!

コードはこちら↓
https://github.com/koya1616/debug1.git

それでは手順を説明していきます。

# リポジトリをクローンしてみよう
クローンについての記事はこちらもみるといいかもしれないです!
・[Git clone から pushまで](https://qiita.com/H-Toshi/items/df55d5024d9c0e2cfe22)

それではクローンしていきましょう

“`:terminal
$ git clone https://github.com/koya1616/debug1.git

$ cd debug1
“`
簡単ですね。

# dockerをつかってみよう
dockerは環境構築に使います。ぜひ使ってみてください。
・[dockerの使い方などなど](https://qiit

元記事を表示

Railsテスト(RSpec)記事12選

#RSpecとは?
RspecとはRuby用のテストフレームワークです。RSpec は Gem パッケージとして提供されていますのですぐに導入できます。

#記事
RSpecについて書かれている記事たちです。参照しやすいように一箇所にまとめました。

https://qiita.com/tatsurou313/items/c923338d2e3c07dfd9ee

https://qiita.com/jnchito/items/42193d066bd61c740612

https://zenn.dev/fjsh/articles/b300fd2f8eec77

https://qiita.com/kskinaba/items/38b143e79bdfd44cc42a

https://qian-dao-zhen-yi.gitbook.io/rspec-style-guide/

https://qiita.com/yamaday0u/items/c3bf6036e11298771a99

https://zenn.dev/yukihaga/articles/816758ff6f0bd

元記事を表示

Rubyの書き方 ハイパー基礎その1

今日はRubyに全く触れていない人に対して教えるつもりで書きます。
VScode的なものであったり、
ターミナルであったり、
ファイルの作成などについては、省略します。
プログラミングで何か入力すると、こういう返事がきて、こういう動きをしますよっていう、仕組みの触りの部分です。

もし、万が一、Qiitaを見てるけど、見てるだけでRubyとかプログラミングとか全く知らないぜ!ってドヤ顔で言ってる人がいたら、遠慮なく質問してください。
初心者ですが、ここらへんならまだドヤ顔返しできます。顔だけは。。。

1:「puts」を知ろう!

これを知らないと何も始まらないぜという「puts」。

「puts」は、
「puts」の後に書いた文字や計算の答えを出してやるぜ!
という意味です。定番のあれを書きますか。

“`ruby
puts “Hello World”
“`
はい、出ました!
これは、経験者なら初心者でも誰でも見ると言われている「例」です。
少しはヒネって変えてもいいと思ったけど、自分はこれ好きです笑

これをターミナルで入力して返ってくる返事が、

“`rub

元記事を表示

サービス設計について③!

#①.結論!

Ruby on Railsでは、DB設計が済んでしまえばマイグレーションファイルなどに記述をするだけでDBが利用可能になるので、より開発に近い設計だと言えます!

したがって、DB設計は詳細設計に分類されることがほとんどです!

DB設計について説明したいと思います!

#②.DB設計

DB設計とは、開発で使用するDB(データベース)の表を設計することです!

具体的に考える項目としては、「テーブル」や「カラム」、「関連付け(アソシエーション)」などです!

設計手順としては、まず保存する項目を洗い出します!

そして、どのようなテーブルがあれば管理しやすいかを考慮しつつ、その中でテーブル同士の関連付けを考えていきます!

#③.エンティティ

サービスで扱われる情報を整理します!

サービスで扱われる情報のことを、「エンティティ」と呼びます!

サービスで扱われるデータ自体のことですね!

例を出すと、以下のような物です!

・ユーザー管理に関する情報

・投稿へのコメントに関する情報

このような物になります!

次に、抽出したエンティティを関連性も含め具体化し

元記事を表示

幹事をランダムに設定する

#前回投稿した記事の応用編

https://qiita.com/tkht2401/items/63406354e17566e3ae11

sampleメソッドを使って、より応用したBooleanの「true, false」を切り替えたいと思います。

**この記事が少しでも良かったと思ったらLGTMを押していただけたら嬉しいです!!**

##前提条件

group:memberrをたくさん持つ
member :たくさんのgroupに所属する
group_member : 中間テーブル

**グループとメンバーは多対多の関係です!**
そして、グループに加入したメンバーの中からランダムに幹事を設定できること。

流れとしては、
自動設定するを押すとグループに参加のメンバーの中から、
Role(役割)が、organizer(幹事)かregularにランダムに変わります。

今回はsampleメソッドを使うので、少し制限もつけます。
①幹事は一グループにつき一人まで
②メンバーは二回連続で幹事にならない

#イメージ図
![qiita_boolean.png](https://qii

元記事を表示

投稿に対する空コメントでInvalid dateが出たときの対処法

##目的
自作アプリで投稿にコメントができる機能を作成。
その際出てくるエラーの解決に時間がかかったので、解決までの考え方を備忘録として記事にしました。

##環境
windows10 home
Ubuntu 20.04.1 on WSL2
rails 6.0.3
ruby 2.6.6

##起きた現象
空のコメントを送信するとInvalid dateエラーが発生。
![eae5c07bf8195a5b11daa98e2106ada6](https://user-images.githubusercontent.com/69103382/138587293-696191b6-0d70-4411-96e9-b9912330c119.png)

**コメントモデルのカラムは以下に記載**

* id
* content(コメントの中身)
* user_id(外部キー)
* micropost_id(外部キー)
* created_at
* updated_at

##①ビューを確認

“`microposts/show.html.erb
<% @comments.each do

元記事を表示

【Ruby】FizzBuzz問題

今回はRubyの勉強でFizzBuzz問題を解いていきます!

思いつくコードを打ち込んでみました。

##FizzBuzz問題とは
・3で割り切れる数値を「Fizz」と返す
・5で割り切れる数値を「Buzz」と返す
・15で割り切れる数値を「FizzBuzz」と返す
実行方法は以下の通りです。

##実行
“`
def FizzBuzz(num)
if num % 15 == 0
‘FizzBuzz’
elsif num % 5 == 0
‘BUZZ’
elsif num % 3 == 0
‘FIZZ’
else
num.to_s
end
end

number = 1..100
number.each do |n|
puts FizzBuzz(n)
end
“`
“`
for n in 1..100 do
if n % 15 == 0
puts “FizzBuzz”
elsif n % 3 == 0
puts “Fizz”
elsif n % 5 == 0
puts “Buzz”

元記事を表示

複数の繰り返しメソッドの備忘録

#目的
複数の繰り返しメソッドの備忘録

#結論
6種類あった。
times
for
while
until
each
loop

“`ruby:timesメソッド #回数指定された繰り返し
3.times do
puts “Hello World”
end
=>Hello World
Hello World
Hello World
“`

“`ruby:for文 #オブジェクトから要素を取り出す場合
sum = 0
for i in 1..5
sum = sum + i
end
puts sum
=>15
“`

“`ruby:while文 #条件を自由に指定したい場合
i = 1
while i < 3 puts i i += 1 end =>1
2
“`

“`ruby:until文 #whileではわかりにくい条件を指定したい場合
sum = 0
i = 1
until sum >= 50
sum += i
i += 1
end
puts sum
=>55
“`

“`ruby:eachメソッド #オブジェクトから要素を取り

元記事を表示

rails開発環境からgmailでメール送信する方法

# おおまかな流れ :sunny:
1. gmailの2段階認証プロセスの設定とパスワード取得
2. credentials.yml.encの設定をコマンドラインにて行う
3. 環境設定(config/environments/development.rb)
4. メール作成(Action Mailerのマニュアルに従う)

# gmailの2段階認証プロセスの設定とパスワード取得 :hatching_chick:
![Screenshot 2021-10-23 at 18.57.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1502566/9431b3b2-da2c-eeee-91b3-29ab371d545e.png)

指示通り進め、16桁のパスワードを取得。

# credentials.yml.encの設定をコマンドラインにて行う :koala:
“`
EDITOR=”vi” bin/rails credentials:edit
“`
こちらでエディターのvimを起動。
![Scre

元記事を表示

Refile::InvalidID エラーが起きた時のメモ

## 環境
“`
gem “refile”, require: “refile/rails”, github: ‘manfe/refile’
gem “refile-mini_magick”

Rails 5.2.6
“`

## 1.目標
**Refileの`attachment_image_tag`命令でクラウド上の画像を表示したい。**

## 2.状況
– `attachment_field`フォームで保存した画像を`attachment_image_tag`命令で呼び出そうとしたところ、`Refile::InvalidID in (該当頁)`エラーが発生した。
– マイグレーションファイルに`default: “default.jpg”`等のようなデフォルト値を指定するコードはなかった。(※ https://teratail.com/questions/220379 で、デフォルト値に起因する同挙動エラーの解決報告あり)
– 該当レコードを保存した際にはフォーム・ストロングパラメータ・モデル全てに不手際があった。
– 不手際修正後に作成したレコードを`attachment

元記事を表示

Ruby での JavaScript の圧縮を Uglifier から Terser に変えた

# はじめに

JavaScript を Ruby で圧縮したい。
こういう処理はフレームワーク側でやってくれるので,あまり意識することはないと思うが,たとえば静的サイトを生成するプログラムを自分で書く場合,やり方を知らなければならない。

# 定番 Uglifier

従来,こういう目的には [Uglifier](https://github.com/lautis/uglifier) という gem がよく使われてきた。

執筆時点の最新版は 4.2.0 なので,本記事もこれを前提とする。

使い方は超簡単で,

“`rb
require “uglifier”

puts Uglifier.compile(<<~JS) function average(numbers) { return numbers.reduce( function(sum, number) { return sum + number }, 0 ) / numbers.length } JS ``` とすれば圧縮された ``` function average

元記事を表示

サービス設計について②!

#①.結論!

設計の手順には明確な定義がないため、一般的な「要件定義」→「基本設計」→「詳細設計」の順で説明します!

進むごとに開発しやすいような細かい箇所を決定していくようなイメージです!

ここから前回の続きです!

今回は、「基本設計」と「詳細設計」に着目して進めます!

#②.基本設計

要件定義の内容を、開発に必要な内容へまとめることです!

外部設計とも呼ばれます!

今回の基本設計では、アプリケーション制作に必須の要素となる「画面」や「画面遷移の流れ」をまとめていきます!

#③.詳細設計

実際に書くべきコードを洗い出す作業です!

要件定義や基本設計の情報を元に、ユーザーが行う操作(ボタンを押す、フォームを投稿するなど)に対して行われる処理をすべて書き出します!

その上で、実際どのようなコードを書くかを当てはめていきます!

Ruby on Railsであれば「ルーティングはどういったものがあるか、対応するコントローラーとそのアクションはどういったものになるか、モデルは ~」といった内容を表にまとめると良いでしょう!

#④.画面遷移図

アプリの画面がどのよう

元記事を表示

【Rails】acts-as-taggable-onで作成したタグ機能をseedデータに取り入れる

##目的
自作のアプリにダミーユーザーを作成。
その際acts-as-taggable-onで作成したタグの挙動や見栄えの確認をしていきます。

参考:
[Railsにタグ機能をつける。acts-as-taggable-on使用](https://qiita.com/nakamura999/items/56c6426fc5dd640617ce)
[rails acts-as-taggable-on でタグ付け後、タグを使って検索](https://qiita.com/take1457a/items/90465189140ec77b14be)

##環境
windows10 home
Ubuntu 20.04.1 on WSL2
rails 6.0.3
ruby 2.6.6

##seedデータ作成(失敗)
まずはタグ表示無しでデータが作れるか試してみる。

“`seeds.rb
50.times do
user = User.create!(
name: Faker::Games::Pokemon.unique.name,
email: Faker::I

元記事を表示

モダンJavaScriptを0歳のところから学習していく【初心者】

こんにちは!
テックキャンプでJavaScriptのカリキュラムはありましたが、習ったと言ってもサラッとした内容だったので2、3日前からUdemyでモダンJSを学習中です。そのアウトプットとして記事を書いていきたいと思います。超絶初心者なので間違ってたら言ってください。
何も知らない赤ちゃん状態です。

# var let const
マジ初歩の初歩の変数宣言からやっていきます。

## var
従来のJavaScriptでは変数宣言が行えるのはvarのみでした。
var変数は上書きも再宣言も可能です。

“`javascript
var name = ‘裏梅’;
name = ‘羂索’;
var name = ‘漏瑚さん’;
“`

var変数は上書きも変数宣言も可能なのでプロジェクトが肥大化する中で、意図しない上書きや変数宣言を発生させてしまうというエラーも起こってしまっていたようです。

## let

ES2015で追加された変数です。
letは上書きが可能ですが、再宣言は不可能です。

“`javascript
let name = ‘パンダ’;
name = ‘猪巻棘

元記事を表示

【Rails】【JS】GoogleMapで固定した場所にピンを刺したい!【Geocoder】

# はじめに

この記事では, RailsアプリでGoogle Mapを利用する際に、固定した場所を表示する方法を書き記しています。

特徴は以下です。

1. Google MapのAPIを利用
2. 指定した緯度軽度の場所にピンを刺す
2. ピンの情報ウィンドウをクリックすると指定したページに遷移する
2. 遷移したページの指定した場所に移動できる(sectionタグを用いる)
2. ページ遷移をなくすこともできます!!

[この記事](https://qiita.com/nagase_toya/items/e49977efb686ed05eadb)をもとに、GoogleMapの表示ができていることが前提とします。

#1. Viewを編集する

“`js:posts/index.html.erb