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

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

Rails6でSNS認証を実装しよう!連携後に本登録ページに遷移!

# はじめに
SNS認証のQiitaの記事は多く存在をしているのですが、SNS認証してそのまま登録完了という流れの記事しか見当たりませんでした。そこで、利用規約や名前をを確認する本登録ページを設けるための記事を書きました。
こちらの記事はgemのDeviseに付け加えていき実装していきます。

SNS認証=>本登録ページ=>登録完了=>自動でログインしてリダイレクト

上記の流れをつくっていきます。

# DeviseにOmniAuthを導入しよう

### 1. Gemを追加

“`ruby:Gemfile.rb
gem ‘omniauth’
gem ‘omniauth-facebook’
gem ‘omniauth-google-oauth2’
“`

### 2. credentialsにIDとシークレットを追加

“`credentials.yml.enc
facebook:
client_id: <クライアントID>
client_secret: <クライアントシークレット>

google:
client_id: <クライアントID>

元記事を表示

[Rails]RSpecでテストを行う準備(FactoryBot使用)

今回の記事ではRSpecでテストコードを記述していく前に、いろいろと準備をしていきます。

テストコードについては別記事で解説させていただきます。

#開発環境

> ruby 2.6.3
> Rails 5.2.6

#前提

– FactoryBot使用
– Faker使用
– capybara使用

先にGemの説明を軽くしてから、実際にインストールして準備していきます。

#RSpecとは

Railsにおいて、とてもメジャーなテストフレームワークです。
Gemで導入ができて、コードが読みやすく、ドキュメントも豊富。

Railsで開発を行う現場でもRSpecを使用しているところが多いそうです。

#FactoryBotとは

テストデータの作成をサポートしてくれるGemです。

あらかじめ、テストデータを作っておいて、そのテストデータを使ってテストを実行できるので、テストコードを書く際にいちいちデータを作らなくてもFactoryBotを呼び出すだけで、データが使えるので、コードが簡素になります。

FactoryBotを使用するには`spec/factories/モデル名.r

元記事を表示

【Rails】AWS(EC2)本番環境のデータベースをリセットする

# はじめに
開発の途中で本番環境のデータベースをリセットする必要があり、その方法を備忘録として残します。

####【前提】
* RailsのアプリケーションをAWS Cloud9上で作成
* AWS EC2インスタンスを作成してWebサーバーを構築
* GitHubからアプリケーションを取得し、AWS EC2上にアプリケーションをデプロイ済み

# EC2へSSHでログイン
“`:ターミナル
ec2-user:~/environment $ ssh -i ~/.ssh/******.pem ec2-user@xx.xxx.xx.xx
“`
「******」にはpemファイルの名前を、「xx.xxx.xx.xx」にはElastic IPを入力します。

# Railsアプリケーションのルートディレクトリに移動
“`:ターミナル
[ec2-user@ip-xxx-xx-x-xxx ~]$ cd GitHubのリポジトリ名
“`

# データベースを削除
“`:ターミナル
[ec2-user@ip-xxx-xx-x-xxx GitHubのリポジトリ名]$ RAILS_ENV=p

元記事を表示

【Rails】5分でacts_as_lists実装する方法

# はじめに

Railsアプリケーションは爆速で開発できるところがメリットですので、開発スピードに着目して記事を書きました。
5分で acts_as_list の検証ができるように、vim だけでも書けるようにファイルパスを全てしましたので、
vimを使ってパスをコピー&ペーストして、ファイル内のコードを変更することができます。

プロトタイプを作る時などにスピード重視で作る事は開発にとって重要な事だと思いますので、ぜひご活用ください。

# コマンド

“`bash
# Rails アプリケーション作成
$ rails _5.2.4.2_ new five_min_actsaslist
$ cd five_min_actsaslist

# scaffold でモデルを作成
$ rails g scaffold user name:string
$ rails g scaffold post title:string user_id:integer position:integer
$ rails db:migrate RAILS_ENV=development

# テストデー

元記事を表示

【Rails】checkboxを用いて曜日を複数選択させる入力フォームを作る

#はじめに
`checkbox`で1つ以上選択必須の入力フォームを作っていきます。
今回は、チームを新規作成する際に活動曜日を最低1つ以上、かつ複数選択可の入力フォームを作っていきます。

