Simple Rails 4 ActionController :: Live示例不适用于Apache + Passenger

迪迪戈

我正在尝试准备将我们的环境迁移到Rails 4并解决所有问题。遗憾的是,我们目前使用的是Centos 5.5,因此要想使Rails正常运行,需要克服一些障碍。这包括安装python 2.6和node.js以便使extjs正常工作。

现在我被困住了。有了一个新的Rails 4.0.2应用程序,我有了一个简单的ActionController :: Live示例,可以很好地在Puma开发中正常工作。但是在使用Apache + Passenger的生产中,它根本不会将数据发送回浏览器(Firefox)

production.rb有

config.allow_concurrency = true

这是index.html中的HTML / JS。

<script>
jQuery(document).ready(function(){
   var source = new EventSource("/feed");
   source.addEventListener('update', function(e){
     console.log(e.data);
   });

});
</script>

这是控制器:

class LiveController < ApplicationController
  include ActionController::Live
  respond_to :html
  def feed
    response.headers['Content-Type']      = 'text/event-stream'
    response.headers['X-Accel-Buffering'] = 'no'

    while true do 
      response.stream.write "id: 0\n"
      response.stream.write "event: update\n"
      data = {time: Time.now.to_s}.to_json
      response.stream.write "data: #{data}\n\n"
      sleep 2
    end
  end
end

我可以看到请求发送到Firebug中的服务器,注意/ feed上的微调器:

Firebug请求通知微调器

Apache / Passenger Config具有以下功能:

LoadModule passenger_module /usr/local/ordernow/lib/ruby/gems/2.0.0/gems/passenger-4.0.27/buildout/apache2/mod_passenger.so
PassengerRoot /usr/local/ordernow/lib/ruby/gems/2.0.0/gems/passenger-4.0.27
PassengerDefaultRuby /usr/local/ordernow/bin/ruby
RailsAppSpawnerIdleTime 0
PassengerMinInstances 1

Apache日志未显示任何内容。就像它永远不会连接到服务器。另一个奇怪的事情是,命令行的curl起作用了:

     curl -k -i -H "Accept: text/event-stream" https://10.47.47.44:8446/feed
HTTP/1.1 200 OK
Date: Thu, 27 Mar 2014 16:52:52 GMT
Server: Apache/2.2.20 (Unix) mod_ssl/2.2.20 OpenSSL/1.0.0e Phusion_Passenger/4.0.27
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-UA-Compatible: chrome=1
X-Accel-Buffering: no
Cache-Control: no-cache
X-Request-Id: 46fca6bb-4c6a-49f4-b0d6-2cbc5f0a63a5
X-Runtime: 0.002065
X-Powered-By: Phusion Passenger 4.0.27
Set-Cookie: request_method=GET; path=/
Status: 200 OK
Vary: Accept-Encoding
Transfer-Encoding: chunked
Content-Type: text/event-stream

id: 0
event: update
data: {"time":"2014-03-27 10:52:52 -0600"}

id: 0
event: update
data: {"time":"2014-03-27 10:52:54 -0600"}

我认为这一定是Apache中的东西,但是我不确定。

迪迪戈

好的,我最终通过一堆谷歌搜索发现了这一点,这使我想到mod_deflate(用于压缩对浏览器的响应)将干扰非缓冲响应,例如文本/事件流。

查看我的httpd.conf,我发现了这一点:

SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI \.(?:gif|jpg|png|ico|zip|gz)$ no-gzip

# Restrict compression to these MIME types
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/css

# Level of compression (Highest 9 - Lowest 1)
DeflateCompressionLevel 9

SetOutputFilter DEFLATE为所有响应打开压缩,从而使其余的AddOutputFilterByType指令不再需要。这显然是httpd.conf中的错误。我删除了这一行,并确认压缩仍适用于html页面。

现在一切正常!以及我最初尝试使用的仪表板工具。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Simple Rails 4 ActionController :: Live示例不适用于Apache + Passenger

来自分类Dev

选择Faye或Rails 4 Actioncontroller :: Live的困惑

来自分类Dev

Rails 4中的ActionController :: InvalidAuthenticityToken

来自分类Dev

rails4 // ActionController :: UnknownFormat

来自分类Dev

Rails 4和Nginx + Passenger的缓存问题

来自分类Dev

Rails中的ActionController UnknownFormat错误4

