fv17の日記

Webエンジニアの備忘用ブログです。主にWeb界隈の技術に関して書いています。

Rails

RSpecがRandom failする場合の調査方法や対処方法

Random failする理由は様々ですが、下記を見てみます。 それぞれの詳細は別途ググって見てください。 feature specでCapybara::ElementNotFound等で落ちる場合 データ不整合等の理由で、特定の実行順で落ちる場合 1. feature specでCapybara::ElementNotFoun…

Blocked hostエラー@Rails6から導入された「DNSリバインディング攻撃からの保護」について

HerokuにRails6アプリをデプロイしたところ、下記のエラーが表示された。調べてみたところ、Rails6から導入された「DNSリバインディング攻撃からの保護」関連のエラーとのこと Blocked host: hoge.herokuapp.com To allow requests to hoge.herokuapp.com, a…

Rails6 + postgresql 12.3 + docker + heroku

参考 Quickstart: Compose and Rails | Docker Documentation Dockerを使ってRails6環境の構築をしてみる - Qiita RailsアプリをDockerで作ってCircleCIで自動テストしてHerokuにデプロイした話 - Qiita メモ Docker 公式Docの方法はRails5までの対応で、Rai…

Railsのアセットパイプラインについて

自分用メモ 参考 アセットパイプライン - Railsガイド 実装 メイン sprockets-rails gem 関連gem gem 'sass-rails' gem 'uglifier' gem 'coffee-rails' 機能 アセットを連結 ブラウザがWebページをレンダリングするためのリクエスト数を減らし、速度向上 ア…

railsのrequestオブジェクトの使い方

www.rubydoc.info

【Rails】active adminで最速で管理画面を作る

Github https://github.com/activeadmin/activeadminDemo http://demo.activeadmin.info/adminDocs https://activeadmin.info/0-installation.htmlWiki https://github.com/activeadmin/activeadmin/wikiQiita qiita.com

Ruby、Railsで日付を扱う

下記参照qiita.com

Rails - バージョン5.2よりconfig/secrets.ymlが仕様変更

下記参照 qiita.com

Rails - Guardを使い、ファイル変更時にMinitestやRspecを自動実行する

やりたいこと ファイル更新時にテストを自動で行う 例えば、home.html.erbファイルが変更されたらstatic_pages_controller_test.rbを自動的に実行する Gemfileの設定 次の2行を追加 group :test do gem 'guard', '2.13.0' gem 'guard-minitest', '2.4.4' end…

Rails - 生成したコントローラやモデル、および実行したマイグレーションを元に戻す方法

コントローラ # 作成 rails generate controller StaticPages action1 action2 # 削除 reils destory controller StaticPages action1 action2 モデル # 作成 rails generate model User name:string email:string # 削除 rails destroy model User # モデル…

bundle install時に"An error occurred while installing mysql2 (0.4.9), and Bundler cannot continue."でコケる場合の対処法

エラー発生手順 MySQLをインストール brew install mysql@5.7 brew tap homebrew/services brew services start mysql@5.7 アプリケーションのディレクトリでbundle install git clone <クローン対象のURL> cd <対象ディレクトリ> bundle install 発生したエ…

Rails - 3000以外の別ポートで起動する

pオプションを付ける rails s -p <ポート番号>具体例 rails s -p 3001 利用例 複数バージョン立ち上げ時に、すでにポート3000使われてるエラーを回避。 Address already in use - bind(2) for "0.0.0.0" port 3000 (Errno::EADDRINUSE)

Rails - フレンドリーフォワーディング

はじめに 詳細は、Rails tutorial 第10章の「フレンドリーフォワーディング」を参照。 https://railstutorial.jp/chapters/updating_and_deleting_users?version=5.1#sec-friendly_forwardingTutorialですぐに理解できなかったので復習用としてまとめてみま…

Rails - formからpostする時にurlを指定する

