Chạy 2 server trong Capybara
TIL
499
Capybara
4
Ruby
106
White

Hieu Nguyen viết ngày 23/02/2017

Khởi động một server phụ bên cạnh server chính:

require 'rack/handler/webrick'

server = Sinatra::Application # giả sử bạn dùng một server Sinatra phụ
port = 31777
Rack::Handler::WEBrick.run(server, Host: 'localhost', port: port)

Vậy là bạn đã có 2 server chạy song song với nhau. Tuy nhiên, server Sinatra mới này sẽ chạy trong cùng thread/process hiện tại và chờ request, do đó test của bạn sẽ không thể chạy được. Do đó, bạn phải có bước kế tiếp.

Daemonize server phụ

Gem daemons hỗ trợ daemonize một đoạn code ruby, giúp test của bạn chạy bình thường:

require 'daemons'

Daemons.call do 
  # Khởi động server ở đây
end

# Code

# Tắt daemons
Daemons.group.stop_all(true)

Integrate với cucumber/capybara

Bạn có thể khởi động server khi test bắt đầu chạy và tắt nó sau khi test kết thúc.

# trong support/env.rb

require 'daemons'

AfterConfiguration do
  Daemons.call do 
    require 'rack/handler/webrick'

    server = Sinatra::Application # giả sử bạn dùng một server Sinatra phụ
    port = 31777
    Rack::Handler::WEBrick.run(server, Host: 'localhost', port: port)
  end
end

at_exit do
  Daemons.group.stop_all(true)
end

References

https://github.com/cucumber/cucumber/wiki/Hooks

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Hieu Nguyen

21 bài viết.
8 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
11 3
Khi làm việc với Ruby và Rails, có lẽ không ít lần các bạn đã gặp các tác vụ download file về server của mình. Ruby hỗ trợ nhiều công cụ download k...
Hieu Nguyen viết gần 3 năm trước
11 3
White
11 4
Đối với những người đã từng xây dựng API server, chắc hẳn ai cũng đã từng hơn một lần đau đầu với việc lựa chọn thư viện JSON. Bài viết sau đây hi ...
Hieu Nguyen viết hơn 2 năm trước
11 4
White
11 0
Như đã nói trong (Link), mình sẽ chia sẻ tổng hợp kết quả của các benchmark mình đã dùng để so sánh tốc độ render JSON của các thư viện phổ biến hi...
Hieu Nguyen viết hơn 2 năm trước
11 0
Bài viết liên quan
White
1 5
Chào mọi người, với những bạn sử dụng Vagrant (hoặc các Linux Server) để làm môi trường phát triển thì khi run rspec request test (option :js = tru...
Dinh Hoang Hiep viết gần 3 năm trước
1 5
White
18 1
Toán tử XOR có tính chất: + A XOR A = 0 + 0 XOR A = A Với tính chất này, có thể cài đặt bài toán sau với độ phức tạp O(N) về runtime, và với O(1)...
kiennt viết hơn 1 năm trước
18 1
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
21 bài viết.
8 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!