#曜日カラムを作成する
`Team`モデルは既に作成してある前提で進めていきます。
私は曜日ごとのカラムを`boolean型`で作成しました。

“`
$ rails g migration AddWeeklyToTeams
“`
下記のように記述します。

“`ruby:生成したマイグレーションファイル
class AddWeeklyToTeams < ActiveRecord::Migration[6.1] def change add_column :teams, :activity_monday, :boolean add_column :teams, :activity_tuesday, :boolean add_column :teams, :activity_wednesday, :boolean add_column :teams, :act

元記事を表示

ゲストログイン機能 [Rails/LexicallyScopedActionFilter:]

ゲストログインを実装時にRubocopでチェックすると、
`Rails/LexicallyScopedActionFilter: update, destroy`
このように指摘されました。

その際のコードは下記の通りです。

“`ruby:registrations_controller.rb

module Users
class RegistrationsController < Devise::RegistrationsController before_action :ensure_normal_user, only: %i[update destroy] def ensure_normal_user redirect_to root_path, alert: "ゲストユーザーの更新・削除はできません。" if resource.email == "guest@example.com" end #〜〜〜〜略〜〜〜〜〜 end ``` https://www.rubydoc.info/gems/r

元記事を表示

初学者による復習[カラムを追加してみよう!]

ものすごく初歩的なアウトプットなので現役の方には有益な情報ではないと思うが、
自身の復習も兼ねてアウトプットをしていこうと思う。
今回はカラムを追加するために必要なことを記述していく。

**そもそもカラムとはなんぞや**
カラムとはものすごく噛み砕いて説明するとデータベースに入っているデータの項目のこと。
例えば名前、電話番号、アドレスなどなど。

それでは実際に記述してみると下記のようになる。

“`Ruby
create_table :users do |t|
## Database authenticatable
t.string :email, null: false, default: “”
t.string :encrypted_password, null: false, default: “”
t.string :name, null: false
t.string :password, null: false
t.str

元記事を表示

railsチュートリアル第10章

パーテーションを使いコードを短くする
テストは
こうなるべきであるということを定義すること
どう動くべきなのかを理解していなければならない。

“`rb
# GET /users/:id/edit ユーザ情報を更新するとき
def edit
@user = User.find(params[:id])
# デフォルトでは app/views/users/edit.html.erbにレンダリングされる
# (ページに飛ぶ)
# しかしまだedit.html.erbがないので作る
end

def update
@user = User.find(params[:id])
if @user.update(user_params)
# 更新に成功した場合を扱う。
else
# @user.error <=== ここにデータが入っている render 'edit' # じゃなかった

元記事を表示

ECS on EC2にデプロイする際のポートに関する注意点

# 本題

先日,ECS on EC2にRailsアプリケーションをデプロイしました。
(個人的に)最も意識から抜け落ちがちだと思われる注意点を書き留めておきたいと思います。

RailsコンテナとNginxコンテナの2コンテナで一つのタスク定義を作成しました。
ALBによるロードバランシングを行おうと思い,
動的ポートマッピングのための設定として,タスク定義のポートマッピング設定でホストポートを0にしました。

動的ポートマッピングのための設定は以上で終わりではありません。以下が注意点です。
EC2が属しているセキュリティグループのインバウンド設定として,
ALBが属しているセキュリティグループからの,ポート32768~61000を使ったtcpインバウンドを許可する必要があります。
動的ポートマッピングでマッピングされるポート範囲が上記のポート範囲だからです。

# 参考文献

https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/userguide/load-balancer-types.html

元記事を表示

[Rails]テストコードを学ぼう①(初めの1歩)

# はじめに
ご意見やご指摘など頂けますと大変助かります。
今後のITの世界へ入る身分として、是非ともご教授頂ければと思います。
また、自分自身の成長と共に
初学者の方々の力になればと思い少しずつ共有できればと思います!

# テストとは。
アプリケーションの挙動を確認するためのコードのことです。
手動でぽちぽちとブラウザで挙動を確認するよりも`断然効率が良い`です。

__手動によるデメリット__
・人為的なミスの可能性
・仕様変更の手間(もう1回全部やり直し)
・確認した記録が残らない

# テストコードを学ぶポイント
・細かい記述は、調べれば良い。覚える必要はない。
・どの部分を確認したいのかを明確にする。
・不安ならば、「binding.pry」

# テストコードで登場するもの列挙
*私が学習した範囲で列挙します

