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

Rails関連のことを調べてみた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

元記事を表示

【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 と出ます!

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

元記事を表示

rails g controller 実行時にDeprecation Warningになった。その対処法。

# 結論
Gemfile内の `thor` のバージョンを 0.19.1に指定した。

# 背景
 涼しくなってきたのでようやくキーボードを触れるようになった。Railsの個人開発を再開した。`rails g controller …` とコントローラーを作ったら、以下のエラー文章が出た。

“`
$rails g controller plans

Running via Spring preloader in process 1645
Deprecation warning: Expected string default value for ‘–template-engine’; got false (boolean).
This will be rejected in the future unless you explicitly pass the options `check_default_type: false` or call `allow_incompatible_default_type!` in your code
You can silence de

元記事を表示

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

元記事を表示

rails tutorial6章進めた時の覚書

##この章では何するの?
6章ではユーザー登録機能の中でも、一番重要なステップであるユーザー用のデータモデルの作成と、データを保存する手段の確保について学びます。

6~12章でRailsのログインと認証システムをひととおり開発します。

ユーザー登録で初めにやることは、それらの情報を保存するためのデータ構造を作成すること

データベースとやりとりをするデフォルトのRailsライブラリはActive Recordと呼ばれる

Railsには***マイグレーション(Migration)***という機能がある。
データの定義をRubyで記述することができ、SQLのDDL(Data Definition Language)を新たに学ぶ必要がない。
このマイグレーションはDjangoと同じだよな??
データをデータベースに登録する作業という認識であっているかね。

name, email 属性をつけたUserモデルを作るコマンド

“`
$ rails generate model User name:string email:string
“`

String型のname属性、Strin

元記事を表示

MySQLチューニングについて知識まとめ

# はじめに
SQLをチューニングする業務を初めて任されたので、その際に学んだことを復習がてらメモ。初心者なので間違っているところなどありましたらご指摘いただけるととてもありがたいです!

# 前提
newRelic を使って種々のリソースの応答時間を監視している。そこでレスポンスに時間がかかっていたコントローラから、重いクエリを特定&改善する、というタスクだった。

# 原因となるSQLの特定
– まずここが思っていたより手間取った。AWSのログと照らし合わせながら、コンソールでクエリを叩いて同じ出力になっている場所を確かめる、という方法で探した。
– ActiveRecord のexplainを使いながら、ログを確認

“`:terminal
AreasArticle.where(parent_id: 401450).explain
AreasArticle Load (164.4ms) SELECT `areas_articles`.* FROM `areas_articles` WHERE `areas_articles`.`parent_id` = 401450
=>

元記事を表示

docker-compose + rails + webpack-dev-serverで、webpack-containerが立ち上がらない

# TL;DR
#### Webpacker 5.x.を使う場合は、webpacker-dev-serverは3.x.以下にしなさい

# 経緯
これからは、Sprocketsではなく、webpackerが主流になるらしい。
ならば、早めに使えるようになっておこう。
> 参考「Railsガイド WebpackerがSprocketsと異なる理由」
https://railsguides.jp/webpacker.html#webpacker%E3%81%8Csprockets%E3%81%A8%E7%95%B0%E3%81%AA%E3%82%8B%E7%90%86%E7%94%B1
「Rails: webpack(er)に乗り換える25の理由(翻訳)」

Rails: webpack(er)に乗り換える25の理由(翻訳)

早速、railsのアプリにて、webpackを使いながら
docker-composeを用いて、app用/db用/webpack-dev-server用の3コンテナを立ち上げる。

>参考「dockerでwebpackerが

元記事を表示

[Rails] ネストについて

##初めに
####記事の対象者
・routes.rbで詰まってしまうとき

####環境
・Macbook Air (Retina, 13-inch,2019)
・プロセッサ 1.6GHz デュアルコアIntel Core i5
・メモリ 8GB 2133 Mhz LPDDR3
・MacOS Big Sur バージョン 11.5.2

