2012-03-19 2 views
2

나는 Sorcery for Authentication을 사용하고 있으며 이니셜 라이저에 제 3 자 인증을 설정해야합니다.레일 : 이니셜 라이저에서 호스트 이름 얻기

config.twitter.callback_url "http://example.dev/auth/callback?provider=twitter" 

... 내가 지역 발전에 탕을 사용하고 때 example.dev는 호스트 이름입니다 :

이니셜 라이저는 다음과 같습니다 라인을 가지고있다.

config.twitter.callback_url "#{Rails.hostname}/auth/callback?provider=twitter" 

...하지만 request.host : 그것은 준비에 있다면 응용 프로그램 등,

나는이 같은 일이 라인을 설정하려는

staging.example.com 생산, 또는 경우에 example.com 할 필요가 내가 알고있는 유일한 방법은 그것을 알고 컨트롤러 수준에서만 사용할 수 있습니다.

조건부 테스트를 사용하고 각 환경에 대해 수동으로 호스트 이름을 설정할 수 있지만 다른 로컬 및 준비 환경에서 테스트 할 때 프로그래밍 방식으로 설정할 수 있다는 것이 좋습니다.

제안 사항?

답변

4

사용 :

유닉스 "호스트 이름"유틸리티를 사용하고 문자열을 반환
`hostname` 

.

+0

백틱이 있습니까? 'config.twitter.callback_url "# {\\ hostname \'}/..."'에서와 같이? – Andrew

+0

예, 맞습니다. Rails 콘솔로 쉽게 테스트 할 수 있습니다. 콘솔로 들어가서 backticks로 "hostname"을 입력하면 되돌아 오는 것을 볼 수 있습니다. –

+0

매우 도움이됩니다. 감사합니다! – Andrew

3

Ruby 표준 라이브러리의 일부인 Socket.gethostname을 통해 호스트 이름을 가져올 수 있습니다.