1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Railsのテスト環境でのいろいろなエラーでつらい

Last updated at Posted at 2019-10-09

railsのテスト環境でやったときのいろいろなエラーの詰め合わせの記事です。
タイトルが抽象的ですみません。

rails s -e test

2019-10-06 18:13:28 WARN Selenium [DEPRECATION] Selenium::WebDriver::Chrome#driver_path= is deprecated. Use Selenium::WebDriver::Chrome::Service#driver_path= instead.
=> Booting Puma
=> Rails 5.2.3 application starting in test 
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.12.1 (ruby 2.6.3-p62), codename: Llamas in Pajamas
* Min threads: 5, max threads: 5
* Environment: test
* Listening on tcp://0.0.0.0:3000
Use Ctrl-C to stop

http://0.0.0.0:3000/
へアクセス。

Puma caught this error: No route matches [GET] "/" (ActionController::RoutingError)
# 以下、略

こんな、エラがー起こる。

config/routes.rb
root 'rails/welcome#index'

を追加する。
「Yay! You’re on Rails!」のおなじみの画面が出て安心する。

ちなみにこのページのファイルはこのパスにあるようだ。

/Users/hoge/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/railties-5.2.3/lib/rails/templates/rails/welcome/index.html.erb

curlで叩いてみる

curl localhost:3000/blogs/index/

Puma caught this error: PG::UndefinedTable: ERROR:  relation "blogs" does not exist
LINE 1: SELECT "blogs".* FROM "blogs"
                              ^
: SELECT "blogs".* FROM "blogs" (ActiveRecord::StatementInvalid)
# 以下、略。

なんだかすごい。エラーが出ている。
落ち着いてみる。

冒頭に
Puma caught this error: PG::UndefinedTable: ERROR: relation "blogs" does not existとある。
データベースがなんかおかしい?

単にrails sだと正常に返ってくる。

DBがないのか?
test用のDBを作成する。

rails db:create RAILS_ENV=test

2019-10-06 17:55:03 WARN Selenium [DEPRECATION] Selenium::WebDriver::Chrome#driver_path= is deprecated. Use Selenium::WebDriver::Chrome::Service#driver_path= instead.
Database 'todo_slim_test' already exists

DBはあるようだ。
test用にmigrateしなくてはいけないのか?

 $ rails db:migrate RAILS_ENV=test

2019-10-06 17:55:36 WARN Selenium [DEPRECATION] Selenium::WebDriver::Chrome#driver_path= is deprecated. Use Selenium::WebDriver::Chrome::Service#driver_path= instead.
== 20190818133341 CreateBlogs: migrating ======================================
-- create_table(:blogs)
   -> 0.0645s
== 20190818133341 CreateBlogs: migrated (0.0646s) =============================

ついでにseedsもやっておく。

 $ rails db:seed RAILS_ENV=test
2019-10-06 17:55:50 WARN Selenium [DEPRECATION] Selenium::WebDriver::Chrome#driver_path= is deprecated. Use Selenium::WebDriver::Chrome::Service#driver_path= instead.

再度やる。

$ rails s -e test
2019-10-06 17:55:58 WARN Selenium [DEPRECATION] Selenium::WebDriver::Chrome#driver_path= is deprecated. Use Selenium::WebDriver::Chrome::Service#driver_path= instead.
=> Booting Puma
=> Rails 5.2.3 application starting in test 
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.12.1 (ruby 2.6.3-p62), codename: Llamas in Pajamas
* Min threads: 5, max threads: 5
* Environment: test
* Listening on tcp://0.0.0.0:3000
Use Ctrl-C to stop
2019-10-06 17:56:05 +0900: Rack app error handling request { GET /blogs/index }
#<AbstractController::ActionNotFound: The action 'show' could not be found for BlogsController>

なんだか、まだなにかしなくてはいけないようだ。
developではこんなことを言われないので、DBがおかしいのかと疑ってみる。
テスト環境のDBの状態を見に行く。

rails db RAILS_ENV=test

DEPRECATION WARNING: Passing the environment's name as a regular argument is deprecated and will be removed in the next Rails version. 

Please, use the -e option instead. (called from <top (required)> at /Users/hoge/product/ruby_sandbox/rails-blog-slim/bin/rails:9)
config.eager_load is set to nil. Please update your config/environments/*.rb files accordingly:

  * development - set it to false
  * test - set it to false (unless you use a tool that preloads your test environment)
  * production - set it to true

-eオプションつけてやってと言われた。

dbを初期化する。
migrateもする。

rails db:migrate:reset
rails db:migrate
rails db -e test

つないで、DBができていることを確認した。

$ curl localhost:3000/blogs/index
[{"id":1,"title":"今日のできごと","article":"ごはんを食べて寝た","created_at":"2019-10-06T09:02:16.207Z","updated_at":"2019-10-06T09:02:16.207Z"}][

値が返ってきた。
いろいろ試した結果、たぶんDBが良くなかったんだろうという結論。

雑なポエム的なまとめ

test環境はdevelopと結構違ってつらい。
動きがおかしかったらDBをresetしてtest用に作り直す。

参考サイト
Ruby - rails db:migrate RAILS_ENV=test ができない|teratail

Ruby - rails s -e testでlocalhost:3000を見るとエラーが出てしまいます。エラーを消したいです。|teratail

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?