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

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

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

元記事を表示

【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+MySQLで参照整合性の崩壊を引き起こすデータ操作を検証してみた

## モチベーション

「スッキリわかるSQL入門」という書籍を進めていて、参照整合性の崩壊を引き起こすデータ操作が4パターンあるとのことを知り、外部キー周りの理解がなんとなくだったので実際に手を動かして検証してみようと思いました。

## 目的

この記事では、参照整合性の崩壊を引き起こすデータ操作を行った際に実際にどのような挙動になり、どのようにすれば防げるのかをRails+MySQLで検証します。

## 参照整合性とは

外部キーが指し示す先にきちんと行が存在してリレーションシップが成立していること。

## 参照整合性の崩壊を引き起こすデータ操作

「スッキリわかるSQL入門」という書籍で参照整合性の崩壊を引き起こすデータ操作として次の4つのパターンがあるとのことでした。

この4つのパターンを実際に試していこうと思います。

1. 「ほかの行から参照されている」行を削除してしまう
2. 「ほかの行から参照されている」行の主キーを変更してしまう
3. 「存在しない行を参照する」行を追加してしまう
4. 「存在しない行を参照する」行に更新してしまう

## 今回登場するテーブ

元記事を表示

【Error対応】Unpermitted parameters: :format, :registration について

# はじめに

React、Rails APIでSPAを開発しているのですが、標記エラーに遭遇しました。
忘備録として、また同じエラーに遭遇した人に向けて、記事として残そうと思います。

# エラー

ログイン機能を実装するためにdevise_token_authを使っているのですが、実装後、テストのためReact <=> Rails API間の通信時にエラーが発生しました。

調べる前に、エラー分をよく読んでみます。

翻訳通り、許可されていないパラメータをやりとりしているから?なのでしょうか、でもログイン処理は完了していました。

“`
web_1 | Unpermitted parameters: :format, :registration
web_1 | Unpermitted parameters: :format, :registration
web_1 | Unpermitted parameters: :format, :registration
“`

# 対応

調べた結果、通信を受けるAPI側でストロングパラメータの定義がまずかったことが判明。
req

元記事を表示

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

元記事を表示

Heroku ステージング環境から本番環境にプロモートできない

# 内容
アプリをherokuのステージング環境にデプロイしており、動作確認が完了したので本番環境にプロモートしようとしたところ

“`
Fetching app info…
Fetching apps from app-name-pipeline…
Starting promotion to production…
Waiting for promotion to complete…
Fetching release info…
Running release command…
rails aborted!
PG::ConnectionBad: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket “/var/run/postgresql/.s.PGSQL.5432”?

Tasks: TOP => db:migrat

元記事を表示

【Docker】rails db:migrateできないエラー(メモ)

##開発環境

Ruby 2.7.4
Rails 6.1.4.1
PostgreSQL 13.4

##記事内容
Docker上でrails6の環境構築後、`rails db:migrate`を行なったときにいくつかエラーが発生したので記録する。
エラーで指摘された部分は`/config/database.yml`(以下)である

“`rb
default: &default
adapter: postgresql
encoding: unicode
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
host: db
username: root
password: password

development:
<<: *default database: docker_practice_development ``` --- ###①ホスト名"db"をアドレスに変換できない ####エラー内容 ```console rails aborte ActiveRecord::Connection

元記事を表示

Railsのconnection poolについて理解する

## 本記事の目的と結論
railsのconnection pool管理について、
1. 何個まで接続を保持できるのか __→ デフォルト5個、database.yamlから設定値を取得__
2. 別DBへの繋ぎ直し時のconnection poolの管理 __→ pool_managerを用いて、DB毎にhashで管理している__

version
rails: 6.1.4
ruby: 3.0.2

## 背景
複数DBを用いたアーキテクチャをrailsで実装する。
DB間の接続切り替えを行った際のconnection poolの管理を調査し、オーバーヘッドがどの程度発生するのか確認したい

## connection poolとは
DBの接続状態を確立したコネクションを保持しておき、再利用することでDB接続時間を短縮するもの

