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

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

本番環境にてGmailを送信する【Rails】

#本日の内容
今回の記事のですが、本番環境(EC2)にてGmailを送る実装になります。
`開発環境でも参考になると思います!(記述する場所を変えるぐらいなので)`

#環境・前提
ruby 2.6.5
本番環境EC2

#◇Gmailメール実装
こちらでは、本番環境にてgmailからユーザーにメールを送っていきます。

###流れ
①Gmailアカウント/アプリパスワード取得
②コードに記述

###Gmailアカウント/アプリパスワード取得
gmailのアカウントのアプリパスワードが必要です。(通常のログインパスワードだとエラーが出ます)
今回は、gmailアカウントの2段階認証をオンにして、アプリパスワードを取得ます。

**① 送信用に利用するgmailのアカウントで [ログイン](https://myaccount.google.com/?utm_source=OGB&tab=mk&utm_medium=act&gar=1)**
**② [セキュリティ]設定**
 画面左のメニューから[セキュリティ]を選択し、セキュリティの設定画面を開きます。
![gmail1.png](h

元記事を表示

最初のGemfileの作り方

テキストコピペでもいいんですが、`npm init` 的な事できないのかなと思い調べました。
`bundle init` で `Gemfile` を生成できました。

参考
https://bundler.io/gemfile.html

元記事を表示

【RSpec】KeyError: Factory not registered:を解決した方法

#対象者

* RSpecテストを実施した際にKeyError: Factory not registered:というエラーが出ている方

#目的

* 上記エラーを解消して、テストを正常に作動させる

#実際の手順と実例
###1.結論(解決策)

aliasを用いて、「spec/factories/user.rb」内のuserに「,aliases: [:follower,:followed] 」と追加して解決

###2.エラー内容と前提

フォロー機能のテスト実行時に出たエラーが下記の通り

![スクリーンショット 2021-09-06 14.25.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1681213/c4081f24-fc70-1ecd-d57a-671d9a0d2f00.png)

Factoryに”followed”が登録されていないと予想

下記

“`model/relationship.rb
class Relationship < ApplicationReco

元記事を表示

method(メソッド)について

・復習+学習始めたての方に

method(メソッド)とは?

プログラミングにおける処理をまとめたもののこと

定義の仕方

“`
def say_hello
puts “Hello”  メソッドの定義の部分
end

say_hello    メソッドの実行
“`

実行結果 Hello と出ます!

初投稿なので、簡単なのを簡単にまとめてみました。
これからどんどん分かりやすく楽しみめるような投稿していきます!

元記事を表示

Rails6 画像のプレビュー機能 + バリデーション失敗時での画像表示

#実装内容
**carrierwave**を使用して**画像アップロード機能**を実装し、**「よし!これで画像の投稿機能の完成だ!!」**と思っていたのですが、何か物足りなさを感じて画像投稿機能に関する記事をいろいろと調べていた所、**プレビュー機能**というワクワク機能に出会ったので今回はその紹介 + **バリデーション失敗時でも画像を表示する方法**も紹介しております。

#処理全体の流れ

1. プレビュー機能の実装
1. バリデーション失敗時の画像表示方法

#完成形はこちら

###プレビュー機能

[![Image from Gyazo](https://i.gyazo.com/223cb0d9f1dafabacf2edb961fbb1116.gif)](https://gyazo.com/223cb0d9f1dafabacf2edb961fbb1116)

###バリデーション失敗時

[![Image from Gyazo](https://i.gyazo.com/f27a90a1c130d3f0e6c6b14c5e302509.gif)](https://gyazo

元記事を表示

Ruby でヒアドキュメント内で条件分岐やループ処理を行う方法

# はじめに
複数行に渡る文字列を生成したいとき、ヒアドキュメントは便利だが、ヒアドキュメント内で条件分岐やループ処理を行う際に少し苦労したのでまとめておく。

# 実装方法
例として、以下のような仕様のコマンドラインスクリプトを実装してみる。

* マークダウンで記述されるブログ記事に、自動で YAML ヘッダをつける機能を持つ
* 引数としてタイトルやサムネイル画像、タグを与えると、`@options` 変数で各引数の値を取得できる

その際の、YAML ヘッダをヒアドキュメントで記述する。

“`ruby
require ‘erb’

header = <<~'HEADER' --- layout: post title: "<%= @options[:title] %>”
image: “<%= @options[:image] %>”
date: “<%= Time.now.strftime('%Y-%m-%d') %>”
tags:
<%- @options[:tags]&.each do |tag| -%>
– <%= tag %>

元記事を表示

[Ruby]Integer#downto

##はじめに
最近コメントいただいた中で新しいメソッドを教えて頂いたので忘れないうちに記事にしておきます。

##Integer#downto

integer型の数字に使えます。
使用した数字から1ずつ減らした数を一つずつブロック変数に入れて繰り返し処理をします。

引数にどこまで減らすか、最小の数字を渡すことで、最小値を指定できます。

“`ruby
6.downto(0) do |i|
print i
end
=> 6543210

6.downto(1) do |i|
print i
end
=>654321

6.downto(3) do |i|
print i
end
=>6543
“`

参考記事では下記のような使い方もしていました。
そのまま引用します↓

“`ruby
5.downto(1) {|i| print i, ” ” } # => 5 4 3 2 1
“`

参考: https://docs.ruby-lang.org/ja/latest/method/Integer/i/downto.html

元記事を表示

Ruby クラスとインスタンスと初期化について

#クラスとインスタンスとは
***クラス***とは設計書みたいなものです。
***インスタンス***とは設計書を下に作られたものです。

⚫︎具体的に説明すると
クラスを野球のグローブだとします。
インスタンスが赤いグローブ、黒いグローブ、黄色いグローブ
とします。
これはグローブという設計図(クラス)から
いろいろな色のグローブ(インスタンス)を作るということです。

#クラスについて
今回は野球のグローブをクラスとして扱っていきます。

“`rb

class Glove

end

#Gloveクラスのインスタンス作成
Glove.new

“`
ちなみに***クラス名の最初の文字は大文字(CamelCase)***です。

メソッドを入れると

“`rb

class Glove #クラスを定義
def player
pitcher = “ピッチャー”
puts pitcher
end
end

#Gloveクラスのインスタンス作成
glove = Glove.new
glove.player

元記事を表示

二桁以上の整数を入力すると、十の位と一の位の数字の足し算、十の位と一の位の数字の掛け算をそれぞれ行い、最後に2つの結果を足し合わせて出力するプログラムの作成

初投稿。

とある日に遭遇したRuby問題。
ポイントは整数の十の位・一の位を個別の整数として出力するメソッドを理解すること。特に十の位!
模範解答だけではイマイチしっくり来なかったため、解答コードを元に解説を備忘録として。

〜今回はヒントがありました。〜
「入力された2桁以上の整数を10で割った計算結果の余りが1の位、整数を10で割ったものを更に10で割った計算結果の余りが10の位となります。」
現代文の問題かのようなヒントが記載されていましたが、要は’%’を使いなさいということですね。

“`rb
def addition(a, b)
a + b
end

def multiplication(a,b)
a * b
end

def slice_num(num)
# 10の位
tens_place = (num / 10) % 10
# 1の位
ones_place = num % 10
return tens_place, ones_place
end

puts “二桁の整数を入力してください”
input = gets.to_i
X, Y =

元記事を表示

【Mac】Docker+rails6+postgreSQLでの環境構築完全版

環境

MacOS Big Sur 11.5.2
ruby 3.0.2
rails 6.1.4
Docker 20.10.8
postgreSQL 13.4
ディレクトリ myapp
全て現時点(2021/09/06)での最新バージョンです。

1.用意するファイル

・Dockerfile
・Gemfile
・Gemfile.lock
・entrypoint.sh
・docker-compose.yml

“`docker:Dockerfile
FROM ruby:3.0.2
# yarnパッケージ管理ツールをインストール
RUN apt-get update && apt-get install -y curl apt-transport-https wget && \
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add – && \
echo “deb https://dl.yarnpkg.com/debian/ stable main” | tee /etc/apt/sou

元記事を表示

【Mac】Docker+rails6+MySQLでの環境構築完全版

環境

MacOS Big Sur 11.5.2
ruby 3.0.2
rails 6.1.4
Docker 20.10.8
MySQL 8.0.23
ディレクトリ myapp
全て現時点(2021/09/06)での最新バージョンです。

1.用意するファイル

・Dockerfile
・Gemfile
・Gemfile.lock
・entrypoint.sh
・docker-compose.yml

“`Docker:Dockerfile
FROM ruby:3.0.2
RUN apt-get update -qq && apt-get install -y nodejs

# yarnパッケージ管理ツールをインストール
# https://classic.yarnpkg.com/en/docs/install/#debian-stable
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add –
RUN echo “deb https://dl.yarnpkg.com/debian/ s

元記事を表示

Railsの仕組みについて

#1.はじめに
プログラミングスクールでRuby on Railsの勉強を始めるにあたって、
Railsの仕組みを調査する機会があったのでまとめました。

#2.Railsとは
Rubyプログラミング言語で書かれたフレームワーク。

###Railsの2つの基本理念

* 同じことを繰り返すな(Don’t Repeat Yourself: DRY) → コードの繰り返しを避ける
* 保守性と拡張性を確保し、バグが減少する。
* 設定より規約(Convention over Configuration: CoC) → 各種設定に対してデフォルト値を予め設定
* 設定ファイルの設定作業を行う負担が減少。

#3.MVCとは
RailsはMVCと呼ばれる3機能からなるソフトウェアアーキテクチャに基づいて構成されている。

* Model(モデル) 
* データの処理を行う機能。
* データベースの入出力や、計算を行う。

* View(ビュー)
* ブラウザへの表示に関する機能。
* HTMLによるインターフェースの表示を行う。

元記事を表示

【Mac】Docker+rails6+MySQLで環境構築中にaddress already in useと出たら?

環境

・macOS Big Sur バーション11.5.2
・シェル zsh
・Ruby 3.0.2
・rails 6.1.4
・My SQL 8.0.23
・Docker 20.10.8

Docker file

“`rails:Dockerfile
FROM ruby:3.0.2
RUN apt-get update -qq && apt-get install -y nodejs

# yarnパッケージ管理ツールをインストール
# https://classic.yarnpkg.com/en/docs/install/#debian-stable
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add –
RUN echo “deb https://dl.yarnpkg.com/debian/ stable main” | tee /etc/apt/sources.list.d/yarn.list
RUN apt-get update && apt-get install yarn

元記事を表示

Ratyを使ったレビュー機能 バリデーションエラーの表示方法

#実装内容
**Bootstrap4**では、サーバーサイドでチェックした入力エラーのメッセージを表示するための`「invalid-feedback」`**クラス**が用意されており、項目ごとに分かりやすく表示されるようになっています。

しかし、入力欄に`タグ`を使用していない場合、このエラーメッセージは表示されません、、(自分の場合、**Raty**を使った`レビュー機能`で起こりました、、)

この問題に遭遇し参考記事を探してみたのですが、該当する記事を見つけることができなかったこともあり、備忘録も兼ねて紹介しています。

#処理全体の流れ

1. 三項演算子を使用して適切なクラスの付与
1. styleの修正
1. エラーメッセージ表示用のdivタグ作成

#完成形はこちら
###Before
[![Image from Gyazo](https://i.gyazo.com/fc83740cabb77c8dae1794b2091d04f8.png)](https://gyazo.com/fc83740cabb77c8dae1794b2091d04f8)
###Af

元記事を表示

フォーム入力欄に最初から数字が入ってしまう現象をvalue: “” で対処した。

# なぜかフォーム入力欄に最初から数字の 0 が入ってしまう現象が発生してしまった。

“`ruby

商品名
必須

<%= f.text_area :item_name, class:"items-text", id:"item-name", placeholder:"商品名(必須 40文字まで)", maxlength:"40" %>
“`
原因はわかりませんが、ページを開くと入力欄に数字の0が既に入ってしまい対処に困りました。

“`ruby

商品名
必須

<%= f.text_area :item_name, class:"items-text", id:"item-nam

元記事を表示

RailsマンにとってPandasのDataFrame型がモヤモヤする理由

## PandasのDataFrame型はモヤモヤする
当方、元々Rails歴3年で、最近Kaggleを始めた超初心者なのですが、Railsの経験が活かされる場面もあれば、逆にRailsの経験がバイアスになり混乱する場面もあります。入門してまず躓いたのは、PandasのDataFrame型です。特に`df[‘name’]`や`df.iloc[0]`とやらで混乱してしまいました。

## RailsとPandas テーブルデータの操作の違い
例えば、次のようなテーブルデータからオブジェクトを作成し、1行目・1列目を取り出す場合のコードの違いを比較します。

| id | name |
| — | — |
| 1 | 田中太郎 |
| 2 | 佐藤花子 |
| 3 | 山田一郎 |

### PandasのDataFrame型
“`python
data = {
‘id’: [1, 2, 3],
‘name’: [‘田中太郎’, ‘佐藤花子’, ‘山田一郎’]
}
users = pd.DataFrame(data)

# 1行目を取り出したいとき
users.i

元記事を表示

【Ruby on Rails】redcarpetを使ったMarkdown記法の拡張機能のまとめ

#対象者

* マークダウンを実装予定の方
* gem redcarpetを使う予定の方

#目的

* redcarpetの拡張機能を一つひとつ理解しながら使用する

#実際の手順と実例
###1.gemの導入
Gemfile

““
:
gem redcarpet
:
““

**bundle install**を実行

###2.拡張機能一覧

| | 機能 | 説明 |
|:-:|:-:|:-:|
| 1 | :no_intra_emphasis | 単語の強調。**や–で囲う|
| 2 | :fenced_code_blocks | フェンスで囲まれたコードブロックを解析します。3つ以上の~バックティックで区切られたブロックは、インデントする必要なしにコードと見なされます。オプションの言語名は、コードブロックの開始フェンスの最後に追加できます。 |
| 3 | :autolink | リンクを解析します。http、https、およびftpプロトコルの自動リンクは自動的に検出されます |
| 4 | :disable_indented_cod

元記事を表示

【初心者向け】Railsチュートリアル 第8章 ログイン機構をまとめてみた

# この記事に書かれていること
Railsチュートリアル第8章のまとめです。
自分自身、第8章に取り組んでとりあえずログイン機能は実装できたものの、
何がどうなっているかいまいちよく分からなかったため、振り返りとして書いています。

これから取り組まれる方・私と同じようにあまり理解ができなかったという方に助けになるといいなと思っています。

※お断り
あくまで全体像を把握することに主眼を置いており、
セッションやsession、paramsなど、理解が難しい点については簡単な説明にとどめています。

# この記事の対象となる読者
– これからRailsチュートリアル第8章に取り組むにあたり、先に全体像を把握しておきたい
– Railsチュートリアル第8章を終えたが、いまいち理解できない
– ログインの仕組みだけサクッとコピペしたい

## 完成状態のコード
まずはこの記事で解説するコードを掲載しておきます。
[GitHub](https://github.com/yasslab/sample_apps/tree/master/6_0_0/ch08)にも同様のものが上がっているので、

元記事を表示

【Rails】コントローラーからjavascriptへパラメータを渡す

# はじめに
・本記事ではコントローラからjavascriptにパラメータを渡す方法を説明します。

## controller→view→javascriptとviewを介してパラメーターを渡すことができます。

まず、コントローラからビューへは、インスタンス変数を使いパラメータを渡します。

“`ruby:/app/controller/books_controller.rb
def index
#パラメータを、インスタンス変数でビューに渡す
@book = ‘コントローラからjavascriptへパラメータを渡す方法’
end
“`

view(ビュー)ではinputタグでtypeをhidden属性にし、valueとして受け取ります。

“`html:/app/views/books/index.html.erb

indexページ

OmniAuthとDevise連携での未定義メソッドエラー(メモ)

###開発環境

Ruby 2.7.4
Rails 6.1.4.1
PostgreSQL 13.4

###エラー内容
OmniAuthとDeviseを連携し起動の際に`omniauth_authorize_path’が未定義メソッドとされる

![スクリーンショット 2021-09-05 23.30.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1241122/7fb210b9-1ed6-a442-aeee-07053f64cd50.png)

###参考
[OmniAuth + Devise 連携で ActionView::Template::Error (undefined method `omniauth_authorize_path’ for x]
(https://blog.neoflow.jp/ruby/ruby-on-rails5/4198/)

###原因
OmniAuthのメソッド変更にDeviseのテンプレートが追い付いていない
以前は`omniauth_authoriz

元記事を表示

OTHERカテゴリの最新記事