Help us understand the problem. What is going on with this article?

Railsチュートリアルで出会ったエラーとその対処法まとめ

私がRailsチュートリアルを進める中で出会ったエラーとその対処法についてまとめていきます。(随時更新していきます。)

rails generateに失敗する

エラー内容

/usr/local/rvm/gems/ruby-2.4.0/gems/spring-2.0.2/lib/spring/configuration.rb:37:in `pwd':
 No such file or directory - getcwd (Errno::ENOENT)

原因

バックグラウンドでRails Springプロセスが起動しているため。

対処法

springプロセスを終了させれば解消されます。

  1. 以下のコマンドを実行してspringプロセスのプロセスIDを確認
    ps ax | grep spring

  2. 以下のコマンドを実行してspringプロセスを終了
    kill <手順1で確認したspringプロセスのプロセスID>

herokuのデプロイ時にWARNINGログが出力される

原因は2つありました。ビルド自体は成功します。

エラー内容 その1

###### WARNING:
       You have not declared a Ruby version in your Gemfile.
       To set your Ruby version add this line to your Gemfile:
       ruby '2.3.4'
       # See https://devcenter.heroku.com/articles/ruby-versions for more information.

原因

GemfileにRubyのバージョン書いていなかったため。

対処法

以下の手順でGemfileにRubyのバージョンを追記
1.開発環境で使用しているRubyのバージョンを以下のコマンドで確認
ruby --version
2.Gemfileに追記
ruby '<手順1で確認したバージョン番号>'
3.herokuにデプロイ

エラー内容 その2

###### WARNING:
       No Procfile detected, using the default web server.
       We recommend explicitly declaring how to boot your server process via a Procfile.
       https://devcenter.heroku.com/articles/ruby-default-web-server

原因

Procfileに指定しない限り、デフォルトで使用されるWebサーバーがWEBrickになる。WEBrickはシングルプロセス、シングルスレッドであるため、複数のリクエストを一括処理することができない。

対処法

複数命令を並行して処理できるPumaを使用することが推奨されている。Pumaを使用するにはProcfileの作成とConfig(puma.rb)ファイルの作成が必要
1.アプリケーションのルートディレクトリに「Procfile」ファイルを作成し、以下のように追記

web: bundle exec puma -C config/puma.rb

2.configディレクトリに「puma.rb」ファイルを作成し、以下のように追記

workers Integer(ENV['WEB_CONCURRENCY'] || 2)
threads_count = Integer(ENV['RAILS_MAX_THREADS'] || 5)
threads threads_count, threads_count

preload_app!

rackup      DefaultRackup
port        ENV['PORT']     || 3000
environment ENV['RACK_ENV'] || 'development'

on_worker_boot do
end
Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away