## 1. 何個まで接続を保持できるのか
[公式ドキュメント](https://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/ConnectionPool.html)によると、
>

元記事を表示

Webアプリケーションにおける通信の仕組み(1)

# はじめに
 Webアプリを初めて作成したので、そのまとめとしてWebアプリケーションでどのように通信が行われているのかをアウトプットしようと思い、この記事を投稿しました。

 今回のテーマとしては、Webアプリケーションにおけるクライアントとサーバ間の通信がどのように行われているかをアウトプットしていきたいと思います。間違っている事があるかもしれないので、その場合は指摘していただいて大丈夫です。

# Webアプリケーションってなんだ?
 そもそもWebアプリケーションとは、利用者(ユーザー)がインターネットを通して、ブラウザ(Webサーバーに接続するためのソフトウェア)で操作をするアプリケーションのことです。クライアント側ではアプリケーションのインストールをする事なく利用できたり、処理がサーバ側で行われるので、クライアント側は何もしなくても新しいサービスを受ける事ができるのが利点です。例えば、YoutubeやGmail、クックパッドなどが挙げられます。皆さんも一度は使った事があるのではないでしょうか。以下の図は、大まかにWebアプリケーションの通信をまとめたものです。

![スク

元記事を表示

RailsでBootstrapのハンバーガーメニューが動作しない

Railsアプリ開発中に出会った問題についてまとめています。

今回は、`Bootstrap5`のハンバーガーメニューが正常に動作しない問題に直面しました。

開発環境
– Ruby 2.7.3
– Rails 6.1.4.1
– Bootstrap 5.1

調べたところ、Bootstrap 4系から5系で破壊的な変更が行われた影響で、`Bootstrap5ではRails6においてハンバーガーメニューが正常に動作しない`らしい。

そのため、正常に動作することが確認されている`Bootstrapのバージョンをダウングレードする`ことにした。

`Bootstrap4.6系でもハンバーガーメニューは正常に動作しない`ようなので、`Bootstrap4.5系`を利用した。
下記のコマンドでバージョンを更新できる。ダウングレードであっても`upgrade`と記述する点は注意したい。

“`ruby:ターミナル
yarn upgrade bootstrap@~4.5.1
“`

`Bootstrap4系`では`jquery`が必要になるため、こちらもインストール

“`ruby:ターミ

元記事を表示

【EC2】EC2にrailsのアプリをデプロイする方法 No.1(ログイン〜環境構築まで)

# はじめに
今回はAWSのEC2を使ってデプロイする方法を解説します。
具体的な設定方法がわからない方はぜひ参考にしてください。

AWSやEC2のサーバー作成方法については下記の記事でまとめております。
疑問点がある方はぜひこちらを参照してください。

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

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

※なお、今回の記事ではEC2でサーバーはすでに作成済みの流れで進めていきます。


# 手順1 EC2にSSHでログインする

①ダウンロードしたキーペアの権限を変更する

ます、EC2インスタンス作成の際に発行されるキーペアの権限を変更します。
EC2インスタンスの作成方法についてはこちらの記事を参考にしてください。
https://qiita.com/kenta-nishimoto-1111/items/4760b

元記事を表示

【Mac】rbenv versionsとruby -vでバージョンが違う時の解決法

ruby versionsの時

“`
$ ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x86_64-darwin20]
“`

ruby -vの時

“`
$ ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.x86_64-darwin20]
“`

Rubyのバージョンが違うことがわかります。
この問題解決に2時間くらいかかったので投稿しようと思います。

解決策

“`
$ echo ‘eval “$(rbenv init -)”‘ >> ~/.bash_profile
$ source ~/.bash_profile
$ rbenv global 3.0.2
“`

結論この3行を上から順番にターミナルに打つと問題解決できました。
めでたしめでたし

元記事を表示

Rails コントローラーのアクションについて

#アクションとは
ユーザーからリクエストを受けたときサーバー側でどのような処理をするのかを
***アクション(動作)***と言います。
アクションはapp/controllers/〜controller.rbつまりコントローラーの中に作成されます。
今回のコントローラーはsportsコントローラーにします。

“`sports_controller.rb

class SportsController < ApplicationController def baseball render plain: "野球" end ``` ⚫︎補足 render plainを使うとブラウザで表示できる。 ```routes.rb Rails.application.routes.draw do get "/yakyu", to:"sports#baseball" end ``` railsサーバーを起動 localhost/3000/yakyuでブラウザには野球と表示されます。 ルーティングの中身を見てみると/yakyuをURLで指定すると S

元記事を表示

OTHERカテゴリの最新記事