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

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

herokuを使ってデプロイしているアプリのデータベースをSequelProで可視化する!

作ったアプリをherokuを使ってデプロイしたはいいけど、データベースが…となったので、SequelProで可視化するためのメモを書いていきます。

#開発環境
* M1 Mac
* vscode
* ruby 3.0
* rails 6.1
* herokuにデプロイ済み

# いざデータベースの可視化

## step1
1. ターミナルより対象アプリのディレクトリに移動
1. “heroku config“を実行![スクリーンショット 2021-10-17 9.54.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1645779/60a9bd5d-1ad2-89e6-adc8-760cab3f1c8f.png)

CLEADB_DATABASE_URLに注目です!

## step2
SequelProに必要情報を記述していきます。
先ほど確認したCLEADB_DATABASE_URLは以下のような構造になっています。

“`
CLEARDB_DATABASE_URL: mysql:

元記事を表示

【Rails】「教材シェア」アプリを作成しました②

## 1.はじめに
閲覧していただきありがとうございます。
前回作成したアプリをさらに改善、機能を追加しました。
そのときの開発の苦悩などをまとめました。
よろしければ、ご覧ください。
## 2.関連URL
アプリ:https://teaching-materials-app.herokuapp.com/
Github:https://github.com/suugakusan/teaching_materials_app
前回のQiita:https://qiita.com/suugakusan/items/15b5b6e9b81726344342
## 3.機能一覧
| |機能 |gem |
|:—: |:—: |:—: |
|1 |ログイン・ログアウト |× |
|2 |アカウント登録 |× |
|3 |教材検索 |× |
|4 |教材投稿 |carrierwave |
|5 |ページネーション |pagy |
|6 |レスポンシブ |Bootstrap |
|7 |ゲストログイン |× |
|8 |記事投稿機能(CRUD

元記事を表示

Rails Cloud9からローカル環境へ(備忘録)

##初めて投稿!

AWSの無料期間がもうそろそろ終わるので、
Cloud9にあったプロジェクトをローカル環境に移管した。

まだまだ初心者のためいろいろと苦労したので、備忘録として記録。

——

##環境

・macOS BigSur 11.6
・Ruby 2.5.3
・Rails 5.2.6
・Homebrew 3.2.16

—–

##rbenvのインストール
Rubyのバージョン管理はrbenvとrvmがあるらしい。
色々調べてrvmは面倒そうだったので、rbenvをインストール

“`
% brew install rbenv ruby-build
“`

設定ファイルの記載方法を確認

“`
% rbenv init
# Load rbenv automatically by appending
# the following to ~/.zshrc:

eval “$(rbenv init – zsh)”
“`
設定ファイルに書き込み(PASSを通すっていうのか?)

“`
% echo ‘eval “$(rbenv init -)”‘ >>

元記事を表示

railsチュートリアル第八章 フラッシュメッセージを表示させる

###フラッシュメッセージを表示させる

####ログイン失敗時の処理を扱う
app/controllers/sessions_controller.rb

“`rb
class SessionsController < ApplicationController def new end def create user = User.find_by(email: params[:session][:email].downcase) # 送信されたメアドを使ってデータベースから取り出す。 #emailを小文字にする if user && user.authenticate(params[:session][:password]) # user 取得したユーザーが有効かどうか? # その後にデータベース上にパスワードがあるか? # ユーザーログイン後にユーザー情報のページにリダイレクトする else flash[:danger] = 'Invalid email/password com

元記事を表示

railsチュートリアル第八章

###ユーザーの検索と認証
####Sessionsコントローラのcreateアクション
app/controllers/sessions_controller.rb

“`rb
class SessionsController < ApplicationController def new end def create # 新規ユーザー作成 render 'new' # newアクションのビューを表示させる end def destroy # ユーザー削除 end end ``` デバッグ情報 paramsハッシュでは、次のようにsessionキーの下にメールアドレスとパスワード ``` --- !ruby/object:ActionController::Parameters parameters: !ruby/hash:ActiveSupport::HashWithIndifferentAccess authenticity_token: s9oeKxILHYOKGNouY+o5HHYogso0J+Rba3Nuss

元記事を表示

railsチュートリアル第八章 ログインフォーム

###ログインフォーム
ログインフォームのビューを整える。

