Ruby on Rails チュートリアル
ヘルプ − 困ったときのヒント集
Railsチュートリアルのヘルプページへようこそ!
本ページではRailsチュートリアルでよく見かけるエラーや、その対処法などをまとめています。Railsチュートリアルを進めていた困った場面などでお役に立てば嬉しいです。
目次
- はじめに
- デバッグのヒント
- AWS Cloud9 の容量不足を解決する
- 本番環境でメールが送れない
- 公式情報まとめ
- 公式動画:Railsチュートリアルの歩き方
- 公式リポジトリ:yasslab/sample_apps
- 公式アカウント
- 学習ロードマップ
- 読み物ガイド
はじめに
Web サービスなどのプロダクト開発は難しく、どれだけ細心の注意を払っていてもトラブルに遭遇する可能性があります。そういった場面では、まず手元の Sample App のコードと動作確認済みの実装例とを比較し、どこに違いがあるのか確認することをオススメします。
また、デバッグ時のヒントも下記にまとめておいたので、適宜ご参照していただけると嬉しいです。
デバッグのヒント
すべてのエラーを事前に予測することはできませんが、エラー発生時の役に立つかもしれないヒントを以下に紹介します。思い当たる場面などあればぜひ試してみてください
- Sample App 実装例のコードと自分のコードを比較しましたか?
- チュートリアルで使用した gem のバージョン(Rails を含む)を正確に使用していますか?
- エラーメッセージをググってみましたか?
- RailsのWebサーバを(
Ctrl-C
で)停止して再起動しましたか? bin/spring stop
を使ってSpringを停止してみましたか?- 本のコードをコピー&ペーストしてみましたか?(経験上、コードを手入力することは、一般的にはより優れた学習手法ですが、エラーが発生しやすいため、疑わしい場合はすべてのコードを正確にコピーしてください。)
bundle install
を再実行しましたか?bundle update
を実行してみましたか?heroku logs
やheroku logs --tail
を使って Heroku のログを調べましたか?sqlite3
gem がGemfile
の開発環境とテスト環境にのみリストされていることを確認しましたか?- 再び、エラーメッセージをググってみましたか?
上記ヒントで皆さんのエラーが解決すれば嬉しいです。もし『デバッグ時間を短縮したい』『もっと効率よく学びたい』といった場面があれば下記の学習ロードマップをご参照していただけると幸いです。
AWS Cloud9 の容量不足を解決する
Cloud9 で開発していると、デフォルトで設定されている Amazon EBS ボリューム容量では足らなくなってしまうことがあります。本セクションでは、使わなくなったファイルの削除方法や EBS ボリュームを増やす方法を紹介します。(Amazon EBS の無料利用枠については公式ページからご確認ください。)
0. 第3章に入ったら hello_app
, toy_app
は削除しよう
sample_app
だけを使います。第1章で作った hello_app
と、第2章で作った toy_app
は削除しても大丈夫です。容量不足が不安になってきたら、まずは hello_app
と toy_app
を削除してみましょう。(ソースコードを残しておきたい方は、事前に GitHub に push しておきましょう)