はじめに ルーティングをresourcesではなく、直接指定したい場合の方法。 方法 urlを直接指定する場合 route.rb post '/signup', to: 'users#create' form form_forの引数にurlオプションを付ける <%= form_for(@user, url: signup_path) do |f| %> <%= f.la…

Rails - セキュアなパスワードの追加

1.modelにhas_secure_passwordを追加 class User < ApplicationRecord . . has_secure_password end 2.modelにpassword_digestという属性を追加 マイグレーションファイルの作成 rails g migration add_password_digest_to_users password_digest:string マ…

Rails - modelのvalidatation

参考 Active Record の基礎 | Rails ガイド Active Record バリデーション | Rails ガイド presence / 存在性 validates :email, presence: true length / 長さ validates :name, length: { minimum: 5 } validates :email, length: { maximum: 255 } valida…

Rails - データベースにカラムを追加する

マイグレーションの作成 rails g migration add_<column_name>_to_<table name> <column name>:<型>例えば、 rails g migration add_favorite_subject_to_users favorite_subject:string マイグレーションの定義 class AddFavoriteSubjectToUsers < ActiveRecord::Migration[5.0] def change add_co</column></table></column_name>…

Rails - データベースのカラムにindexを追加する

マイグレーションの作成 rails generate migration add_index_to_<table name>_<column name>例えば、 rails generate migration add_index_to_users_email マイグレーションの定義 一意制約を付与したい場合はuniqueオプションを追加する class AddIndexToUsersEmail < ActiveRecord:</column></table>…

Rails - modelまわりのメソッド一覧(CRUD)

Create / 生成 new 機能:モデルオブジェクトの作成。データベースには保存はしない user = User.new属性値の指定もできる user = User.new(name: "Foo Bar", email: "foo@bar.com") save 機能:生成したモデルオブジェクトをデータベースに保存 返り値:保…

Rails - モデルの作成

rails generate model YourModelName column1_name:<型> column2_name:<型>例えば、 rails generate model User name:string email:string

Rails - パーシャルによる切り出し

やり方 切り出したい部分を に書き換え app/views/layouts以下に _xxxxx.html.erb を追加 (「_」アンダーバー忘れずに) 以下、app/views/layouts/application.html.erbのheaderタグをパーシャルで切り出す具体例 パーシャルで切り出す前 app/views/layouts/a…

【Rails】_path書式と_url書式の使い分け

基本:_path書式 リダイレクト:_url書式

RubyとRails関連のドキュメント一覧

Ruby るりまサーチhttps://docs.ruby-lang.org/ja/search/ Rails APIドキュメントhttps://api.rubyonrails.org/

minitestでテスト結果をRED、GREENのBARで表示する

minitest-reporters gemを導入する。 記述方法はRails tutorialの「3.6.1 minitest reporters」を参照 https://railstutorial.jp/chapters/static_pages?version=5.1#sec-minitest_reporters

Rails - コントローラの作成

rails generate controller YourContrllerName yourAction1 yourAction2なお、削除は rails destroy controller YourContrllerName yourAction1 yourAction2 Tips Railsの慣習で、コントローラ名には複数形を使い、モデル名には単数形を用いる

bundle install と bundle update の違い

概要 bundle install Gemfile.lockを元にgemをinstall。 Gemfile.lockが存在しない場合、Gemfileを元にgemをinstallした後、Gemfile.lockを作成。 bundle update Gemfile.lockを無視し、Gemfileを元にgemをinstall後、Gemfile.lockを更新する。 Gemfile.lock…

Rails - 画面毎にtitleタグの中身を変更する

view側の実装 <% provide(:title, "your title name") %>app/views/layouts/application.html.erbの実装 <head> <title><%= yield(:title) %></title> </head>

Rails - アプリの新規作成からherokuへのデプロイまでのコマンド一覧

railsアプリケーション作成 rails _5.x.x_ new sample_app bundle install --without production bundle update コミット git init git add -A git commit -m 'xxxxxxxxxx' bitbucketにリポジトリ作成後にpush bitbucket上で操作 bitbucket.org heroku上にア…