[RUBY-ON-RAILS] 하위 도메인에 카피 바라 - default_host를
RUBY-ON-RAILS하위 도메인에 카피 바라 - default_host를
내가 사용의 하위 도메인 데이터베이스 (멀티 테넌시 (multi-tenancy)를) 전환 할 것을 응용 프로그램을 가지고있다. 나는 통합 테스트 카피 바라를 사용하기 위해 노력하고있어, 그것은 정말 하위 도메인에 많이 의존한다.
나의 이해는 Capybara.default_host를 설정하면 내 모든 요청이 호스트에서 온 만들 것 뭔가 =이었다. 이 경우 될 것 같지 않습니다. 이 게시물에서, 저자는 호스트와 명시 적 URL을 방문하는 것이 좋습니다,하지만 난 여기 저기를 탐색하고있어 경우이 조금 성가신된다. 난 그냥 다음, 호스트를 설정 예상대로 내 레일 패스를 사용할 수 있도록하고 싶습니다. 확실하지 내가 잘못을하고 있지만, 여기에 내가 무엇을 시도했다입니다하고있어 :
# spec_helper.rb
RSpec.configure do |config|
config.before(:each, :type => :request) do
Capybara.default_host = 'http://app.mydomain.com'
end
end
# in some_integration_spec.rb
before do
puts "Capybara.default_host: #{Capybara.default_host}"
puts "some_app_url: #{some_app_url}"
end
이것은 출력을 산출한다 :
Capybara.default_host: http://app.mydomain.com
some_app_url: http://www.example.com/some_path
내가 도대체 뭘 잘못하고있는 겁니까? default_host에는 아무것도 할 것으로 보인다. 내가 말할 때, 나는이 매번 성가신 비트의로 방문 (Capybara.default_host +의 some_app_path) 말을하고 싶지 않아요. 왜 다른 사람이 default_host에 옵션이 존재합니까?
해결법
-
==============================
1.나는 확실히 default_host에의 사용 용도 아니지만, app_host 당신이 필요하지 않습니다. 내가 발견 한 I 레일 세션 방법 호스트를 호출하는 첫번째 필요! 요청 객체의 컨트롤러에 전달됩니다 호스트 문자열을 설정하기 위해서이다.
나는 확실히 default_host에의 사용 용도 아니지만, app_host 당신이 필요하지 않습니다. 내가 발견 한 I 레일 세션 방법 호스트를 호출하는 첫번째 필요! 요청 객체의 컨트롤러에 전달됩니다 호스트 문자열을 설정하기 위해서이다.
그럼 당신은 대신 과정에서 전화를 걸의 웹 서버를 통해 응용 프로그램을 호출하는 카피 바라에게 Capybara.app_host를 설정해야합니다. 당신이 그하지 않으면이 리디렉션을 발견하고 두 번째 요청의 호스트 정보를 떨어질 때 카피 바라 밖으로 가발.
나는이 자동으로 사물의 레일 요청 끝 알아서하지 않도록 왜 안 해요,하지만 난 명시 적으로 두 곳에서 호스트를 설정하지 않은 경우, 나는이 일치하지 않는 결과를 얻을 것으로 나타났습니다.
def set_host (host) host! host Capybara.app_host = "http://" + host end before(:each) do set_host "lvh.me:3000" end
그럼 그냥 액세스 페이지에 대한 상대 경로를 사용할 수 있습니다.
최신 정보:
카피 바라 2.x 및 카피 바라 수용 테스트를 실행하기위한 RSpec에-레일 2.12.0 도입 "기능"사양. RSpec에 레일의 새로운 FeatureExampleGroup 모듈은 RequestExampleGroup 다른 더 이상 랙 테스트 호스트에 액세스 할 수 있습니다! 방법. 지금 당신은 대신 default_url_options를 사용하려면 :
def set_host (host) # host! host default_url_options[:host] = host Capybara.app_host = "http://" + host end
-
==============================
2.당신은 하위 도메인을 포함하도록 URL을 변경해야하는 경우, 당신은 당신의 단계 정의에 app_host을 지정할 수 있습니다. 이 127.0.0.1을 가리키는 이후 lvh.me 같은 도메인을 사용합니다 :
당신은 하위 도메인을 포함하도록 URL을 변경해야하는 경우, 당신은 당신의 단계 정의에 app_host을 지정할 수 있습니다. 이 127.0.0.1을 가리키는 이후 lvh.me 같은 도메인을 사용합니다 :
Capybara.app_host = "http://#{subdomain}.lvh.me"
카피 바라를 사용하면 포트 80에서 실행되는 원격 서버를 테스트하고 있다는 app_host를 지정하고 있지만 우리의 경우, 우리는 카피 바라가 지정한 임의의 포트에서 실행되는 로컬 응용 프로그램을 테스트 할 때 가정합니다. 이 문제를 해결하려면 env.rb 파일에이 줄을 추가합니다 :
Capybara.always_include_port = true
지금 당신은 당신의 응용 프로그램의 페이지를 방문 할 때 ...
visit '/page'
... URL은 하위 도메인뿐만 아니라 응용 프로그램이 실행되고있는 포트를 지정합니다.
참고 :이 카피 바라 2.0.2을 사용하여 날 위해 일했습니다.
-
==============================
3.이 사람은 여기에 정답이 있습니다 :
이 사람은 여기에 정답이 있습니다 :
http://zurb.com/forrst/posts/Testing_Subdomains_in_Capybara-g4M
당신은하고 싶은
Capybara.current_session.driver.reset! Capybara.default_host = 'http://app.mydomain.com'
-
==============================
4.현재:
현재:
-
==============================
5.이 정확히 같은 상황은 아니지만이 어떤 사람들을 도움이 될 수 있습니다 :
이 정확히 같은 상황은 아니지만이 어떤 사람들을 도움이 될 수 있습니다 :
내 현재 프로젝트를 위해, 나는 여러 하위 도메인과 펑를 사용하고 있습니다. 테스트 스위트는 다른 포트를에 실행한다.
이 솔루션은 실행중인 카피 바라의 버전에 따라 달라집니다.
현재 최신 버전을 위해 나는 custom_env.rb이를 넣어 :
Capybara.server_host = 'myapp.dev' Capybara.server_port = 9887 Capybara.run_server = true # I don't remember what this was for. Another team member wrote this part... module ActionDispatch module Integration #:nodoc: class Session def host [Capybara.server_host, Capybara.server_port].join(':') end end end end
카피 바라 1.1.2로, 나는 위의 변경을해야했다 그러나 SERVER_HOST이 app_host하게 수정 lib 디렉토리 / 카피 바라 / server.rb]로이 같은 보석의 :
def url(path) .. if path =~ /^http/ path else # Was this (Capybara.app_host || "http://#{host}:#{port}") + path.to_s (Capybara.app_host || "http://#{host}") + ":#{port}" + path.to_s end end
from https://stackoverflow.com/questions/6536503/capybara-with-subdomains-default-host by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 어떻게 모달 오픈 링크의 콘텐츠 그래서 LINK_TO으로 부트 스트랩 모달을 추가? (0) | 2020.02.24 |
---|---|
[RUBY-ON-RAILS] 어떻게 메인 도메인을 얻기 위해 루비의 URL을 구문 분석? (0) | 2020.02.24 |
[RUBY-ON-RAILS] 레일 액티브는 : LEFT 조인은 가입 대신 INNER 조인 (0) | 2020.02.24 |
[RUBY-ON-RAILS] 60 초 안정 파이어 접속을 얻을 수없는 (127.0.0.1:7055) (0) | 2020.02.24 |
[RUBY-ON-RAILS] 결합 모델의 체크 박스와 추가 필드와 양식을 통해 has_many 레일 (0) | 2020.02.24 |