1. EBS ボリュームの確認方法
df -h
コマンドで、現在の容量を確認します。 /dev/xvda1
の列の Use
が100%になると、動作しなくなることもあります。(動作しなくなってしまった場合は、新しい environment を作成した方が早いかもしれません。)
$ df -h Filesystem Size Used Avail Use% Mounted on . . /dev/xvda1 9.8G 8.2G 1.5G 85% /
There was an error while trying to write to `/home/ubuntu/environment/sample_app/.bundle/config`. There was insufficient space remaining on the device.
hello_app
やtoy_app
を削除しても構わない方は、この時点で削除して容量を少し空けておきましょう。
2. EBS ボリュームを増やす方法
- Amazon EC2 コンソールを開きます。
- 「ボリューム」を選択し、変更するボリュームを選択します。(複数あって分からない場合は、「インスタンス」の「実行中のインスタンス」の中から
aws-cloud9
から始まる Name のインスタンス ID をコピーし、ボリューム内で検索するとよいでしょう。) - 上部にある「アクション」ボタンから「ボリュームの変更」を選択し、サイズを AWS が定める最大無料枠に設定し、変更します。(執筆時点では
30
でしたが、念のため確認しておくことをオススメします) - 「インスタンス」にいき、該当のインスタンスを選択後、画面上部にある「アクション」ボタンから「インスタンスの状態」→「再起動(停止中なら開始)」をします。
- 「Cloud9」に戻り、ターミナルからボリュームの拡張をします。現在のインスタンスに割り当てられているブロックデバイスの情報を確認するには、
lsblk
コマンドで表示します。ルートボリュームである/dev/xvda
は拡張されていますが、/dev/xvda1
はまだ元のままです。$ lsblk . . xvda 202:0 0 30G 0 disk └─xvda1 202:1 0 8G 0 part
$ sudo growpart /dev/xvda 1
$ lsblk . . xvda 202:0 0 30G 0 disk └─xvda1 202:1 0 30G 0 part /
- 最後にファイルシステムを拡張します。ファイルシステムを拡張するには、以下のコマンドを使います。
$ sudo resize2fs /dev/xvda1
$ df -h Filesystem Size Used Avail Use% Mounted on . . /dev/xvda1 30G 8.2G 21G 27% /
参考記事
本番環境でメールが送れない
Heroku のメール系アドオンにはいくつかあります。メールが送れない場合は、設定を見直すか、もしくは別のメール系アドオンを試してみましょう。本セクションでは『Mailgun』と『SendGrid』の2つをご紹介します。
Mailgun の設定方法
Mailgun でメールを送る場合は、次の手順でセットアップを行います。
$ heroku addons:create mailgun:starter
で無料枠 (1日400通まで) の Starter プランを追加します。- Mailgun の公式ドキュメントに従って、ActionMailer を設定します。(
config/environments/production.rb
)
Rails.application.configure do ... config.action_mailer.raise_delivery_errors = true config.action_mailer.delivery_method = :smtp host = '【Herokuのサブドメイン】.herokuapp.com' config.action_mailer.default_url_options = { host: host } ActionMailer::Base.smtp_settings = { :port => ENV['MAILGUN_SMTP_PORT'], :address => ENV['MAILGUN_SMTP_SERVER'], :user_name => ENV['MAILGUN_SMTP_LOGIN'], :password => ENV['MAILGUN_SMTP_PASSWORD'], :domain => host, :authentication => :plain, } ... end
- 変更したコードを
commit
し、Heroku にpush
します。$ git push heroku
$ heroku addons:open mailgun
で Mailgun ダッシュボードのURLが表示されるので、ブラウザで開きます。- MailGun公式ドキュメントに従い、受信したいメールアドレスを認証します。画面左側の「Sending」→「Domains」のリストにある「sandbox」で始まるサンドボックスドメインを選択します。画面右側の「Authorized Recipients」で、受信したいメールアドレスを認証できます。
SendGrid の設定方法
SendGrid でメールを送る場合は、次の手順でセットアップを行います。Mailgun でメールが送れず、設定を見直してもうまくいかなかった場合は、SendGrid を試してみてください。
- 公式ページを参考に、ActionMailer を設定します。(
config/environments/production.rb
)Rails.application.configure do ... config.action_mailer.delivery_method = :smtp config.action_mailer.perform_deliveries = true host = '【Herokuのサブドメイン】.herokuapp.com' config.action_mailer.default_url_options = { host: host } ActionMailer::Base.smtp_settings = { :port => 587, :address => 'smtp.sendgrid.net', :user_name => ENV['SENDGRID_USERNAME'], :password => ENV['SENDGRID_PASSWORD'], :domain => host, :authentication => :plain, :enable_starttls_auto => true } ... end
- 変更したコードを
commit
し、Heroku にpush
します。 $ heroku addons:create sendgrid:starter
で無料枠 (1日400通まで) の Starter プランを追加します。
SendGrid アカウントの状態を確認
heroku logs --tail
を実行後、本番環境でアカウント登録するとメールに関するログが確認できます。メール文面に関するログの後、以下のようなエラーメッセージがあるかどうかを確認してください。
# エラー例『認証に失敗 (535)』 Net::SMTPAuthenticationError (535 Authentication failed: account disabled
# エラー例『未確認のドメイン (550)』 Net::SMTPFatalError (550 The from address does not match a verified Sender Identity. Mail cannot be sent until this error is resolved.
メールアドレスの認証
- 上記のようなエラーメッセージの場合、noreply@example.com を認証されたメールアドレスに置き換えてみましょう。
- Heroku ダッシュボードから該当するアプリのページにいき、「Resources」をクリックします。
- 「Add-ons」という項目の中にある「SendGrid」をクリックし、SendGrid のダッシュボードに行きます。
- SendGrid ダッシュボード下部の「Admin User Details」に認証されたメールアドレスが表示されているので、ソースコード内の「noreply@example.com」を表示されているメールアドレスに置き換えます。
- 最後に、変更したコードを
commit
し、Heroku にpush
します。$ git push heroku
参考記事
- Mailgun | Heroku Dev Center
- Mailgun | Authorized Recipients
- SendGrid - アカウント凍結のフローとその解除方法について教えてください。
- SendGrid - アカウントの凍結を防ぐためには、どうすればいいですか?
- SendGrid - Removing the add-on | Heroku Dev Center
公式情報まとめ
Railsチュートリアルに関する公式動画・公式アカウントなどをまとめてみました。最新情報を知りたい場面などでお役立てください。
公式動画:Railsチュートリアルの歩き方
Railsチュートリアルの全体像を俯瞰したいときや、完走後のイメージを掴みたい場面でご活用ください。
公式リポジトリ:yasslab/sample_apps
GitHub 上で公開しているRailsチュートリアルの実装例です。Railsのバージョン毎にそれぞれディレクトリが分けられているので、学習中のバージョンに合わせて適宜ご参照ください。
公式アカウント
学習ロードマップ
『Railsチュートリアル前後の学習ロードマップが欲しい』といった声にお応えして作成いたしました。それぞれに適した学び方があるため『この進め方が正解』といったものはありませんが、1つの事例としてご参考になれば嬉しいです。