##ネストってなんだ?(通販サイトで考えてみよう)
####自分のイメージは
・resources君とresourcesさんが手を繋いでいると情報の共有ができるけどしていないとできない
・共有方法は。paramとして共有される
・繋ぐ方法は、do~endの間に他のresourcesを配置
・手をつないでも、上下関係が生まれる。(入れ子構造)

####通販サイトのDB(itemとpayment)

![nestsample.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1102030/565d0b57-58a8-d863-7fc6-6a38153868b1.png)

元記事を表示

【JavaScript】Uncaught TypeError: Cannot read property ‘プロパティ名’ of nullのエラーについて

すごく初歩的なエラーで1時間くらい時間を使ってしまったので
備忘録として残したいと思います。

### 前提

学習のためにメルカリのようなアプリを作成中です。
JavaScriptの非同期通信を用いて、販売価格を入力すれば
手数料と、入力した価格から手数料を差し引いた金額が自動で表示される機能を実装しようと下記のようにコードを記述しました。

“`application.js

require(“@rails/ujs”).start()
require(“@rails/activestorage”).start()
require(“channels”)
require(“../item_price”);

“`

“`items/new.html.erb

<%# 販売価格 %>

販売価格
(¥300〜9,999,999)

[Rails]resources、アクションについて

##はじめに
####記事の対象者
・Railsのroutesで混乱しているヒト

####環境
・Macbook Air (Retina, 13-inch,2019)
・プロセッサ 1.6GHz デュアルコアIntel Core i5
・メモリ 8GB 2133 Mhz LPDDR3
・MacOS Big Sur バージョン 11.5.2

####記事の目次
1)routesとは?
2)resourcesとは?
3)基本アクション
4)全アクション指定
##routesとは?
自分なりにroutesについての説明は下記のリンクにあるよ↓
https://qiita.com/janani/items/1bb869260ce252f18a73
##resourcesとは?
上記のリンク先のように説明すると。。。resources=記憶となる。

“`
resources :コントローラ名
“`
routes.rbに記入することによってプラウザから受け取ったアクション(地図)をroutes.rbさんがresources(記憶)にあるcontrollerさんへ案内してくれる。

##基

元記事を表示

Rails turbolinksとbootstrapのドロップダウン

##turbolinksとbootstrap
バージョン
Rails6.0.3
bootstrap4.5

今回発生した問題
サイト内にドロップダウンメニューをBootstrapで導入したが、ページ遷移直後にドロップダウンメニューを押しても機能せず、一度サイトを更新し直さないとドロップダウンが機能しないという点。

解決方法
application.js内にあったrequire(“turbolinks”).start()この記述を消す
turbolinksによって少し挙動に影響があったみたいです。
ここを消すことによる弊害が今後発生するかもしれませんが、一旦今日のところは解決です。
ぜひ参考にしてみてください!

元記事を表示

【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

元記事を表示

フォロー・フォロワー機能

##1. Relationshipモデルを作成

“`terminal
$ rails g model Relationship follower_id:integer followed_id:integer
# follower_id:フォローするユーザーのid, followed_id:フォローされるユーザーのid
$ rails db:migrate
# マイグレーション実行
“`
##2. アソシエーションを記述

“`app/models/relationship.rb
class Relationship < ApplicationRecord belongs_to :follower, class_name: "User" belongs_to :followed, class_name: "User" # class_name: "User"を定義することでUserテーブルのレコードを参照する end ``` 補足説明:belongs_to :followerでfollowerテーブルのfollower_idを探しにいきます。 ただ、今回はfollow

元記事を表示

ruby on rails6にbootstrapを導入 

#ruby on rails にbootstrapを使うときのコマンド

rails等のバージョン
ruby 2.7.4p191 (2021-07-07 revision a21a3b7d23) [x64-mingw32]
Rails 6.1.4.1
“`yarn add jquery bootstrap popper.js“`
だと最新になると動作しなかったので4.5.3に指定した。

#これ
“`
yarn add jquery bootstrap@4.5.3 popper.js
“`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/987832/ca6fd834-0072-8eb5-cb97-8c0488846687.png)

