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

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

[Rails] バリデーションの書き方

Progate学習メモ

“`models/post.rb
class Post < ApplicationRecord validates :検証するカラム名, {検証する内容} end ``` # 色々なバリデーション カラムが存在するかどうか `validates :content, {presence: true}` 最大140文字まで受け付ける `validates :content, {length: {maximum: 140}}` # バリデーションをまとめて書く ```models.post.rb class Post < ApprocationRecord validates :content, {presence: true, length: {maximum: 140}} end ```

元記事を表示

railsでDATABASE_URLを使う際の注意点

# 概要
環境変数のDATABASE_URLを使うとユーザー名やパスワードなど複数の項目を1つの環境変数で指定出来て便利です。
しかしハマりポイントもあるのでDATABASE_URLを使う際の注意点を紹介します。
なお本番環境にはあまり関係ない話です。

投稿時点でのrailsのバージョンは6.0.3.2です。

# 優先順位について
database設定の優先順位は下記の通りです。

1. database.ymlのurl項目
2. 環境変数DATABASE_URL
3. database.yml

参考url
https://railsguides.jp/configuring.html#%E6%8E%A5%E7%B6%9A%E8%A8%AD%E5%AE%9A

# DATABASE_URLが使われるのは現在のRAILS_ENVだけ
DATABASE_URLが使われるのは現在のRAILS_ENVだけのようです。
しかしRAILS_ENVがdevelopmentの場合はtestに対してもtaskが実行されます。
そのためdevelopmentで `db:create` を行うとtes

元記事を表示

dockerとmysqlでrails環境を構築したけどドハマリした

dockerにrails環境を作った
https://qiita.com/NA_simple/items/5e7f95ae58eec5d20e1f

途中なぜか上手くいかないと思ったら、mysql-clientsがインストールできなくなっているらしい。書き換え方は下のURLを参考に。
https://qiita.com/yagi_eng/items/1368fb2a234629a0c8e7

調子に乗ってすすめていると、またハマる。

“`ruby:terminal
$ docker-compose run web rails db:create
Starting postgress_db … done
Could not find activesupport-5.2.4.3 in any of the sources
Run `bundle install` to install missing gems.
“`

なぜだ、、、と思ったらrubyのバージョンが違う??
rbenvでバージョンを探しても、2.7.1が見つからず。
rbenv古い事に気づき、アップデート

rbe

元記事を表示

update_attributes is deprecated and will be removed from rails 6.1

##備忘録です。

題名のとおりのwarningが出ました。

“`terminal:railsconsole
DEPRECATION WARNING: update_attributes is deprecated and will be removed from Rails 6.1 (please, use update instead)
“`

***Rails6.1からupdate_attributes***ではなく“`update“`に置き換わる(すでに使える)そうなので、書き換えたら***warning***がなくなりました。

元記事を表示

【Rails】 本番環境MySQLデータを開発環境に入れた後に消す方法

# はじめに

本番環境にMySQLのデータを開発環境に入れる時には特にエラーもなくインプットすることができたのですが、消す時になってエラーが発生してハマってしまいました。
少し珍しいケースかもしれませんが、他の方の参考になればと思いまとめることにしました。

#### 関連リンク
そもそも本番環境のMySQLのデータをどうやって開発環境に入れるのかという記事は下記をご参照ください。

* EC2からMySQL(RDS)接続後にローカルMySQLにデータを入力する方法
* https://qiita.com/syukan3/items/d73d23611c8bfccfa7e4

# エラー

開発環境でDB自体を削除するコマンドを実行したところ、、、

“`
$ rails db:drop
“`

エラー“`ActiveRecord::ProtectedEnvironmentError“`が出ました。。。

このエラーの意味は、

本番環境のDBを操作しようとしているが問題ないですか?

という警告のようなもので、環境変数を入れると操作を続けることができるよ。と言っ

元記事を表示

RailsでHerokuにデプロイしたときに一部ページだけ500エラーとなるとき

マイグレーションファイルは慎重に作成し、ミスったらやり直すくらいの覚悟じゃないとHerokuにpushして`heroku run rails db:migrate`したときに沼にハマるよという話。

