Ruby 3.0.3
Rails 7.0.0.alpha2
elasticsearch 7.17.1
searchkick 5.0.3
Все мои тесты проходят local
, но не на GitHub, и я не знаю, почему...
Вы знаете, как показать детали ошибки 500?
Это тест капибары
Результаты
Run echo $ELASTIC_SEARCH_URL
http://localhost:49154
health
green
create index
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 99 100 66 100 33 985 492 --:--:-- --:--:-- --:--:-- 1477
{"acknowledged":true,"shards_acknowledged":true,"index":"iot_log"}read_only_allow_delete
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 67 100 21 100 46 3000 6571 --:--:-- --:--:-- --:--:-- 9571
{"acknowledged":true}watermarks
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 654 100 418 100 236 12294 6941 --:--:-- --:--:-- --:--:-- 19818
{
"acknowledged" : true,
"persistent" : { },
"transient" : {
"cluster" : {
"routing" : {
"allocation" : {
"disk" : {
"watermark" : {
"low" : "50gb",
"flood_stage" : "10gb",
"high" : "20gb"
}
}
}
},
"info" : {
"update" : {
"interval" : "1m"
}
}
}
}
}
Run bundle exec rails test
bundle exec rails test
bundle exec rails test:controllers
# bundle exec rails test test/controllers/companies_controller_test.rb:105
bundle exec rails test:system
shell: /usr/bin/bash -e {0}
env:
RAILS_ENV: test
NODE_ENV: test
ES_HOME: /home/runner/elasticsearch/7.17.1
DB_PASSWORD: postgres
DB_PORT: 5432
REDIS_PORT: 49153
ELASTIC_SEARCH_URL: http://localhost:49154
Running 33 tests in a single process (parallelization threshold is 50)
Run options: --seed 9006
# Running:
F
Failure:
TasksControllerTest#test_should_destroy_task_&_related_permission(s)_where_user_!=_assignee [/home/runner/work/hubflo/hubflo/test/controllers/tasks_controller_test.rb:134]:
Expected response to be a <3XX: redirect>, but was a <500: Internal Server Error>
rails test test/controllers/tasks_controller_test.rb:128
Поэтому я использовал вариант rescue_from
из отвечать.
Ошибка была
#<Searchkick::ImportError: {"type"=>"index_not_found_exception", "reason"=>"no such index [companies_test]", "resource.type"=>"index_expression", "resource.id"=>"companies_test", "index_uuid"=>"_na_", "index"=>"companies_test"} on item with id '650928[31](https://github.com/Hubflo-sas/hubflo/runs/5795678731?check_suite_focus=true#step:16:31)2'>
F
Failure:
CompaniesControllerTest#test_should_destroy_company [/home/runner/work/hubflo/hubflo/test/controllers/companies_controller_test.rb:110]:
Expected response to be a <3XX: redirect>, but was a <500: Internal Server Error>
rails test test/controllers/companies_controller_test.rb:104
Мне пришлось запустить эту команду перед запуском тестов bundle exec rake searchkick:reindex:all
<500: Internal Server Error>
указывает на то, что в вашем контроллере возникло какое-то исключение, которое не было должным образом спасено. Если вы не можете воспроизвести проблему в своей среде разработки, вы можете:
begin..rescue
в действие вашего контроллера, затем внутри восстановления выполните: p $ERROR_INFO.message
( $ERROR_INFO
— это специальная переменная, которая содержит последнее спасенное исключение, это более читабельный способ использования $!
def my_controller_action
# ... (business logic)
rescue
p $ERROR_INFO.message
end
вы также можете добавить глобальный rescue_from
в свой ApplicationController
class ApplicationController
rescue_from Exception, with: :my_exception_handler
private
def my_exception_handler
# exception handling logic ( logging to Sentry for example etc.)
end
end
а вот более подробный пример из документации рельсов
rails test --backtrace
(источник здесь), там есть более интересные опции, которые вы можете использовать в своем CI или даже при локальной разработке.