“`html
<% provide(:title, "Log in") %>

Log in

<%= form_with(url: login_path, scope: :session, local: true) do |f| %>

<%= f.label :email %>
<%= f.email_field :email, class: 'form-control' %>

<%= f.label :password %>
<%= f.password_field :password, class: 'form-control' %>

<%= f.submit "Log in", class: "btn btn-

元記事を表示

Ruby特有のif文

Rubyを勉強し始めて1日目
初心者として気になったこと・躓いたことを備忘録として残していこうと思います。

#構文

“`ruby:if文
if 条件A
# 条件Aが真だった場合の処理
elsif 条件B
# 条件Bが真だった場合の処理
elsif 条件C
# 条件Cが真だった場合の処理
else
# どの条件に対しても真にならなかった場合の処理
end
“`
:::note warn
複数条件の場合は、else ifではなくelsifです。
:::
JavaScriptなどの言語から勉強している方は注意が必要です。(私も間違えやすい…)

##便利な性質
###戻り値を返す
Rubyのif文は戻り値を返すため、変数に戻り値を代入することができます。
以下は時間帯によって表示する挨拶を変更するコード例です。

“`ruby:戻り値を変数に代入する
time_zone = ‘夜’

greeting =
if time_zone == ‘朝’
‘おはよう’
elsif time_zone == ‘昼’
‘こんにちは’
elsif

元記事を表示

テストコードについて!

#①.結論!

テストコードとは、アプリケーション内に記述する、そのアプリケーションの挙動を確認するためのコードのことです!

Ruby on Rails内にも、アプリケーションのテストコードを記述する機能を設けることが出来ます!

その機能は「RSpec」というGemを使うことで便利に実装できます!

#②.なぜテストコードを書くのか?

テストコードを書く意義は大きく分けて2つあります!

1・クオリティの担保ができる!

ブラウザデアピリケーションの挙動を確認するのは、デメリットの方が多いです!

主な理由は3つです!

・人為的なミスが生じるかもしれない!
・仕様が変更した際に、もう1度全部やらないといけない!
・どのように確認したか、記録が残らない!

このようなことがあります!

2・仕様を見極めることが出来る!
テストコード書くことが出来れば、アプリケーションの仕様を理解していることになる!

主な理由は2つです!

・テストすべき項目を洗い出すときに使用を見極めることが出来る!
・テストコードを書ける人は、仕様を理解している人!

以上が、テストコードを書くための理由

元記事を表示

[Rails]パーシャル内パーシャルのrender繰り返しを防ぐには

# ハマった点

投稿一覧ページに「いいねボタン」を設置する際、各投稿のパーシャルをrenderする際の繰り返しは、collectionオプションにて解決できた。

しかし、各投稿のパーシャルの中でrenderしているパーシャルにおいては、投稿の分だけrenderの繰り返しが発生してしまう。

 ↓実際のログ

このrenderのせいで、たった25件の投稿表示に1800ms以上の時間がかかってしまう。しかも、Ajaxによる非同期処理でいいねボタンの切り替えを実装しているため(DRYの観点でも)、いいねボタンをパーシャル化しなければならない。(他に方法があれば知りたいです!) 同じ状況の方も多いのでは?

# 解決策
renderの**layoutオプション**と**yieldメソッド**を使うことで解決した。

# E

元記事を表示

Prefix_pathに引数を入れる理由

こんにちは!テックアカデミーのWebアプリコースを受講している駆け出し高校生エンジニアの安田駿介です。

今回は、「Ruby <%= %>内でstyle要素を書く方法」というテーマで解説していきます。

#Prefix_pathに引数を入れる理由
結論を言うと、Prefix_pathで呼び出すURLに、引数の内容を補足するためです。

例えば、
![cc3b604c13ba618ca6b9889defddc205.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1903726/14e5e8ea-80ce-032a-d173-1792c2c89a77.png)
というコードがあったとします。

このコードの意味は、「作成したレコード一覧のページを表示する」です。

これに(current_user)という引数を指定すると、

