- 1. [Rails] バリデーションの書き方
- 2. railsでDATABASE_URLを使う際の注意点
- 3. dockerとmysqlでrails環境を構築したけどドハマリした
- 4. update_attributes is deprecated and will be removed from rails 6.1
- 5. 【Rails】 本番環境MySQLデータを開発環境に入れた後に消す方法
- 6. RailsでHerokuにデプロイしたときに一部ページだけ500エラーとなるとき
- 7. Railsチュートリアル(第4版)メモ 第6章
- 8. 【Cookieとセッションの違い】Railsチュートリアル 8章と9章では何をしているのか
- 9. 【Rails】CSVエクスポート機能の実装
- 10. git pushで毎回ユーザー名とパスワードを入力を回避する方法 – SSH接続
- 11. 【ERROR メッセージ表示】rails 部分テンプレートでいつでも使える 簡易版
- 12. Rails6の自分流環境構築手順
- 13. Railsアプリに独自ドメインを与えてAWSに上げても表示されない問題
- 14. 【RSpec devise_token_auth 】ユーザー認証トークンを渡す方法
- 15. Docker+Rails+Vueの環境を迷わず作成するステップ
- 16. Rails フリマアプリ payjpを使った購入機能の実装
- 17. マイグレーション データ型は何が適しての??
- 18. [Git] ファイルがどのbranchに含まているか検索する
- 19. AWS☆☆☆☆ デプロイまでの道のり4-最終章(短いバージョン、全4回)
- 20. 【CircleCI】GitHubへプッシュ時に自動デプロイする際の手順
[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.」とは違って内部的なエラーが発生している。
Railsチュートリアル(第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.3RUN 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