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

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

ArgumentErrorのエラーについて

#結論。

#### 引数が間違ってる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1789450/7f3d6dff-28de-2a7b-992c-9b47dec78547.png)

“`
wrong number of arguments (given 0, expected 1)
“`
given ⇒ 実際コードに書かれてる引数の数
expected ⇒ 本来あるべき引数の数

経緯は忘れました。

元記事を表示

【個人開発】Web上でチームで同時に操作できる、手動統合テスト記録ツール「Itamaster」を開発しました!

![itamaster_twitter_icon.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889393/560cbb90-55a3-f88a-2fe3-a0ddc9249acb.png)

現在システムはベータ版です。
アクセス時、利用できない機能、未実装の機能が存在することがあります。
DBはベータテスト終了時に初期化予定ですので、重要なデータは入力をお控えください。
機能の追加、バグの修正、ベータ版の終了や、アルファ版リリースについてはtwitterで発信致します。

# サイトの概要
**Itamaster**は、Web上で統合テストを設計、管理し、直感的な操作で実行が可能なサービスです。

テストには前提条件、手順、期待する結果を複数登録でき、実行ログは全てサーバーに保存されます。
チームには他のユーザーを招待し、複数人で同時にテストの管理、実行が可能です。

また、システムはテスト結果を複数の選択肢からテンプレートを選択し

元記事を表示

画像投稿機能を追加するgem「CarrierWave」ruby on rails 写真アップロード機能

ここでは画像投稿機能を追加する方法について書いています。
Twitter風やInstagram風など、テキストだけではなく画像なども投稿する機能が欲しい場合は「**CarrierWave**」というgemを追加します。

**環境**
>Windows10
>VS code
>ruby 2.7
>Rails 6.1.4

**二つのgemを導入する**
ひな形の準備:scaffold
画像投稿機能:CarrierWave

#まずはscaffoldというgemでモデルやコントローラー、ビューを一括で作成

railsではモデルやビューやコントローラなどを作る必要があります。
いちから作っていると面倒なので「scaffold」というgemを使います。
railsアプリケーションの開発をする際には、モデルやコントローラー、ビュー、ルーティングを作成していく必要があります。

##modelsやviews、controllersの確認

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

元記事を表示

railsチュートリアル第3章 埋め込みruby