`Rspec`
Ruby on Railsのテストコードを書くために用いられるGem

`rails_helper`
Rspecを用いてRailsの機能をテストするときに、共通の設定を書いておくファイル

`describeメソッド`
テストコードのグループ分

元記事を表示

unicorn起動時に発生した(Errno::ENOENT)の解消法

## 前提
Ruby on Railsで開発したWebアプリをEC2にデプロイしようとしています。

・環境:Mac OS(M1) Big Sur 11.4
・Ruby -v:3.0.2

## 発生した事象
unicornを起動しようとした以下のコマンドをEC2内で叩きました。

“`EC2
$ RAILS_SERVE_STATIC_FILES=1 unicorn_rails -c config/unicorn.rb -E production -D
“`

するとすると…
以下のように怒られてしまいました。

“`EC2
/home/ユーザ名/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/unicorn-6.0.0/lib/unicorn/configurator.rb:85:in `read’: No such file or directory @ rb_sysopen – config/unicorn.rb (Errno::ENOENT)
from /home/ユーザ名/.rbenv/versions/3.0.2/lib

元記事を表示

Docker+rails環境にて、binding.pryが発動しない!

### 環境
ruby:2.5.3
rail:5.2.2
Docker:3
Mysql:5.7

## 現象
Docker,rails環境を使用し開発を進め、変数の値がどうなっているかを確認するため

– gem ‘pry-rails’
– gem ‘pry-byebug’

をインストール後、
、**binding.pry**を仕掛けたが
仕掛けたところで止まってくれなかった。

##失敗環境

Docker-compose.yml ↓↓

“`ruby
#docker-compose.yml
version: ‘3’
services:
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: root
ports:
– “5500:3306”

web:
build: .
command: /bin/sh -c “rm -f tmp/pids/server.pid && bundle exec

元記事を表示

投稿した時間を表時させる

#はじめに
投稿した時間が分かればなんとなくいいなと思いました。

![スクリーンショット 2021-07-16 18.44.58(2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1264460/56ac724e-5d6c-b400-4ab0-983dd4ec962b.png)

最終的にはこのような形になりました。

#はじめに試したとこ

いつものようにニックネームや写真をビューに表示すればいいかなと思いましたので以下のように記述しました。

“`erb
<%= review.created_at %>前に投稿
“`

`モデル.created_at`としました。

`created_at`は削除しなければデフォルトでカラムに存在します。

結果は・・・

![スクリーンショット 2021-07-16 18.50.00(2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1264460/916b3fd7-f8

元記事を表示

マイグレーションファイルをdownせずに削除してしまった

注:初学者のためメモ的な扱いで書いています。
間違っている事があればコメントで教えてください。

今回手順を覚えるために
一度作成した全てのデータをファインダーから
右クリックでファイル事全て削除して
新しくrails newで作り直してしまった

再度同じ手順で行った際に過去のマイグレーションファイルがdbのデータ上に残ったまま
新たにもう一つ作った物と2つ出来てしまった。

“`sh
Status Migration ID Migration Name
————————————————–
up 20210716030715 ********** NO FILE **********
down 20210716052228 Create users
____________________________________
“`

********** NO FILE **********というファイルで、
up状態のファイルを削除したい
– 削除したいファイルのマイグレー

元記事を表示

Railsで架空のCafeのHPを作ってみよう!【6日目】『複数形がないコントローラ』編

#概要
基本Railsの記法に則り書いていきます!
1から全ての説明ではなく
その中であれ?どうやるの?と
疑問に思った点や実装に困った箇所を
ピックアップして紹介していきます♩

#設定と準備
・Rails
・HTML
・CSS
・Javascript(jQuery)

↑上記の言語とフレームワークを使い
架空(自分で考えたテキトーなもの)のCafeの
HPを作っていこうと思います!

#6日目の作業内容:round_pushpin:
・テーブルの追加とそれに伴うコントローラーの作成

#6日目の気になった箇所:zap:
複数形がない単語のコントローラーって
命名規則とかあったりするの?

#仮説:pushpin:

コントローラは複数形でつけるのが好ましいとされます。

今回の場合**news**という単語でコントローラを実装したいが
この単語には複数形が存在しない。
この場合、そのままの単語でコントローラを作るのは
今後の実装において弊害があるのではないかと思った。

#結論:star:

そのままの単語で実装して問題なし!

今回の場合

“`
% rails g contr

