Rails:在开发环境下可以检测用户代理,但在生产环境下无法检测?

6

我正在尝试在我的应用程序中检测黑莓用户代理,这在我的开发版本中运行良好。但是当我重新部署应用程序到生产环境时,没有任何反应。

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>

我尝试使用 rake tmp:cache:clear 清除缓存并重新启动了几次 mongrel。在生产环境中,HTTP_USER_AGENT 显然返回 nil。我正在使用带有 mongrel 集群的 Nginx。

2个回答

44

尝试:

request.user_agent

2

您是否在mongrel(s)前面使用Apache或nginx?

您是否记录了user_agent?以下是我的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"';

我正在使用带有Mongrel集群的nginx。 - kush
你能在Gist或Pastie上发布你的Nginx配置吗? - Mike Breen
我尝试将其添加到conf的第21行并重新启动服务器。仍然不起作用,还有其他想法吗? - kush
所有这些代码行都设置了日志的格式。你有检查nginx日志,看看黑莓的用户代理报告是什么吗? - Mike Breen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接