##少しだけ動的なページ
今度はそれをほんの少しだけ動的にしてみましょう。
ページの内容に応じて、ページのタイトルを自ら書き換えて表示するようにします
ここでの目標は、Homeページ、Helpページ、Aboutページをそれぞれ編集し、最終的にページごとに異なるタイトルを表示することです
ビューのタグの内容を変更<br /> 本節の終わりまでに、3つの静的ページのタイトルを「<ページ名> | Ruby on Rails Tutorial Sample App」という形式に変更します<br /> レイアウトファイルを活用する。<br /> ブラウザウィンドウの上部にウィンドウタイトルを変えるらしい。</p> <p>一時的にファイル名を変更</p> <p>“`<br /> mv app/views/layouts/application.html.erb layout_file<br /> “`</p> <p>###タイトルをテストする(Red)</p> <p>“`rb<br /> require ‘test_helper’</p> <p>class StaticPagesControllerTest < ActionDispatch::IntegrationTest test "should g</p></blockquote> </blockquote> <aside class='widget widget-post'> <div class='tag-cloud-link'>Rails</div> <div class='tag-cloud-link'>初心者</div> </aside> <div><a style='width:100%;' class='btn__link' href='https://qiita.com/masatom86650860/items/bbf81354bc132446489e'>元記事を表示</a></div> <h3 id="outline__0_0_5"><a href='https://qiita.com/soyasoya04/items/6c17607956962ebd0cbe'>ActionView::MissingTemplateが出たときの対処法。</a></h3> <blockquote><p>#結論。<br /> ###部分テンプレートの参照先が間違っている。<br /> 私自身作成したコードで例を挙げるとすると、下記のような修正をしました。</p> <p>“`erb<br /> 誤:<%= render 'favorites/favorite-btn', post_image: @post_image %></p> <p>正:<%= render 'public/favorites/favorite-btn', post_image: @post_image %><br /> “`</p> <p>#解決した経緯(上で分かったら見なくていい)<br /> ポートフォリオ作成中、いいね機能の非同期通信実装時にこんなエラーが出てきました。</p> <p>![qiita01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1789450/88a368aa-872b-e042-23f7-dfdae62a1e7a.jpeg)<br /> (前にアップしたのはポートフォリオ情報が入ってたので消しました。)</p> <p>####ActionView::MissingTemplate in ???????<br /> なにこれ。<br /> 色々調べた結果</p></blockquote> </blockquote> <aside class='widget widget-post'> <div class='tag-cloud-link'>HTML</div> <div class='tag-cloud-link'>Rails</div> <div class='tag-cloud-link'>エラー</div> <div class='tag-cloud-link'>対処法</div> </aside> <div><a style='width:100%;' class='btn__link' href='https://qiita.com/soyasoya04/items/6c17607956962ebd0cbe'>元記事を表示</a></div> <h3 id="outline__0_0_6"><a href='https://qiita.com/Yuhei_K/items/06805f3ac8607f77952f'>Ruby・Railsで作ったポートフォリオをPHP・Laravelでリメイクしてみた</a></h3> <blockquote><p># 目次<br /> | 番号 | 項目 |<br /> |:-:|:–|<br /> | 1 | [はじめに](https://qiita.com/drafts#1%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB) |<br /> | 2 | [URL](https://qiita.com/drafts#2url) |<br /> | 3 | [2つの言語を学習した理由](https://qiita.com/drafts#32%E3%81%A4%E3%81%AE%E8%A8%80%E8%AA%9E%E3%82%92%E5%AD%A6%E7%BF%92%E3%81%97%E3%81%9F%E7%90%86%E7%94%B1) |<br /> | 4 | [工事現場情報サイト(PHP、Laravelで作成)](https://qiita.com/drafts#4%E5%B7%A5%E4%BA%8B%E7%8F%BE%E5%A0%B4%E6%83%85%E5%A0%B1%E3%82%B5%E3%82%A4%E3%83%88phplaravel%E3%81%A7%E4%BD%9C%E6%88%90) |<br /> | 5 | [Construc</p></blockquote> </blockquote> <aside class='widget widget-post'> <div class='tag-cloud-link'>Rails</div> <div class='tag-cloud-link'>AWS</div> <div class='tag-cloud-link'>Laravel</div> <div class='tag-cloud-link'>Docker</div> <div class='tag-cloud-link'>ポートフォリオ</div> </aside> <div><a style='width:100%;' class='btn__link' href='https://qiita.com/Yuhei_K/items/06805f3ac8607f77952f'>元記事を表示</a></div> <h3 id="outline__0_0_7"><a href='https://qiita.com/etrisotoko777/items/d6c141ef4c6bc9a0c542'>Railsチュートリアル[6版]8章|現在ログイン中のユーザーを返す処理について</a></h3> <blockquote><p>Railsチュートリアルの8章のリスト1-6に出てきたログイン中のユーザーを返す処理について、特にコードを省略してる部分がわかりにくかったので自分用にまとめます。</p> <p>“`ruby<br /> module SessionsHelper<br /> #渡されたユーザーでログインする<br /> def log_in(user)<br /> session[:user_id] = user.id<br /> end</p> <p> #現在ログイン中のユーザーを返す(いる場合)<br /> def current_user<br /> if session[:user_id]<br /> @current_user ||= User.find_by(id:user_id)<br /> end<br /> end<br /> end<br /> “`</p> <p>##ログイン中のユーザーを返す処理</p> <p>まず、log_in(user)メソッド内の**session[:user_id]**という表現に戸惑いますが、sessionはRailsで事前に定義されているメソッドです。session[:user_id] = user.idを実行するとユーザー</p></blockquote> </blockquote> <aside class='widget widget-post'> <div class='tag-cloud-link'>Ruby</div> <div class='tag-cloud-link'>Rails</div> <div class='tag-cloud-link'>Railsチュートリアル</div> </aside> <div><a style='width:100%;' class='btn__link' href='https://qiita.com/etrisotoko777/items/d6c141ef4c6bc9a0c542'>元記事を表示</a></div> <h3 id="outline__0_0_8"><a href='https://qiita.com/uot/items/642c6025cd7530be59d7'>jQuery導入</a></h3> <blockquote><p>今回は、JavaScriptのjQuerykの導入のみの記事です!<br /> ネットで調べても中々うまくできなかったので、、、</p> <p>※jQueryの導入には、jquery-railsというGemを利用することもあります!<br /> 今夏は違う方法です</p> <p>##◇jQueryをインストール<br /> “`perl:ターミナル<br /> % yarn add jquery<br /> “`<br /> ##jQueryを管理化に<br /> “`perl:config/webpack/environment.js <br /> const { environment } = require(‘@rails/webpacker’)<br /> const webpack = require(‘webpack’)</p> <p>environment.plugins.prepend(‘Provide’,<br /> new webpack.ProvidePlugin({<br /> $: ‘jquery’,<br /> jQuery: ‘jquery’,<br /> jquery: ‘jquery’,<br /> })<br /> )</p> <p>module.exports = environment<br /> “`<br /> ##jQueryを認識させる??<br /> “</p></blockquote> </blockquote> <aside class='widget widget-post'> <div class='tag-cloud-link'>Ruby</div> <div class='tag-cloud-link'>JavaScript</div> <div class='tag-cloud-link'>Rails</div> <div class='tag-cloud-link'>jQuery</div> <div class='tag-cloud-link'>webpack</div> </aside> <div><a style='width:100%;' class='btn__link' href='https://qiita.com/uot/items/642c6025cd7530be59d7'>元記事を表示</a></div> <h3 id="outline__0_0_9"><a href='https://qiita.com/naoki9798/items/cf48cb29c22c3f6c569d'>Rails チュートリアル11章で「rails s」が起動しない</a></h3> <blockquote><p>#開発環境<br /> vscode<br /> rails 6.0.3<br /> ruby 2.7.4</p> <h1 id="outline__1">問題点</h1> <p>11.2.2の送信メールのプレビューでrails sを実行すると</p> <p>“`ruby:ターミナル<br /> /Users/username/environment/sample_app/config/environments/<br /> development.rb:67:in `block in <main>‘<br /> : undefined method `config’ for ActiveSupport:Module (NoMethodError)<br /> Did you mean? concerning<br /> “`<br /> というエラーが発生。</p> <p>テストは通っているのになぜ……。<br /> #解決<br /> 調べてみてもいまいちわからなかったのでRails チュートリアルの[GitHub]<br /> (https://github.com/yasslab/sample_apps/blob/master/6_0_0/ch11/config/environments/development.rb)<br /> でソースコードを見くらべてみました。</p> <p>**エラーが出たコ</p></blockquote> </blockquote> <aside class='widget widget-post'> <div class='tag-cloud-link'>Ruby</div> <div class='tag-cloud-link'>Rails</div> </aside> <div><a style='width:100%;' class='btn__link' href='https://qiita.com/naoki9798/items/cf48cb29c22c3f6c569d'>元記事を表示</a></div> <h3 id="outline__1_0_1"><a href='https://qiita.com/suzu_ryuya/items/c32e98f231592ab20b2a'>MVCモデルのまとめ</a></h3> <blockquote><p>#今日のテーマ<br /> CRUDアプリの基礎部分を作り終えたので、今回はMVCモデルについて学んだことを投稿していこうと思います。</p> <p>#MVCモデル<br /> MVCモデルとは、ソフトウェア設計モデルの一つであり、プログラムの処理をModel,View,Controllerに分けて開発を行う方法のことである。<br /> 利点としては、役割別にすることで独立性が高くなり、依存性が少なくなることで、効率的なアプリケーション開発が行えることである。また、ある箇所の変更が他の要素に影響しにくくなるということも挙げられる。</p> <p>#MVCモデルの概要<br /> MVCモデルでは、以下のようにデータが処理されます(自分でまとめたものです)。ざっくりまとめると、</p> <p>– ユーザーが、URLでアクセス<br /> – ルーティングにより、必要なControllerに割り当てられる。<br /> – Modelが必要なデータを取得する。<br /> – 取得したデータをもとに、Viewを作成して、ControllerにHTMLを返す<br /> – 生成したHTMLをユーザーに返す。</p> <p>![スクリーンショット 2021-08-17 14.51.35.png](https://qiita-i</p></blockquote> </blockquote> <aside class='widget widget-post'> <div class='tag-cloud-link'>Ruby</div> <div class='tag-cloud-link'>Rails</div> </aside> <div><a style='width:100%;' class='btn__link' href='https://qiita.com/suzu_ryuya/items/c32e98f231592ab20b2a'>元記事を表示</a></div> <h3 id="outline__1_0_2"><a href='https://qiita.com/naok1207/items/7d8aa07e60d4d6619ea7'>dockerでmysql8.0を利用する最小確認構成</a></h3> <blockquote><p>### 概要</p> <p>### フォルダ構成</p> <p>“`tree<br /> .<br /> ├─docker-compose.yml<br /> └─mysql<br /> └─conf.d<br /> └─mysql.cnf<br /> “`</p> <p>### ファイル</p> <p>“`docker-compose.yml<br /> version: ‘3.8’<br /> services:<br /> db:<br /> image: mysql:8.0<br /> ports:<br /> – ‘3306:3306’<br /> volumes:<br /> – ./mysql/conf.d:/etc/mysql/conf.d<br /> – mysql:/var/lib/mysql<br /> restart: always<br /> environment:<br /> MYSQL_ALLOW_EMPTY_PASSWORD: 1<br /> TZ: “Asia/Tokyo”<br /> volumes:<br /> mysql:<br /> “`</p> <p>“`mysql/conf.d/mysql.cnf<br /> [mysqld]<br /> default_authentication_plugin = mysql_native_password </p></blockquote> </blockquote> <aside class='widget widget-post'> <div class='tag-cloud-link'>Rails</div> <div class='tag-cloud-link'>MySQL</div> <div class='tag-cloud-link'>Docker</div> <div class='tag-cloud-link'>MySQL8.0</div> </aside> <div><a style='width:100%;' class='btn__link' href='https://qiita.com/naok1207/items/7d8aa07e60d4d6619ea7'>元記事を表示</a></div> <h3 id="outline__1_0_3"><a href='https://qiita.com/kudojp/items/56dc645410c010111b87'>grpc ruby の UInt64Value フィールドの使い方を凡ミスしてた</a></h3> <blockquote><p>gprc ruby で、UInt64Value タイプのフィールドにnilを設定する時に以下のミスをしてた。</p> <p>## 再現手順</p> <p>“`proto<br /> syntax = “proto3”;<br /> package myapp.post;<br /> option ruby_package = “PostPb”;</p> <p>import “google/protobuf/wrappers.proto”;</p> <p>message GetLatestPostIdRequest {<br /> uint64 user_id = 1;<br /> }</p> <p>message GetLatestPostIdResponse {<br /> google.protobuf.UInt64Value post_id = 1; /// 注目!<br /> }<br /> “`</p> <p>このprotoを使用して生成したgrpc rubyサーバーにおいて、post_idにnullを設定したいときに前者の方法で設定してしまっていた。</p> <p>### case1 `post_id = nil` を与える場合<br /> 以下。`Google::Protobuf::UInt64Value.new`の出番はない。</p> <p>“`</p></blockquote> </blockquote> <aside class='widget widget-post'> <div class='tag-cloud-link'>Ruby</div> <div class='tag-cloud-link'>Rails</div> <div class='tag-cloud-link'>gRPC</div> </aside> <div><a style='width:100%;' class='btn__link' href='https://qiita.com/kudojp/items/56dc645410c010111b87'>元記事を表示</a></div> <h3 id="outline__1_0_4"><a href='https://qiita.com/shoki_312/items/fb39ca789c6bd6a1f499'>deviseのメモ</a></h3> <blockquote><p>##サインアップ、サインイン後のリダイレクト</p> <p>“`application_controller.rb<br /> #サインアップ<br /> def after_sign_up_path_for(resource)<br /> リダイレクト先のパス名<br /> end</p> <p>#サインイン<br /> def after_sign_in_path_for(resource)<br /> リダイレクト先のパス名<br /> end<br /> “`</p> <p>##ログアウト</p> <p>“`ビュー<br /> <%= link_to 'ログアウト', destroy_user_session_path, method: :delete %><br /> “`</p> <p>##ログイン済ユーザーのみにアクセスを許可する<br /> ログインが必要なコントローラに</p> <p>“`<br /> before_action :authenticate_user!<br /> “`</p> <p>##ログインしているかの判定<br /> ログインしていれば、True<br /> していなければ、Falseを返す</p> <p>“`<br /> user_signed_in?<br /> “` </p></blockquote> </blockquote> <aside class='widget widget-post'> <div class='tag-cloud-link'>Ruby</div> <div class='tag-cloud-link'>Rails</div> </aside> <div><a style='width:100%;' class='btn__link' href='https://qiita.com/shoki_312/items/fb39ca789c6bd6a1f499'>元記事を表示</a></div> <h3 id="outline__1_0_5"><a href='https://qiita.com/shoki_312/items/765e65fd1e8cd878c46d'>deviseの導入</a></h3> <blockquote><p>##gemfileにdeviseを追加</p> <p>“`gemfile<br /> gem ‘devise’<br /> “`</p> <p>##bundleをインストール<br /> “`<br /> $ docker-compose run web bundle install<br /> “`</p> <p>gemfileが変更されたので、buildする</p> <p>“`<br /> $ docker-compose build<br /> “`</p> <p>##deviseをインストール<br /> “`<br /> $ docker-compose run web rails g devise:install<br /> “`</p> <p>##モデルの作成<br /> “`<br /> docker-compose run web rails g devise モデル名<br /> “`</p> <p>##アラートの表示<br /> bodyタグ内に</p> <p>“`application.html.erb<br /> <body></p> <p class="notice"><%= notice %></p> <p class="alert"><%= alert %></p> <p> <%= yield %><br /> </body><br /> “`</p> <p>##deviseのビューの作成<br /> “`<br /> docker-co</p></blockquote> </blockquote> <aside class='widget widget-post'> <div class='tag-cloud-link'>Ruby</div> <div class='tag-cloud-link'>Rails</div> </aside> <div><a style='width:100%;' class='btn__link' href='https://qiita.com/shoki_312/items/765e65fd1e8cd878c46d'>元記事を表示</a></div> <h3 id="outline__1_0_6"><a href='https://qiita.com/Hiro710/items/ea8ec7a27ada34531136'>【メモ】bin/rails db:drop実行に失敗した時の対処法</a></h3> <blockquote><p>## 症状</p> <p>ターミナルで**$ bin/rails db:drop**コマンドを入力したら以下のような画面が表示された</p> <p>“`terminal:terminal</p> <p>PG::ObjectInUse: ERROR: database “XXXxxxx” is being accessed by other users<br /> DETAIL: There are 3 other sessions using the database.</p> <p>rails aborted!<br /> ActiveRecord::StatementInvalid: PG::ObjectInUse: ERROR: database “XXXxxxx” is being accessed by other users<br /> DETAIL: There are 3 other sessions using the database.</p> <p>“`</p> <p>## 対処</p> <p>原因は作成中のアプリ以外に接続しているアプリなどはないのに接続されっぱなしになっている模様。<br /> **$ bin/rails db:migrate:reset**しても改善されな</p></blockquote> </blockquote> <aside class='widget widget-post'> <div class='tag-cloud-link'>Rails</div> <div class='tag-cloud-link'>PostgreSQL</div> <div class='tag-cloud-link'>DB</div> <div class='tag-cloud-link'>Rails6</div> </aside> <div><a style='width:100%;' class='btn__link' href='https://qiita.com/Hiro710/items/ea8ec7a27ada34531136'>元記事を表示</a></div> <h3 id="outline__1_0_7"><a href='https://qiita.com/ring01061995/items/06af395c35e188c942a2'>ruby on railsでのユーザー管理機能について</a></h3> <blockquote><p>この記事ではruby on rails 6.0.0を使用しています。!</p> <p>今回はdeviseのgemを紹介したいと思います。</p> <h1 id="outline__2">deviseって何?</h1> <p>devisとはユーザー管理機能を実装するためのgemです。<br /> 会員登録やログイン・ログアウト機能を簡易に実装することができるgemです。!</p> <h1 id="outline__3">導入方法</h1> <p>導入は簡単です。!</p> <p>![05ca375321ad0851c0be9c6b3a07691b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1902434/e791767e-878d-e529-cc2d-c73d9f4d8fab.png)</p> <p>Gemfileに gem ‘devise’ と記述してbundle installをするだけです。!! </p></blockquote> </blockquote> <aside class='widget widget-post'> <div class='tag-cloud-link'>Ruby</div> <div class='tag-cloud-link'>Rails</div> <div class='tag-cloud-link'>Rails6</div> </aside> <div><a style='width:100%;' class='btn__link' href='https://qiita.com/ring01061995/items/06af395c35e188c942a2'>元記事を表示</a></div> <h3 id="outline__3_0_1"><a href='https://qiita.com/nao0725/items/0ef22c42e253ab2bb407'>【Ruby on Rails】新規登録時のエラーメッセージ発生後にリロードするとルーティングエラーになる問題を解決した話</a></h3> <blockquote><p> #解決したい課題</p> <p>* 新規会員登録時に、エラーメッセージ表示後に、リロードすると発生するRunningErrorを解決したい</p> <p>#結論</p> <p>* [GET]/userを呼び出していたので、そのまま入力する</p> <p>#原因と対策<br /> ###1.エラー文</p> <p>![スクリーンショット 2021-08-17 8.40.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1681213/6c8a0029-314c-1447-0b3c-ab116be75de3.png)</p> <p>###2.rails routesルーティング確認</p> <p>![スクリーンショット 2021-08-16 21.41.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1681213/47f20649-a8ae-9aad-1232-c1f9586a167b.png)</p> <p>そもそもGETがない、、、!</p> <p>###3.routes.rbに記載</p> <p>resourcesを使っていたのでi</p></blockquote> </blockquote> <aside class='widget widget-post'> <div class='tag-cloud-link'>Ruby</div> <div class='tag-cloud-link'>Rails</div> <div class='tag-cloud-link'>devise</div> <div class='tag-cloud-link'>error</div> <div class='tag-cloud-link'>初心者</div> </aside> <div><a style='width:100%;' class='btn__link' href='https://qiita.com/nao0725/items/0ef22c42e253ab2bb407'>元記事を表示</a></div> <h3 id="outline__3_0_2"><a href='https://qiita.com/etrisotoko777/items/035c71029065fe5d47fa'>Railsチュートリアルmodule SessionsHelperを例にmoduleとHelperの役割を見てみる</a></h3> <blockquote><p>Railsチュートリアルも9章に入ったのですが、Sessionが出てきてからかなり難易度が上がったように感じたので、知識の定着を図ることも兼ねて、理解が曖昧な部分を自分用にまとめておきます。</p> <p>##module SessionsHelperとは</p> <p>Sessionコントローラーを生成した時点で、自動的にmodule SessionsHelperも生まれてました。</p> <p>まず、**module**というのはclassと同様に部品の集まりです。以下の説明がわかりやすいと思います。</p> <p>>Rubyにはオブジェクト指向で一般的なクラス以外にも、モジュールという概念が存在します。モジュールではクラスと同じように定数やメソッドをまとめたり、クラスに組み込んで多重継承を実現したり、クラスなどをまとめることで名前空間を提供するなど、いろいろな使い方ができます。 https://qiita.com/shiopon01/items/fd6803f792398c5219cd</p> <p>ちなみにクラスとモジュールの違いに関する説明は[こちら](https://qiita.com/fukumone/items/2dd4d2d1</p></blockquote> </blockquote> <aside class='widget widget-post'> <div class='tag-cloud-link'>Ruby</div> <div class='tag-cloud-link'>Rails</div> <div class='tag-cloud-link'>Railsチュートリアル</div> </aside> <div><a style='width:100%;' class='btn__link' href='https://qiita.com/etrisotoko777/items/035c71029065fe5d47fa'>元記事を表示</a></div> <h3 id="outline__3_0_3"><a href='https://qiita.com/masatom86650860/items/75f8002c3c55fc01cc6a'>railsチュートリアル 第3章 テスト駆動</a></h3> <blockquote><p>##テストから始める<br />  自動化テストを作成して、機能が正しく実装されたことを確認する習慣をつける。<br />  アプリケーションを開発しながらテストスイート(Test Suite) をみっちり作成しておけば、いざというときのセーフティネットにもなる。<br />  テストを作成するということは、その分コードを余分に書くことになりますが、正しく行えば、むしろテストがないときよりも確実に開発速度がアップします。<br />  コントローラテスト、モデルテスト、統合テストの3つの種類がある。<br />  統合テストは、とりあえず強いらしい。<br /> (ユーザーがWebブラウザでアプリケーションとやりとりする操作をシミュレートできるので特に強力です。)</p> <p>###最初のテスト<br /> genelateで自動生成された static_pages_controller_test.rb を見てみる。</p> <p>“`rb<br /> require ‘test_helper’</p> <p>class StaticPagesControllerTest < ActionDispatch::IntegrationTest test "should get home" do get </p></blockquote> </blockquote> <aside class='widget widget-post'> <div class='tag-cloud-link'>Rails</div> <div class='tag-cloud-link'>初心者</div> </aside> <div><a style='width:100%;' class='btn__link' href='https://qiita.com/masatom86650860/items/75f8002c3c55fc01cc6a'>元記事を表示</a></div> <h3 id="outline__3_0_4"><a href='https://qiita.com/camellia318/items/afe0297e6b866da12fc3'>Rails6でデータベースを変更する (sqlite3→MySQL)</a></h3> <blockquote><p>#rails db:system:change –to= を知る</p> <p>前回の記事でデータベースを変更する為、database.ymlを書き換えたりしましたが、Rails6ではrails db:system:change –to=というコマンドで一瞬で変更できました。</p> <p>“`<br /> $ bin/rails db:system:change –to=mysql<br /> conflict config/database.yml<br /> Overwrite /Users/ユーザー名/アプリ名/config/database.yml? (enter “h” for help) [Ynaqdhm] Y<br /> force config/database.yml<br /> gsub Gemfile<br /> gsub Gemfile<br /> “`</p> <p>database.ymlを確認すると書き換わってます!</p> <p>![スクリーンショット 2021-08-16 23.40.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.c</p></blockquote> </blockquote> <aside class='widget widget-post'> <div class='tag-cloud-link'>Rails</div> </aside> <div><a style='width:100%;' class='btn__link' href='https://qiita.com/camellia318/items/afe0297e6b866da12fc3'>元記事を表示</a></div> </div> </section> <!-- 記事下シェアボタン --> <aside> <ul class="socialList"> <li class="socialList__item"><a class="socialList__link icon-facebook" href="http://www.facebook.com/sharer.php?u=https%3A%2F%2Fmiofactor.com%2F2021%2F08%2F18%2Fpost-12106%2F&t=Rails%E9%96%A2%E9%80%A3%E3%81%AE%E3%81%93%E3%81%A8%E3%82%92%E8%AA%BF%E3%81%B9%E3%81%A6%E3%81%BF%E3%81%9F2021%E5%B9%B408%E6%9C%8818%E6%97%A5" target="_blank" title="Facebookで共有"></a></li><li class="socialList__item"><a class="socialList__link icon-twitter" href="http://twitter.com/intent/tweet?text=Rails%E9%96%A2%E9%80%A3%E3%81%AE%E3%81%93%E3%81%A8%E3%82%92%E8%AA%BF%E3%81%B9%E3%81%A6%E3%81%BF%E3%81%9F2021%E5%B9%B408%E6%9C%8818%E6%97%A5&https%3A%2F%2Fmiofactor.com%2F2021%2F08%2F18%2Fpost-12106%2F&url=https%3A%2F%2Fmiofactor.com%2F2021%2F08%2F18%2Fpost-12106%2F" target="_blank" title="Twitterで共有"></a></li><li class="socialList__item"><a class="socialList__link icon-line" href="http://line.naver.jp/R/msg/text/?Rails%E9%96%A2%E9%80%A3%E3%81%AE%E3%81%93%E3%81%A8%E3%82%92%E8%AA%BF%E3%81%B9%E3%81%A6%E3%81%BF%E3%81%9F2021%E5%B9%B408%E6%9C%8818%E6%97%A5%0D%0Ahttps%3A%2F%2Fmiofactor.com%2F2021%2F08%2F18%2Fpost-12106%2F" target="_blank" title="LINEで送る"></a></li></ul> </aside> <!-- /記事下シェアボタン --> <!-- 記事下エリア[widget] --> <aside class="widgetPost widgetPost-bottom"><aside class="widget widget-post"><h2 class="heading heading-primary">タグ</h2><div class="tagcloud"><a href="https://miofactor.com/tag/%e3%81%9d%e3%81%ae%e4%bb%96/" class="tag-cloud-link tag-link-13 tag-link-position-1" style="font-size: 8pt;" aria-label="その他 (1個の項目)">その他</a></div> </aside></aside> <!-- /記事下エリア[widget] --> <!-- 関連記事 --> <aside class="related"><h2 class="heading heading-primary">関連する記事</h2><ul class="related__list"> <li class="related__item"> <a class="related__imgLink" href="https://miofactor.com/2021/10/24/post-13822/" title="iOS関連のことを調べてみた2021年10月24日"> <img src="https://miofactor.com/wp-content/uploads/2019/10/ios-150x150.png" alt="iOS関連のことを調べてみた2021年10月24日" width="150" height="150" > </a> <h3 class="related__title"> <a href="https://miofactor.com/2021/10/24/post-13822/">iOS関連のことを調べてみた2021年10月24日</a> <span class="icon-calendar">2021.10.24</span> </h3> <p class="related__contents">目次 1. Swift NavigationController 戻るボタンイベント 検知 2. Fluuter iOS Smart quotes w[…]</p> </li> <li class="related__item"> <a class="related__imgLink" href="https://miofactor.com/2020/10/31/post-8365/" title="WEBエンジニアが読んでおきたい技術書 2020年10月31日"> <img src="https://miofactor.com/wp-content/uploads/2019/11/967637031-book-168824_1920-YEnY-1920x1280-MM-100-150x150.jpg" alt="WEBエンジニアが読んでおきたい技術書 2020年10月31日" width="150" height="150" > </a> <h3 class="related__title"> <a href="https://miofactor.com/2020/10/31/post-8365/">WEBエンジニアが読んでおきたい技術書 2020年10月31日</a> <span class="icon-calendar">2020.10.31</span> </h3> <p class="related__contents">目次 1. 【2020年上半期】プログラミング学習歴6ヶ月 参考にした技術書10選2. 社会人デビューから1年6ヶ月の間に読み漁った技術書20冊をまと[…]</p> </li> <li class="related__item"> <a class="related__imgLink" href="https://miofactor.com/2019/11/11/post-553/" title="ITエンジニアが読むべき技術書 2019年11月11日"> <img src="https://miofactor.com/wp-content/uploads/2019/11/967637031-book-168824_1920-YEnY-1920x1280-MM-100-150x150.jpg" alt="ITエンジニアが読むべき技術書 2019年11月11日" width="150" height="150" > </a> <h3 class="related__title"> <a href="https://miofactor.com/2019/11/11/post-553/">ITエンジニアが読むべき技術書 2019年11月11日</a> <span class="icon-calendar">2019.11.11</span> </h3> <p class="related__contents">目次 0.0.1. Webエンジニア1年目の自分に捧げたい本・記事を超まとめ1. これは何?2. Webエンジニア1年目で読みたい本・資料まとめ2.1[…]</p> </li> </ul></aside> <!-- /関連記事 --> <!-- コメント --> <!-- /コメント --> <!-- PVカウンター --> <!-- /PVカウンター --> </main> <!-- /l-main --> <!-- l-sidebar --> <div class="l-sidebar"> <aside class="widget"> <div class="searchBox"> <form class="searchBox__form" method="get" target="_top" action="https://miofactor.com/" > <input class="searchBox__input" type="text" maxlength="50" name="s" placeholder="記事検索"><button class="searchBox__submit icon-search" type="submit" value="search"> </button> </form> </div></aside><aside class="widget"><h2 class="heading heading-widget">Category</h2> <ul> <li class="cat-item cat-item-1"><a href="https://miofactor.com/category/other/">OTHER</a> </li> </ul> </aside><aside class="widget"><h2 class="heading heading-widget">Back number</h2> <ul> <li><a href='https://miofactor.com/2024/09/'>2024年9月</a></li> <li><a href='https://miofactor.com/2024/08/'>2024年8月</a></li> <li><a href='https://miofactor.com/2024/07/'>2024年7月</a></li> <li><a href='https://miofactor.com/2024/06/'>2024年6月</a></li> <li><a href='https://miofactor.com/2024/05/'>2024年5月</a></li> <li><a href='https://miofactor.com/2024/04/'>2024年4月</a></li> <li><a href='https://miofactor.com/2024/03/'>2024年3月</a></li> <li><a href='https://miofactor.com/2024/02/'>2024年2月</a></li> <li><a href='https://miofactor.com/2024/01/'>2024年1月</a></li> <li><a href='https://miofactor.com/2023/12/'>2023年12月</a></li> <li><a href='https://miofactor.com/2023/11/'>2023年11月</a></li> <li><a href='https://miofactor.com/2023/10/'>2023年10月</a></li> <li><a href='https://miofactor.com/2023/09/'>2023年9月</a></li> <li><a href='https://miofactor.com/2023/08/'>2023年8月</a></li> <li><a href='https://miofactor.com/2023/07/'>2023年7月</a></li> <li><a href='https://miofactor.com/2023/04/'>2023年4月</a></li> <li><a href='https://miofactor.com/2023/03/'>2023年3月</a></li> <li><a href='https://miofactor.com/2023/02/'>2023年2月</a></li> <li><a href='https://miofactor.com/2023/01/'>2023年1月</a></li> <li><a href='https://miofactor.com/2022/12/'>2022年12月</a></li> <li><a href='https://miofactor.com/2022/11/'>2022年11月</a></li> <li><a href='https://miofactor.com/2022/10/'>2022年10月</a></li> <li><a href='https://miofactor.com/2022/09/'>2022年9月</a></li> <li><a href='https://miofactor.com/2022/08/'>2022年8月</a></li> <li><a href='https://miofactor.com/2022/07/'>2022年7月</a></li> <li><a href='https://miofactor.com/2022/06/'>2022年6月</a></li> <li><a href='https://miofactor.com/2022/05/'>2022年5月</a></li> <li><a href='https://miofactor.com/2022/04/'>2022年4月</a></li> <li><a href='https://miofactor.com/2022/03/'>2022年3月</a></li> <li><a href='https://miofactor.com/2022/02/'>2022年2月</a></li> <li><a href='https://miofactor.com/2022/01/'>2022年1月</a></li> <li><a href='https://miofactor.com/2021/12/'>2021年12月</a></li> <li><a href='https://miofactor.com/2021/11/'>2021年11月</a></li> <li><a href='https://miofactor.com/2021/10/'>2021年10月</a></li> <li><a href='https://miofactor.com/2021/09/'>2021年9月</a></li> <li><a href='https://miofactor.com/2021/08/'>2021年8月</a></li> <li><a href='https://miofactor.com/2021/07/'>2021年7月</a></li> <li><a href='https://miofactor.com/2021/06/'>2021年6月</a></li> <li><a href='https://miofactor.com/2021/05/'>2021年5月</a></li> <li><a href='https://miofactor.com/2021/04/'>2021年4月</a></li> <li><a href='https://miofactor.com/2021/03/'>2021年3月</a></li> <li><a href='https://miofactor.com/2021/02/'>2021年2月</a></li> <li><a href='https://miofactor.com/2021/01/'>2021年1月</a></li> <li><a href='https://miofactor.com/2020/12/'>2020年12月</a></li> <li><a href='https://miofactor.com/2020/11/'>2020年11月</a></li> <li><a href='https://miofactor.com/2020/10/'>2020年10月</a></li> <li><a href='https://miofactor.com/2020/09/'>2020年9月</a></li> <li><a href='https://miofactor.com/2020/08/'>2020年8月</a></li> <li><a href='https://miofactor.com/2020/07/'>2020年7月</a></li> <li><a href='https://miofactor.com/2020/06/'>2020年6月</a></li> <li><a href='https://miofactor.com/2020/05/'>2020年5月</a></li> <li><a href='https://miofactor.com/2020/04/'>2020年4月</a></li> <li><a href='https://miofactor.com/2020/03/'>2020年3月</a></li> <li><a href='https://miofactor.com/2020/02/'>2020年2月</a></li> <li><a href='https://miofactor.com/2020/01/'>2020年1月</a></li> <li><a href='https://miofactor.com/2019/12/'>2019年12月</a></li> <li><a href='https://miofactor.com/2019/11/'>2019年11月</a></li> <li><a href='https://miofactor.com/2019/10/'>2019年10月</a></li> </ul> </aside> </div> <!-- /l-sidebar --> </div> <!-- /l-wrapper --> <div class="categoryBox"> <div class="container"> <h2 class="heading heading-primary"> <span class="heading__bg u-txtShdw bgc-darkgray">OTHER</span>カテゴリの最新記事 </h2> <ul class="categoryBox__list"> <li class="categoryBox__item"> <div class="eyecatch eyecatch-archive"> <a href="https://miofactor.com/2024/09/19/post-36894/"> <img src="https://miofactor.com/wp-content/uploads/2019/10/ios-554x410.png" alt="iOS関連のことを調べてみた" width="554" height="410" > </a> </div> <ul class="dateList dateList-archive"> <li class="dateList__item icon-calendar">2024.09.19</li> </ul> <h2 class="heading heading-archive "> <a class="hc-darkgray" href="https://miofactor.com/2024/09/19/post-36894/">iOS関連のことを調べてみた</a> </h2> </li> <li class="categoryBox__item"> <div class="eyecatch eyecatch-archive"> <a href="https://miofactor.com/2024/09/19/post-36890/"> <img src="https://miofactor.com/wp-content/uploads/2019/10/js-554x410.png" alt="JavaScript関連のことを調べてみた" width="554" height="410" > </a> </div> <ul class="dateList dateList-archive"> <li class="dateList__item icon-calendar">2024.09.19</li> </ul> <h2 class="heading heading-archive "> <a class="hc-darkgray" href="https://miofactor.com/2024/09/19/post-36890/">JavaScript関連のことを調べてみた</a> </h2> </li> <li class="categoryBox__item"> <div class="eyecatch eyecatch-archive"> <a href="https://miofactor.com/2024/09/19/post-36891/"> <img src="https://miofactor.com/wp-content/uploads/2019/10/java.jpg" alt="JAVA関連のことを調べてみた" width="540" height="270" > </a> </div> <ul class="dateList dateList-archive"> <li class="dateList__item icon-calendar">2024.09.19</li> </ul> <h2 class="heading heading-archive "> <a class="hc-darkgray" href="https://miofactor.com/2024/09/19/post-36891/">JAVA関連のことを調べてみた</a> </h2> </li> <li class="categoryBox__item"> <div class="eyecatch eyecatch-archive"> <a href="https://miofactor.com/2024/09/19/post-36888/"> <img src="https://miofactor.com/wp-content/uploads/2019/10/rails-725x410.png" alt="Rails関連のことを調べてみた" width="725" height="410" > </a> </div> <ul class="dateList dateList-archive"> <li class="dateList__item icon-calendar">2024.09.19</li> </ul> <h2 class="heading heading-archive "> <a class="hc-darkgray" href="https://miofactor.com/2024/09/19/post-36888/">Rails関連のことを調べてみた</a> </h2> </li> <li class="categoryBox__item"> <div class="eyecatch eyecatch-archive"> <a href="https://miofactor.com/2024/09/19/post-36884/"> <img src="https://miofactor.com/wp-content/uploads/2019/10/lambda.png" alt="Lambda関連のことを調べてみた" width="360" height="230" > </a> </div> <ul class="dateList dateList-archive"> <li class="dateList__item icon-calendar">2024.09.19</li> </ul> <h2 class="heading heading-archive "> <a class="hc-darkgray" href="https://miofactor.com/2024/09/19/post-36884/">Lambda関連のことを調べてみた</a> </h2> </li> <li class="categoryBox__item"> <div class="eyecatch eyecatch-archive"> <a href="https://miofactor.com/2024/09/19/post-36886/"> <img src="https://miofactor.com/wp-content/uploads/2019/10/python-640x410.png" alt="Python関連のことを調べてみた" width="640" height="410" > </a> </div> <ul class="dateList dateList-archive"> <li class="dateList__item icon-calendar">2024.09.19</li> </ul> <h2 class="heading heading-archive "> <a class="hc-darkgray" href="https://miofactor.com/2024/09/19/post-36886/">Python関連のことを調べてみた</a> </h2> </li> </ul> </div> </div> <!-- schema --> <script type="application/ld+json"> { "@context": "http://schema.org", "@type": "Article ", "mainEntityOfPage":{ "@type": "WebPage", "@id": "https://miofactor.com/2021/08/18/post-12106/" }, "headline": "Rails関連のことを調べてみた2021年08月18日", "image": { "@type": "ImageObject", "url": "https://miofactor.com/wp-content/uploads/2019/10/python-640x410.png", "height": "410", "width": "640" }, "datePublished": "2021-08-18T11:50:54+0900", "dateModified": "2021-08-18T11:50:54+0900", "author": { "@type": "Person", "name": "editor" }, "publisher": { "@type": "Organization", "name": "f@ctor", "logo": { "@type": "ImageObject", "url": "", "width": "", "height":"" } }, "description": "目次 0.0.1. ArgumentErrorのエラーについて0.0.2. 【個人開発】Web上でチームで同時に操作できる、手動統合テスト記録ツール「Itamaster」を開発しました!0.0.3. 画像投稿機能を追加するgem「CarrierWave」ruby on rails 写真アップロード機能0.0.4. railsチュートリアル第3章 埋め込みruby0.0.5. ActionView: […]" } </script> <!-- /schema --> <!--l-footer--> <footer class="l-footer"> <div class="container"> <div class="pagetop u-txtShdw"><a class="pagetop__link" href="#top">Back to Top</a></div> <div class="widgetFoot"> <div class="widgetFoot__contents"> </div> <div class="widgetFoot__contents"> <aside class="widget widget-foot"><h2 class="heading heading-footer">タグ</h2><div class="tagcloud"><a href="https://miofactor.com/tag/%e3%81%9d%e3%81%ae%e4%bb%96/" class="tag-cloud-link tag-link-13 tag-link-position-1" style="font-size: 8pt;" aria-label="その他 (1個の項目)">その他</a></div> </aside> </div> <div class="widgetFoot__contents"> </div> </div> <div class="copySns "> <div class="copySns__copy"> © Copyright 2024 <a class="copySns__copyLink" href="https://miofactor.com">f@ctor</a>. <span class="copySns__copyInfo u-none"> f@ctor by <a class="copySns__copyLink" href="http://fit-jp.com/" target="_blank">FIT-Web Create</a>. Powered by <a class="copySns__copyLink" href="https://wordpress.org/" target="_blank">WordPress</a>. </span> </div> </div> </div> </footer> <!-- /l-footer --> <script type="text/javascript" src="https://miofactor.com/wp-includes/js/comment-reply.min.js?ver=6.4.1" id="comment-reply-js" async="async" data-wp-strategy="async"></script> <script> function toggle__search(){ extra__search.className="l-extra"; extra__menu.className="l-extraNone"; menuNavi__search.className = "menuNavi__link menuNavi__link-current icon-search "; menuNavi__menu.className = "menuNavi__link icon-menu"; } function toggle__menu(){ extra__search.className="l-extraNone"; extra__menu.className="l-extra"; menuNavi__search.className = "menuNavi__link icon-search"; menuNavi__menu.className = "menuNavi__link menuNavi__link-current icon-menu"; } </script><script>Array.prototype.forEach.call(document.getElementsByClassName("css-async"),function(e){e.rel = "stylesheet"});</script> </body> </html>