##発生している問題
ローカル環境ではキチンと動くのに、([SQLite->Postgresへの対応などの基本的な設定](https://qiita.com/kazukimatsumoto/items/a0daa7281a3948701c39)を済ませてから)Herokuにデプロイするも、一部のページだけが500(Internal Server Error)となる。フロントでは「We’re sorry, but something went wrong.」なので、404の「The page you were looking for doesn’t exist.」とは違って内部的なエラーが発生している。
スクリーンショット 2020-06-23 21.58.17.pngRailsチュートリアル(第4版)メモ 第6章

Railsチュートリアル(第4版)の個人メモ
気になった部分、忘れそうな部分を記述。

– Ruby 2.6.1
– Rails 5.1.6

前章の最後 (5.4) でUsersコントローラを作成した。そのつづき。
6〜12章にかけて、ユーザ認証の各機能について作成していく。
6章ではこのうち、ユーザのデータモデル、保存について扱われている。

※ おわび
ナレッジになりきれていないメモをQiitaに上げるのが違うような気がしてきたが、
記事として所感を上げれば、それなりに反応があり、勉強にもなったため、お目汚しにはなりますが何卒ご容赦を。
そして最近Rails書いてないのだが下書が埋まってきたので放流。

# 6章 ユーザーのモデルを作成する
Railsでは認証を実装するための仕組みが既に整っているが、サービスごとに認証には多くのカスタムが必要になる。
このため、車輪の再発明にはなるが、方法を知っていればサードパーティ製の認証も実装しやすくなるので、Railsチュートリアルでは車輪を再発明している。

## 6.1 Userモデル
Railsは、データモデルとして扱うデフォルトのデ

元記事を表示

【Cookieとセッションの違い】Railsチュートリアル 8章と9章では何をしているのか

# はじめに

Rails チュートリアル8章、9章では主にログイン機能の実装をしていますが、
__session__や__cookie__など聞き慣れない用語がいきなり出てきたりして難しいと思います。

私自身、結構混乱してしまう部分もあったので、図を用いて整理してみました。

# まずCookieとセッションの違い

8章と9章の違いを理解する上で、まずCookieとセッションの違いを整理します。

### Cookieとは

__Cookie__とはWebサーバがブラウザにデータを一時的に保存し、アクセスしてきたクライアントにデータを保持させる仕組みのことです。

以下図のように、クライアントがWebサーバにアクセスすると、Webサーバがブラウザに__Cookie__を保存します。
以降、クライアントがWebサーバにアクセスする際にはこの__Cookie__も一緒に送ります。

![cookie_draw.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626975/645befa0-cc65-26

元記事を表示

【Rails】CSVエクスポート機能の実装

# 目標

![ezgif.com-video-to-gif.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579893/ac716827-b50d-3400-693e-fc52c1c3f3de.gif)

# 開発環境
・Ruby: 2.5.7
・Rails: 5.2.4
・Vagrant: 2.2.7
・VirtualBox: 6.1
・OS: macOS Catalina

# 前提

下記実装済み。

・[Slim導入](https://qiita.com/matsubishi5/items/b639ffddecc626856039)
・[Bootstrap3導入](https://qiita.com/matsubishi5/items/b117c95f4dd71340cc80)
・[投稿機能実装](https://qiita.com/matsubishi5/items/1a5aeab651b5822d1f2c)

# 実装

## 1.`application.rb`を編集

“`ruby:

元記事を表示

git pushで毎回ユーザー名とパスワードを入力を回避する方法 – SSH接続

Cloud9から`git push`するのに
毎回ユーザー名とパスワードを要求されるをなんとかしたくて調べてみた
(以下記事作成者に感謝)

[git パスワード を毎回聞かれる問題の解決方法 – Qiita](https://qiita.com/rorensu2236/items/df7d4c2cf621eeddd468)

一度ローカル環境のターミナルで設定してみて
Cloud 9から`push`してみるも認証がうまく行かず

鍵の登録はデバイスごとにする必要があります

ローカル環境で設定済みでも、
同じ手続きを再度Cloud9上で行うとSSH接続可能になりました

認証鍵の仕組みは把握していましたが
鍵?という方はこちら

[GitHubでssh接続する手順~公開鍵・秘密鍵の生成から~ – Qiita](https://qiita.com/shizuma/items/2b2f873a0034839e47ce)

SSHの仕組みについては

[プログラマーがSSH周りで知っておくと良いこと – Qiita](https://qiita.com/syou007/items/9bbc

元記事を表示

【ERROR メッセージ表示】rails 部分テンプレートでいつでも使える 簡易版

##【ゴール】
errorメッセージの表示

![画面収録 2020-06-23 18.49.15.mov.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620689/bdffee19-fbef-62f0-74a5-feb837976fb6.gif)

##【メリット】
■ UX向上
■ 部分テンプレートの理解度向上

##【開発環境】
■ Mac OS catalina
■ Ruby on Rails (5.2.4.2)
■ Virtual Box:6.1
■ Vagrant: 2.2.7

##【実装】

###アプリケーション作成
※touch はカレントディレクトリ内でfile作成するコマンド

“`mac.terminal
$ rails new error_test
$ cd error_test
$ rails g scaffold Item name:string texte:text amount:integer
$ rails db:migrate
$ cd app/views

元記事を表示

Rails6の自分流環境構築手順

cloud9で開発している方向けです。

ネットで調べると他にも方法が出てくるので、この方法が合わなかった場合は別の方法を参照してください。

## ①普遍的なRails5チュートリアルの環境構築方法

“`
$ printf “install: –no-document \nupdate: –no-document\n” >> ~/.gemrc

$ gem install rails

$ rails new アプリ名
“`

しかし、これでrails sをするとエラーが出てしまいます。

## ②serverをubuntuサーバに変える
Amazon Linuxサーバーで開発していた人はそのプロジェクトを削除し、新しくubuntuサーバーで作り直してください。
## ③yarnのインストールとwebpackerのインストール
次のようにコマンドを入力します

“`
$ npm install -g yarn
$ rails webpacker:install
“`

## ④ちょこっとタイピング

“`config/environments.development

元記事を表示

Railsアプリに独自ドメインを与えてAWSに上げても表示されない問題

「自分のアプリを独自ドメインにしてAWSに上げたろー」

ということで以下の記事を参考に自分のアプリに独自ドメインを付与しました。
https://mel.onl/onamae-domain-aws-route-53/

しかし3日待っても全く表示されない。AWSの紹介ページが表示されるだけ・・・
そこで色々調べた結果、Nginxの設定が必要であるとわかった。

Nginxの設定

EC2で

“`
[USERNAME|~]$ cd /etc/nginx/conf.d/
[USERNAME|conf.d]$ sudo vi 〇〇.conf (#自分のアプリケーション名)
“`
〇〇.confで

“`
server_name  〇〇.com;(#アプリの独自ドメインに変更してください)
“`
保存して終了。再起動する。

“`
[USERNAME|〇〇(アプリ名)]$ sudo nginx -s reload
“`

これで行けるはず!

参考文献
https://qiita.com/naoki_mochizuki/items/5a1757d222806cbe0cd1#n

元記事を表示

【RSpec devise_token_auth 】ユーザー認証トークンを渡す方法

#はじめに
devise_token_authを使用してユーザー認証をrequest specに書く際に時間がかかったので、他に同じ様なエラーで詰まっている方のお役に立てれば幸いです。
#前提
Ruby:2.6.5
Rails:6.0.3.1

テストはRSpecを使用。
ユーザー認証に`devise_auth_token`を使用しています。

#失敗するspec
“`ruby:shops_request_spec.rb
RSpec.describe “Api::V1::Shops”, type: :request do
describe “GET api/v1/shops” do
let!(:shops) { create_list(:shop, 10) }
context “認証済みのユーザーの場合” do
it “一覧を表示できる” do
get ‘/api/v1/shops’
expect(response.status).to eq(200)
expect(json.size).to eq(10

元記事を表示

Docker+Rails+Vueの環境を迷わず作成するステップ

最近勉強したDockerを使って、railsとVueの環境構築をしてみました。
いろいろ検索してやってみたものの、多くのエラーと向き合う日々を迎えることに…(それでもだいぶ理解は深まった?)

この記事では

– とにかく開発環境だけ欲しい
– 自分の忘備録

を主な対象として、最速でDokcer+Rails+Vueの環境を作成するステップをご紹介します?!
(多分エラーは出ないはず。。。)

## STEP1. 4つのファイルを作成しよう
まずは作業するフォルダ(ディレクトリ)に

– Dockerfile
– docker-compose.yml
– Gemfile
– Gemfile.lock

の4つのファイルを作成します。内容はそれぞれ以下のようにします!

“`ruby:Dockerfile
FROM ruby:2.5.3

RUN curl -sL https://deb.nodesource.com/setup_10.x | bash – && apt-get update && \
apt-get install -y nodejs –no-in

元記事を表示

Rails フリマアプリ payjpを使った購入機能の実装

# なにこれ
某スクールのカリキュラムでフリマアプリを開発しました。
そこで購入機能を実装したので、payjpの導入〜商品購入までの流れを備忘録として書きます。
細かく解説はしないで、ざっと流れを説明する記事です。
コードに縦棒が混じってますが、ご了承下さい。

#payjpをインストール
`gem ‘payjp’`をbundle installします

# ユーザーのカード情報を保存するためのcardsテーブルを作成

## なぜこのテーブルを作るのか
payjpはセキュリティの観点で、payjp側でカード番号などを管理する仕組みになっており、
開発者側の環境では暗号化されてます。
暗号化されたカード情報は保存する必要があるためです。

#
“` db/migrate/20200615032616_create_cards.rb
| class CreateCards < ActiveRecord::Migration[5.2] | |:--| | def change | | create_table :cards do |t| | | t.referen

元記事を表示

マイグレーション データ型は何が適しての??

#マイグレーションで実現できること

テーブル作成
テーブル削除
カラム追加
カラム名変更
カラムのデータ型変更
カラム削除

#マイグレーションファイル作成

マイグレーションファイルは モデルを作成した時 に一緒に作成される。
さらに マイグレーションファイル単体 で作成することも可能。

“`ruby:ターミナル
rails g model [モデル名] [属性名:データ型 属性名:データ型・・・] [オプション]

#単体で生成する場合
rails g migration マイグレーション名
“`

上記のコマンドを実行することで、db/migrateフォルダの中にマイグレーションファイルが作成される。

#データ型は何が適してるの??

|オフィシャル情報| 日本語でざっくり概要|
|:-:|:-:|
| primary_key | プライマリキー |
|string | 文字列(1〜255文字) |
| text |長い文字列(1〜4294967296文字) |
| integer |整数(4バイト) |
| bigint |整数(8バイト

元記事を表示

[Git] ファイルがどのbranchに含まているか検索する 

謎のmigrationがあるためgit log全体を検索
対象のファイルが含まれるコミットを発見

“`bash
$ git log –all — ‘db/migrate/2020323*’

commit d178513009038b0d6473de95a685c9402da14123
Author: Cozy
Date: Fri Mar 27 18:20:29 2020 +0900

〇〇のcolumn名変更

“`

あった。glob対応してるのが嬉しいね

`git branch`でコミットが含まれるbranchを検索して発見

“`
$ git branch -a –contains d178513009038b0d6473de95a685c9402da14123
remotes/origin/feature/dummy-feature-branch
“`

これにて一件落着 ?

元記事を表示

AWS☆☆☆☆ デプロイまでの道のり4-最終章(短いバージョン、全4回)

### 1)背景
第4回目の最終章です。
自身のポートフォリオをデプロイしました。最後の作業としてドメインの紐つけをします。
AWS関連手順記事はすごく多いので、ここでは備忘録も含めて、非常に端的に手順を記載します。

### 2)環境

| 項目 | 内容 |
|:—————–|:——————:|
| OS.Amazon Linux AMI | release 2018.03 |
| Ruby | v2.5.1 |
| Ruby On Rails | v5.2.4.3 |
| MySQL | v5.6 |
| Unicorn | v5.4.1 |

### <

元記事を表示

【CircleCI】GitHubへプッシュ時に自動デプロイする際の手順

今まで自動デプロイは「capistrano」を使用していましたが、毎回コードを修正するたびにローカルでmasterマージして、「bundle exec cap production deploy」を実行していました。

今回はcircleCIを使用し、masterマージされたら自動でサーバーへSSHしてコードをデプロイするように実装してみました。
以下、実装の際の流れや詰まった部分の解説をまとめていきます!

– 開発環境

– ruby : 2.5.1
– rails : 2.4.2.3
– circleCI : 2.1

※ dockerは今回使用していません。

# .circleci/config.ymlの設定
①最初にcircleCIで使うconfig.ymlの設定をローカルでしていきます。
circleCIの設定は、該当リポジトリのルート直下に.circleciと言うフォルダを作り、その中のconfig.ymlで行います。

– config.ymlに以下を追記。

“`config.yml
version: 2.1
orbs:
ruby: circleci/ru

元記事を表示

OTHERカテゴリの最新記事