元記事を表示

[Rails] Basic認証の導入法

##はじめに

ポートフォリオ作成中、投稿機能などが存在していて、むやみやたらにいたずらされても困るので、Basic認証を導入しました。そこまで難しくはないので、よかったら参考にしてください。Railsアプリに導入した方法です。

*※なお、このBasic認証は、安全性の観点から完全に信頼できる方法ではないので、ポートフォリオなど最悪悪さをされても深刻な被害のないようなものにだけ実装することをお勧めします。*

##Basic認証とは

Basic認証はHTTP通信の規格に備え付けられているユーザー認証の仕組みです。
ユーザーとパスワードを開発者が設定しておき、webアプリケーションのurlに飛んだ時にそのユーザー名とパスワードが求められるようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1552346/213e9ef6-79c8-e5b5-1831-1612bf89685b.png)

##Basic認証の導入
Basic認証を導入するには**authenticate_

元記事を表示

rails アプリ作成 rails6(準備編)

初学者のためメモみたいな感じです。
間違ってるところあればコメントで指摘してください!

0.githubにリポジトリ作成

1.rails new
“`
rails _6.1.4_ new session_login -d postgresql
“`
                    |ver.|             | ファイル名|

2.ディレクトリに移動

“`
$ cd session_login

“`

~/workspace/session_login (master) $ のようにディレクトリを移動したこと確認!!

忘れないように、githubと紐付けもしとく。
git add .
git commit -m”メッセージ”
git push

3.データベースの作成

rails db:createを実行することによって、config/database.ymlの設定に従って、データベースを作成する!

“`
$ rails db:create

“`

ターミナルのログでは、以下のようにデータベースが作成される

“`
Created da

元記事を表示

[Rails]param is missing or the value is empty: show

railsで開発時にエラーがでたのでメモを残します。
#解決策
上記のようなエラーが出たため調べました。

https://qiita.com/Takka_Log/items/32dae78d7e3892e7b051

上記のサイトを参考にして解決しました。
このサイトによると“`params.require(:collect)“`の部分が不要であると書かれていたため、pramsの記述を変更したところ解決しました。
#まとめ
今回は、このような方法で解決しました。

Rails – param is missing or the value is empty: エラー

しかし、上記のサイトでは、form_withにモデルを関連付けしていなかったことがエラー内容となっているので、今後はまずform_withの記述内容について正しいのか確認したい。

元記事を表示

Docker + Rails6 + MySQL8 の環境構築

# はじめに

タイトルに記述した構成で環境構築をする機会があり、その備忘録をここに残します。
元々はReactとTypeScriptを導入するつもりだったが、それはまたの機会に。

# Railsプロジェクトの新規作成

使用するDockerImageを決めて以下の記事を参考にし作成。

| Image | tag |
|:–:|:–:|
|ruby|3.0.2|
|mysql|8.0|

参考記事
[Docker + Rails6 + React + TypeScript の環境構築](https://qiita.com/yuki-endo/items/a99cdde478c2a2d057d9)

現段階の`Dockerfile`と`docker-compose.yml`、それとGemfileは以下の通り

“`Dockerfile:Dockerfile
FROM ruby:3.0.2

RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add – \
&& apt-get update \

元記事を表示

[Rails] jQueryプラグインslickを使ったカルーセルスライダーの実装

スライダー実装時にslick以外の手段も手段も検討したのですが、その中でもslickが1番使い勝手がよさそうだったので、slickに決めました。

なので今回は、jQueryのプラグインであるslickを使って、カルーセルスライダー(スライドショー)の実装をしていきます。

デモは[slickの公式サイト](https://kenwheeler.github.io/slick/)か、ぼくの[ポートフォリオ](https://oogiri-legendroad.com/)で、確認してみてください。

#開発環境

> ruby 2.6.3
> Rails 5.2.6

#前提

– jQueryが使える状態
– FontAwesomeが使える状態
– 使用する画像は各自用意して、assets/imeges直下に配置してください
– homes/topで実装

####スライダーの仕様
スライダーは自動で切り替え、手動で切り替え、両方できるように実装していきます。

– 自動で画像が切り替わる
– 矢印クリックで、画像切り替え
– 下のドットクリックで、その画像に切り替え

以上前提をふま

元記事を表示

OTHERカテゴリの最新記事