Я наследую кодовую базу, где тесты были отменены чуть более года. Я пытаюсь максимально очистить набор тестов, но мне трудно дразнить свои интеграционные тесты с помощью 1. Capybara 2. Puma, 3. Selenium, 4. Запуск сервера Rails с помощью rails s.
Вот моя первоначальная настройка и проблема с приложением Rails 4.2. Поэтому, ничего не делая с самого начала, когда я выполняю тестирование рельсов, я получаю следующую ошибку:
Capybara не может загрузить puma
для своего сервера, пожалуйста, добавьте puma
в свой проектили укажите другой сервер через что-то вроде Capybara.server = :webrick
. (LoadError).
Я хочу указать, что в отдельном файле с именем start-dev
в его содержимом содержится следующее:
rails s -b 0.0.0.0
Когда я выполняю эту командус помощью ./start-dev я могу просматривать мое приложение для разработки с этим URL-адресом, определенным в моем /etc/hosts
127.0.0.1 secure.ssl.local
Теперь вот где я начинаю сталкиваться с проблемами, читая некоторые форумы github относительноcapybara и puma, я начинаю с добавления puma в мой Gemfile и установку комплекта, но теперь я не могу увидеть свое приложение для разработки через браузер на secure.ssl.local
.
Это ошибка, которую я получаю:
/ usr / lib / ruby / 2.6.0 / uri / rfc3986_parser.rb: 67: в `split ': плохой URI (не URI?):" Tcp: //0.0.0.0 \ r: 3000"(URI :: InvalidURIError)
Я заметил, что при запуске, когда я выполняю ./start-dev
, который, если вы помните, имеет rails s -b 0.0.0.0
, я вижу это:
Booting Puma rails 4.2.11.1 application starting in development on https://0.0.0.0:3000
Так что меня смущает эта ошибка. Puma блокирует мой порт 3000
, означающий, что я должен изменить порт Puma? И что делает это еще более запутанным, так это то, что вместо запуска ./start-dev
в терминале, и я просто запускаю rails s -b 0.0.0.0
, он волшебным образом работает, за исключением того, что он работает, только если я перехожу на localhost:3000
, а не secure.ssl.localhost
. Это важно, потому что на secure.ssl.localhost у меня есть и мне нужен сертификат, а у localhost нет.
И, наконец, добавьте еще один слой путаницы, когда я запускаю тесты с установленным гемом puma изапустить rake test
Я получаю это с Puma:
Capybara запускает Puma ... * Версия 4.2.1, кодовое имя: Distant Airhorns * Мин. потоков: 0, Макс. потоков: 4 * Прослушивание по tcp://127.0.0.1:36608
И тесту требуется много времени для загрузки. Происходит многое, но я думаю, что мой вопрос можно сформулировать следующим образом? Когда я устанавливаю puma в свое приложение rails, нужно ли указывать его для определенного порта, чтобы он не конфликтовал с моим приложением? Без puma мои тесты не могут быть запущены, и мой ./start-dev
файл работает. С puma мои тесты вроде работают, но мой файл ./start-dev
больше не работает. Наверняка должен быть стандарт для настройки пумы. Спасибо.