![eb824e503c0e4a3b5d5f53b53d71903d.png](https://qiita-image-store.s3.ap-northeast-1.amazonaw

元記事を表示

【Rails】Qiita デイリー LGTM 数ランキング【自動更新】

# 他のタグ

[`AWS`](https://qiita.com/items/8c4aeec4fc98e4b1ba0e) [`Android`](https://qiita.com/items/9c6bf21a9880e242a0d6) [`Docker`](https://qiita.com/items/70aa655b580ed4f91756) [`Git`](https://qiita.com/items/36cfb2318aabe8b3f8df) [`Go`](https://qiita.com/items/16809f8444e0329bed8a) [`iOS`](https://qiita.com/items/da7fabcf41ed103528ae) [`Java`](https://qiita.com/items/9003b8beb47a46292028) [`JavaScript`](https://qiita.com/items/31e7365a838b890f7cc3) [`Linux`](https://qiita.com/items/7bcae94b268b

元記事を表示

[Rails] 「ゲームセンターを救いたい!」という想いでポートフォリオ作りました。

# アケイベ
![PF動画.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/974719/192ebf2f-4dd8-946d-4ac3-2de2735e1326.gif)

# アプリ概要
**コロナ渦で消えゆくゲームセンターを救いたい!** という気持ちで作成したゲームセンター開催限定のイベント投稿型サービスです。

# 作成した背景
### ゲームセンター を救いたいという想い
私は元々ゲームセンターで働き、休日でも都内各地のゲームセンターに通うくらいゲームセンター独特の雰囲気、コミュニティが大好きでした。 そんな大好きなゲームセンターがコロナ渦で続々と閉店していくのを見て今の自分に何ができるのかを考え作成しました。

イベント投稿型にした理由は、

– イベントを開催することでコミュニティが広がるだけじゃなく集客にも繋がりやすい。
– ゲームセンター側での告知(Twitter、HP)だけでは限界があることを知っている。
– イベント主催者をお客さん側に任せることでゲームセンター側の人件費が減らせる

元記事を表示

【図解】Hotwire : Turbo 7つのアクション

# はじめに
チュートリアルでHotwireの基本を学んだ後に、Railsアプリでサンプルページを作りながら、Turboで用意されてる7つのアクションについて動作確認した結果を図解しました。

## Turboで用意されてる7つのアクション
– Append / Prepend
– Replace
– Update
– Remove
– Before / After

## ざっくり見たい方向け
![all.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141934/468df35c-fc68-77f9-db28-f087e5bc54a6.png)

## 公式ドキュメント
[Turbo Reference](https://turbo.hotwired.dev/reference/streams)

# アクション

## append
`append`は指定したTurboFrameの中の最後に要素を追加します。

### 図解
![append.png](https://qiita-image-s

元記事を表示

【個人用】rails tutorial -2

本章の学習内容

大量の機能を自動生成するscaffoldジェネレータというスクリプトを使ってアプリケーションを生成し、高度なRailsプログラミングとWebプログラミングの概要を学ぶこと

ユーザーモデルの設計

各ユーザーには、重複のない一意のキーとなるinteger型のID番号(idと呼びます)を割り当て、このIDに加えて一般公開されるstring型の名前(name)、そして同じくstring型のメールアドレス(email)を持たせます。emailはユーザー名としても使われる

マイクロポストのモデル設計

テキスト内容を格納するtext型のcontentだけで構成されています 。しかし実際には、マイクロポストをユーザーと関連付ける必要があります。そのため、マイクロポストの投稿者を記録するためのuser_idも追加します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1617255/a19fe1f

元記事を表示

collectionとmemberについて!

#①.結論!

collectionとmemberは、ルーティングを設定する際に使用でき、生成されるURLとコントローラーを

任意にカスタムできるメソッドのことです!

collectionはルーティングに:idがつかない!

memberは:idがつくという違いがあります!

1つずつ使用例を見ていきましょう!

#②.collection

collectionで定義した場合は、以下のように例になります!

“`php:routes.rb
Rails.application.routes.draw do
resources :eats do
collection do
get ‘search’
end
end
end
“`

collectionのルーティング

“`php
Prefix Verb URI Pattern
search_eats GET /eats/search(.:format) eats

元記事を表示

devise_token_authの使い方

#devise_token_authとは
***新規登録、ログイン、ログアウトなどの機能を実装する時に、***
使用し、***トークン認証***という、“`ユーザー認証“`ができるgemです。
この記事ではdevise_token_authの設定を説明していきます。

#Gemfileの設定
まずはGemfileの設定からです。
下のgemをGemfileに追記します。

“`Gemfile
gem “devise”
gem “devise_token_auth”
gem ‘rack-cors’    #URLのアクセスが重複することを許可してくれる。
“`
その後“`bundle install“`をします。

#インストール
下のコマンドでインストールします。

“`
rails g devise:install
“`
でdeviseをインストールします。

“`
rails g devise_token_auth:install User auth
“`
devise_token_authをインストールします。
“`authは認証“`のことです。

元記事を表示

バリデーションエラーを日本語にする

#目的
ここでは、バリデーションエラーを日本語にする方法の大枠を記述します。(モデル名以外)
ちなみに、モデル名やdeviseのエラー文を日本語設定したい場合は、参考文献からのリンク記事を参考にしてください!

##開発環境
rails6.0.0
mysql

##参考文献
こちらを参考にさせていただいております!
本当にわかりやすくてありがとうございました!!
[■Railsのバリデーションエラーのメッセージの日本語化](https://qiita.com/Ushinji/items/242bfba84df7a5a67d5b)
→モデル名まで日本語にしたい方は、こちらをご参考ください!

[■translation missing: ja.activerecord〜のエラー対応](https://qiita.com/nkekisasa222/items/0c566ced53f7ee47d67d)
[■https://github.com/tigrish/devise-i18n/blob/master/rails/locales/ja.yml](https://github.com

元記事を表示

railsチュートリアル第八章 基本的なログイン機構

今回はユーザーがログインやログアウトを行う。
本章では、ログインの基本的な仕組みを実装
ブラウザがログインしている状態を保持し、ユーザーによってブラウザが閉じられたら状態を破棄するといった仕組み
ログイン済みのユーザー(current user)だけがアクセスできるページや、扱える機能などを制御していきます。
このような制限や制御の仕組みを認可モデル(Authorization Model)という。

##セッション
ユーザーログインの必要なWebアプリケーションでは、セッション(Session)と呼ばれる半永続的な接続をコンピュータ間(ユーザーのパソコンのWebブラウザとRailsサーバーなど)に別途設定します。

Railsでセッションを実装する方法として最も一般的なのは、cookiesを使う方法
….。

新しいブランチを作る

“`
$ git checkout -b basic-login
“`
###Sessionsコントローラ
ここでは“`new“`アクションを作る

“`rb
ubuntu:~/environment/sample_app (basic-

元記事を表示

railsチュートリアル第七章 プロのデプロイ

##プロのデプロイ

“`
$ git add -A
$ git commit -m “Finish user signup”
$ git checkout master
$ git merge sign-up
“`

###本番環境でのSSL
ユーザー情報が流出する可能性がある。
ネットワークに流れる前に情報を暗号化させる技術TLS(略称)がある。
今回はユーザー登録ページのためだけにSSLを導入できる。以下利点
・Webサイト全体で適用
・ログイン機構をセキュア
・セッションハイジャック(Session Hijacking)の脆弱性に対しても多くの利点

SSLを有効化するのも簡単です。production.rbという本番環境の設定ファイルの1行を修正するだけで済みます。
configに「本番環境ではSSLを使うようにする」という設定をするだけです

###演習
1.ブラウザから本番環境(Heroku)にアクセスし、SSLの鍵マークがかかっているか、URLがhttpsになっているかどうかを確認してみましょう。
確認

2.本番環境でユーザーを作成してみましょう。Gravatar

元記事を表示

railsチュートリアル第七章 実際のユーザー登録 成功時のテスト

###実際のユーザー登録
今まで実験でユーザー登録をしているので一度リセット

“`
$ rails db:migrate:reset
“`
“` rails s“`でサーバーを起動させる。
新しくユーザー情報を登録し、flashのメッセージを表示させる
再読み込みするとメッセージがなくなる。

###演習
1.Railsコンソールを使って、新しいユーザーが本当に作成されたのかもう一度チェックしてみましょう。結果は、リスト 7.30のようになるはずです。

“`
>> User.all
User Load (0.2ms) SELECT “users”.* FROM “users” LIMIT ? [[“LIMIT”, 11]]
=> #

元記事を表示

OTHERカテゴリの最新記事