完了
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/987832/e4c72068-8dfc-7784-bda4-00a570abe0b3.png

元記事を表示

【Rails】GETとPOSTの違いを検証する

#はじめに
Railsの勉強中、GETは「情報を受け取る」POSTは「情報を送る」という認識でコードを書いていました。
ですが実際は、GETを指定しても入力値を送信してDBを更新できますし、
POSTを指定してもredirectやrenderをせずとも対応したページの情報を受け取って表示しています。
同じくRailsを勉強している仲間も疑問に思っていたとのことで、今回GETとPOSTの違いについて検証しました。
同じテーマの記事をいくつか拝見しましたが、トークンについて触れている記事は少ないように見受けられましたので、ぜひ最後までご覧ください。

#HTTPリクエストとHTTPレスポンスとは
前提として、HTTPリクエストについて再確認します。
HTTPリクエストとはWebブラウザ(PC上で見ている画面)が、Webサーバー(サイトページの情報が存在するコンピュータ)に対して送る要求(リクエスト)です。
この要求に対してWebサーバーが応答(レスポンス)することでPC上で見ている画面に望んでいたサイトページが表示されます。
![タ

元記事を表示

Rspec Userモデルの単体テストの手順

テストコードの備忘録として記事を
書かせていただきます!!

①バリデーションの設定を行う
—–
ここではバリデーションに関するテストを実装致します。

②Gemを追加
——
gemfileに
gem ‘rspec-rails’, ‘~> 4.0.0’   を追加で記述

““
group :development, :test do
# Call ‘byebug’ anywhere in the code to stop execution and get a debugger console
gem ‘byebug’, platforms: [:mri, :mingw, :x64_mingw]
gem ‘rspec-rails’, ‘~> 4.0.0’
end
““`

group :development, :testというグループの中に記述。
そうすることで、Gemの動作に制限をもたせる。

③bundle installを実行
——–
ディレクトリの確認を忘れずに

““
bundle install
““`

元記事を表示

【EC2】EC2にrailsのアプリをデプロイする方法 No.2(デプロイ)

# はじめに
それでは前回に引き続き、EC2を使ってrailsのアプリをデプロイしたいと思います。
前回はEC2の環境構築までを行いました。

これまでの工程について、まだ実装されていない方はこちらの記事をぜひご覧ください

https://qiita.com/kenta-nishimoto-1111/items/86ba0156c71b91dbc999

https://qiita.com/kenta-nishimoto-1111/items/4760bc02a6dfa40db035

https://qiita.com/kenta-nishimoto-1111/items/c6d4a899f4591430d242

それでは早速デプロイしていきます!

# 手順3 gitと連携をします

EC2インスタンスにアプリケーションのコードを送るためにはGithubを使います。
連携したGithubからEC2へクローンすることでデプロイをします。
そのためにGitHubとの接続設定をします。
ターミナルで下記のコマンドを実行します。

“`:gitの連携
[ec2-user@ip-17

元記事を表示

Rails リクエストフォーマットについて

####はじめに
先日[Rails インクリメンタルサーチ](https://qiita.com/223yuta/items/846b6fe6e3bf945291fb)という記事を投稿したのですが、作業中ターミナルを見ている中で、一つの勘違いに気づきましたので、記事にまとめてみようと思います。

これまで勘違いしていたのは、Railsには同期的なリクエスト(local:true, HTML)と非同期的なリクエスト(remote:true, JS)の2つのみ存在し、ターミナルのコントローラ#アクション名 as 〇〇 にて判断できるというものでした。
先日の記事にて、dataType:jsonでajax通信を行なった際に、コントローラには下記の出力がありました。

“`terminal
Started GET “/books?key_word=1” for ::1 at 2021-09-05 15:34:00 +0900
Processing by BooksController#index as JSON
Parameters: {“key_word”=>”1”}
Render

元記事を表示

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によるインターフェースの表示を行う。

元記事を表示

OTHERカテゴリの最新記事