☝️ 図中に記載されている各種サービスの概要は、次の通りです。
Progate
対話的に学べるオンラインのプログラミング学習サービスです。初心者向けのコンテンツが特に充実しており、HTMLやCSS、JavaScript、Ruby、GitなどのWebの基本知識を学ぶには打って付けです。『Webの基礎知識を学んだ方が良さそう』と感じた場合にオススメです。『Progate Journey』を見ながら学習するのもオススメです。初心者シリーズ『開発基礎編』
Railsチュートリアルを進める前の基礎学習に最適なシリーズです。「基礎的な知識がもっと必要」「苦手だと感じる部分を集中的に学びたい」という方にオススメです。RailsチュートリアルWebテキスト
Railsチュートリアル第6版 (Rails 6.0対応) のWebテキストです。Webpack に対応したフロントエンドのセットアップ、GitHub 対応のバージョン管理、Active Storage や form_with などのにも対応した最新のWebテキストです。Railsチュートリアル解説動画
実演付きの解説動画(計38時間)を視聴しながら学ぶことができます。分からない部分があれば、理解できるまで何度も繰り返し見ることができるので、自分のペースで効率よく学習したい方に最適です。30分間のお試し視聴プランもあります。(ハッシュタグ『#Railsチュートリアル解説動画』)TechCommit
コミュニティ型の学習支援サービスです。独学での学習が不安な方にオススメです。(【Railsチュートリアルコラボ】Rails学習支援追加パックで解説動画もご覧いただけます。)ShareWis
現役Rubyエンジニアのサポート付きで学べる、解説動画の質問対応サービスです。Railsチュートリアルでは章を進めるにつれて徐々に難しくなっていきますが、オンラインの動画と質問を駆使しながら学ぶことができます。途中で挫折しそうになったときにオススメです。RUNTEQ
Railsチュートリアル解説動画も利用できるWebエンジニア養成スクールです。企業が求める実務レベルの技術習得に注力していて、国際化対応や Ajax 対応などの基礎が学べるカリキュラムや、Polymorphic の関連付けや API との繋ぎ込みが学べるカリキュラムなども用意されています。オンライン説明会も随時実施されているので、興味あれば公式ページへ。POTEPAN CAMP
Railsチュートリアル解説動画も利用できる渋谷のプログラミングスクールです。初学者向けの基礎カリキュラムが学べるオープンクラスコース(2ヶ月15万円)から、同スクール経由で転職が決まれば全額キャッシュバックに対応している選抜クラスコースまであるので、レベルに合わせてご利用いただければと思います。Railsガイド
トピック毎に体系化された、1,600ページを超えるRailsの公式ガイドです。現役のRailsエンジニアが参照する中〜上級者向けドキュメントで、英語版を『Rails Guides』、日本語版を『Railsガイド』と呼びます。『Railsガイドを効率よく活用したい』という方向けにProプランやTeamプラン、電子書籍版も提供しています。
読み物ガイド
最後の章にあるセクション『読み物ガイド』から、いくつかの項目を本ページにも転記しました。『Railsチュートリアル完走後、どうしたら?』とお悩みの場面がありましたらご参照していただけると嬉しいです。
-
Progate Journey - 学習の不安を自信に変えよう
対話的に学べるオンラインのプログラミング学習サービス『Progate』が提供する学習ロードマップです。それぞれの目的に合わせて、より実践的なWeb技術を1つずつ紹介しています。 -
Rubyist Magazine(通称「るびま」)
日本Rubyの会の有志によって発行されている、無料のWebマガジンです。最新のRuby/Railsに関する技術動向や、全国のRuby/Railsコミュニティの活動などが掲載されています。First Step Rubyでは、Rubyに関するお役立ち情報がまとめられています。 -
現場で使える Ruby on Rails 速習実践ガイド
Railsチュートリアルではminitestやerbなど、Railsのデフォルトの機能を使ってSNSを開発しましたが、実際の現場ではより多様なgemを駆使して開発が進みます。本書ではRSpecやSlimなど、Railsチュートリアルでは紹介しきれなかった様々なgemや、現場で役立つ実践的な考え方に触れることができます。(Kindle版 / 書籍版) -
パーフェクトRuby on Rails
Railsチュートリアルでプロダクト開発の基本を学びましたが、他にも非同期実行やリアルタイム通信、OAuthを使ったログインやフロントエンドと組み合わせた開発手法などがあり、奥も深いです。さらに本格的なプロダクト開発を学びたい場面でぜひ!(Kindle版 / 書籍版) -
プロを目指す人のためのRuby入門 - 言語仕様からテスト駆動開発・デバッグ技法まで
Rubyにおけるリファクタリングの要点やテスト駆動開発、デバッグのやり方など、開発現場で必要になる知識を解説しています。Railsチュートリアルでは必要最低限のRubyの知識を学びましたが、さらに1歩進んで、プロとして通用するRubyのコードを書きたい方にオススメです。(Kindle版 / 書籍版) -
Everyday Rails - RSpecによるRailsテスト入門
Railsチュートリアルなどを読んで、RailsによるWebアプリケーション開発やテスト駆動開発を理解した方を対象に書かれた有料の書籍です。Railsチュートリアルでは伝えきれなかった境界値テストやCRUDメソッドのテスト方法など、テストに関する詳細な技術が学べるので、「テストの技術についてもっと具体的に学びたい」という方にオススメです。なお、いくつかの章は無料で読むことができるので、まずはザッと目を通してみることをオススメします。 -
Railsガイド
トピック毎に体系化された、1,600ページを超えるRailsの公式ガイドです。現役のRailsエンジニアが参照する中〜上級者向けドキュメントで、英語版を『Rails Guides』、日本語版を『Railsガイド』と呼びます。『Railsガイドを効率よく活用したい』という方向けにProプランやTeamプラン、電子書籍版も提供しています。
上記の他、公式の YouTube チャンネルからは『初心者が6ヶ月で作ったプロダクト開発例』や『医者からエンジニアになった話』などの動画も公開しています。今後も YouTube から公開していく予定なので、よければチャンネル登録もぜひ!😆💖
Railsチュートリアル運営チームに伝えたいことや、『Railsチュートリアルを参考にWebサービスを作った!』『学んだことが就職・転職にも繋がった!』といったご報告などありましたら、@RailsTutorialJP までお気軽にご連絡していただけると嬉しいです 😌💖
Railsチュートリアルは『創る・学ぶ』を支援する YassLab 株式会社によって運営されています。
コンテンツを継続的に提供するため、書籍版・動画版・質問対応などもご検討して頂けると嬉しいです!
社員研修・事業利用・広告出稿のご相談についてはお問い合わせページよりお気軽にご連絡ください ;)