来自分类Dev

Rails4 ActionController :: InvalidAuthenticityToken错误

来自分类Dev

jQuery插件不适用于Rails 4

来自分类Dev

Rails 4 JSON属性类型不适用于Postgres

来自分类Dev

Rails 4:模型验证不适用于创建

来自分类Dev

Rails 4强参数不适用于多态关联

来自分类Dev

Flash [:notice]适用于Webrick,但不适用于Apache + Passenger

来自分类Dev

无法在Apache + Passenger上访问Rails应用

来自分类Dev

502 Bad Gateway / rails 4 / nginx / passenger 4.0.49 /

来自分类Dev

Rails 4-设计:在注册时获取ActionController :: UnknownFormat

来自分类Dev

Rails 4中的DevController :: SessionsController#new中的ActionController :: UnknownFormat

来自分类Dev

在CareersController#create中的ActionController :: UnknownFormat for rails 4

来自分类Dev

Rails 4 ActionController :: UnknownFormat format.js错误

来自分类Dev

字体字形不适用于bootstrap 3和rails 4

来自分类Dev

remote:true选项不适用于rails 4中的文件字段

来自分类Dev

带有Paperclip的Rails 4多态图像上传不适用于所有模型

来自分类Dev

Rails 4中的“ includes”方法似乎不适用于“ where”

来自分类Dev

在使用Pow和Nginx的开发中,文件上载不适用于Rails 4

来自分类Dev

AWS凭证不适用于Rails 4和Mongoid中的Paperclip图像上传

来自分类Dev

Rails 4:创建记录的链接标记不适用于强参数

来自分类Dev

Rails 4-Devise_scope,root用户不适用于多种类型的用户(STI)

来自分类Dev

Fedora + Apache + Phusion passenger + Rails显示默认的Apache页面(始终)

来自分类Dev

如何使用apache,passenger和rails服务api子域?

来自分类Dev

如何使用apache,passenger和rails服务api子域?

Related 相关文章

  1. 1

    Simple Rails 4 ActionController :: Live示例不适用于Apache + Passenger

  2. 2

    选择Faye或Rails 4 Actioncontroller :: Live的困惑

  3. 3

    Rails 4中的ActionController :: InvalidAuthenticityToken

  4. 4

    rails4 // ActionController :: UnknownFormat

  5. 5

    Rails 4和Nginx + Passenger的缓存问题

  6. 6

    Rails中的ActionController UnknownFormat错误4

  7. 7

    Rails4 ActionController :: InvalidAuthenticityToken错误

  8. 8

    jQuery插件不适用于Rails 4

  9. 9

    Rails 4 JSON属性类型不适用于Postgres

  10. 10

    Rails 4:模型验证不适用于创建

  11. 11

    Rails 4强参数不适用于多态关联

  12. 12

    Flash [:notice]适用于Webrick,但不适用于Apache + Passenger

  13. 13

    无法在Apache + Passenger上访问Rails应用

  14. 14

    502 Bad Gateway / rails 4 / nginx / passenger 4.0.49 /

  15. 15

    Rails 4-设计:在注册时获取ActionController :: UnknownFormat

  16. 16

    Rails 4中的DevController :: SessionsController#new中的ActionController :: UnknownFormat

  17. 17

    在CareersController#create中的ActionController :: UnknownFormat for rails 4

  18. 18

    Rails 4 ActionController :: UnknownFormat format.js错误

  19. 19

    字体字形不适用于bootstrap 3和rails 4

  20. 20

    remote:true选项不适用于rails 4中的文件字段

  21. 21

    带有Paperclip的Rails 4多态图像上传不适用于所有模型

  22. 22

    Rails 4中的“ includes”方法似乎不适用于“ where”

  23. 23

    在使用Pow和Nginx的开发中,文件上载不适用于Rails 4

  24. 24

    AWS凭证不适用于Rails 4和Mongoid中的Paperclip图像上传

  25. 25

    Rails 4:创建记录的链接标记不适用于强参数

  26. 26

    Rails 4-Devise_scope,root用户不适用于多种类型的用户(STI)

  27. 27

    Fedora + Apache + Phusion passenger + Rails显示默认的Apache页面(始终)

  28. 28

    如何使用apache,passenger和rails服务api子域?

  29. 29

    如何使用apache,passenger和rails服务api子域?

热门标签

归档