2008-10-24 12 views
6

Próbuję wykryć programy klienckie Blackberry w mojej aplikacji, która działa dobrze w mojej wersji rozwojowej. Ale nic się nie dzieje po ponownym wdrożeniu aplikacji do produkcji.Szyny: Wykrywanie klienta użytkownika działa w fazie rozwoju, ale nie w fazie produkcji?

application_helper.rb

def blackberry_user_agent? 
    request.env["HTTP_USER_AGENT"] && request.env["HTTP_USER_AGENT"][/(Blackberry)/] 
    end 

application.html.erb

<% if blackberry_user_agent? -%> 
<div class="message"> 
<p>Using a Blackberry? <a href="http://mobile.site.ca/">Use the mobile optimized version</a>.</p> 
</div> 

Próbowałem wyczyszczenie pamięci podręcznej za pomocą natarcia tmp: cache: clear i wznowiona kundel kilka razy. Wygląda na to, że HTTP_USER_AGENT wraca do zera w produkcji. Używam Nginx z klastra kundla.

Odpowiedz

2

Czy używasz Apache lub nginx przed swoim kundlem (ami)?

Czy rejestrujesz plik user_agent? To z mojego nginx.conf:

log_format main '$remote_addr - $remote_user [$time_local] $request ' 
        '"$status" $body_bytes_sent "$http_referer" ' 
        '"$http_user_agent" "http_x_forwarded_for"'; 
+0

Używam nginx z klastra kundel. – dMix

+0

możesz zamieścić swoje nginx conf w sensie lub pastie? –

+0

nginx conf: http://gist.github.com/19464 – dMix

44

Spróbuj:

request.user_agent 
+0

To jest nieudokumentowane w APIdock, ale działa. –

Powiązane problemy