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

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

More than 1 year has passed since last update.

私が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
m1kw
Why not register and get more from Qiita?
  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