草庐IT

FILTER_MESSAGE_HEADER

全部标签

ruby-on-rails - 为什么在 Controller 被子类化时 Rails before_filter 被调用两次?

我在使用Rails2.3.5,我遇到了这个问题:classBaseController[:index]endclassChildController[:index,:show,:other,:actions]end问题是在ChildController上,过滤器之前的:foo被调用了两次。我已经尝试了很多解决这个问题的方法。如果我不在子项中包含:index操作,则永远不会为该操作调用它。我找到的解决方案有效,但我认为它非常难看skip_before_filter:foobefore_filter:foo,:only=>[:index,:show,:other,:actions]有没有更

ruby-on-rails - Ruby on Rails before_filter 与 ruby​​ 的初始化

只是我的一个想法。下面有什么区别before_filterclassApplicationControllerruby初始化classApplicationControllerruby的初始化方法在rails中是否按预期工作?如果是,那么我们是否可以在必须将过滤器应用于Controller中的所有操作的地方使用初始化? 最佳答案 对于每个请求,您确实会得到一个新的ApplicationController实例,但是这里最大的禁忌是您试图覆盖ActionController::Base#initialize的核心行为不调用父行为。Ap

ruby - 在 Passenger 中禁用 X-powered-by header 的标准方法?

我找不到任何方法来禁用Passenger的X-Powered-Byheader:X-Powered-By:PhusionPassenger(mod_rails/mod_rack)3.0.11是否可以在不修改其源和在HTTP服务器级别删除header的情况下做到这一点? 最佳答案 在Apache上,您可以取消设置header:#Hide/RemovethePassengerHeadersHeaderalwaysunset"X-Powered-By"Headeralwaysunset"X-Runtime"它不会删除所有名称(因为Ples

ruby - 如何使用修改后的 header 制作 HTTP GET?

使用修改后的header在Ruby中发出HTTPGET请求的最佳方式是什么?我想从日志文件的末尾获取一系列字节,并一直在玩弄以下代码,但服务器返回一个响应说“这是服务器无法理解的请求”(服务器是Apache)。require'net/http'require'uri'#with@address,@port,@pathalldefinedelsewherehttpcall=Net::HTTP.new(@address,@port)headers={'Range'=>'bytes=1000-'}resp,data=httpcall.get2(@path,headers)有没有更好的方法在R

ruby-on-rails - 'after_filter' 如何/何时工作/运行?

我正在使用RubyonRails3.1,我想知道(出于性能原因)after_filter是否在呈现View文件后运行。也就是说,当用户访问我的应用程序URL时,他/她应该显示的相关View文件在after_filter运行之前呈现,或者after_filter在运行之前呈现查看文件是否呈现?换句话说,应用程序服务器在运行after_filter或它等待运行after_filter方法,然后才发送该View数据?P.S.:我打开这个问题是因为我想运行一些系统更新(注意:这些更新不会影响View输出数据并且不会“被使用”通过“/”View所必需的)而不影响最终用户体验(例如:我的应用程序网

ruby-on-rails - rails 是如何实现 before_filter 的?

我对Rails如何实现像before_filter这样的过滤器很感兴趣。但是看了源码还是一头雾水。我注意到rails的框架维护了一个filter_chain,并在目标方法之前运行过滤器。但是,我不明白一个重要的过程:rails是如何捕获方法调用的?我的意思是,例如,我有一个类Dog,并为方法bark设置了一个before_filter。当我调用dog.bark时,rails应该以某种方式捕获此调用,并改为运行其修改后的方法。但是,我在源代码中没有找到这样的代码。任何人都可以告诉我这个想法或指出代码所在的位置吗? 最佳答案 当您设置b

ruby - 如何在 Heroku 上托管的 Ruby/Sinatra 应用程序中设置 HTTP header ?

我有一个基于Ruby和Sinatra的工作应用程序部署在Heroku上。我想利用Heroku上可用的HTTP缓存,它使用Varnish。我不确定设置header的最佳方式是什么,以及正确的语法。对最佳方法和语法有什么想法吗?beforedoheaders"Content-Type"=>"text/html;charset=utf8"endget'/'doheaders['Cache-Control']='public,max-age=600'#SOMESTUFFHEREhaml:home,{:layout=>:layout_minfooter}end 最佳答

ruby - 从 Ruby HTTP 请求中获取响应 header

我正在使用Net::HTTP通过Ruby发出HTTP请求,但我不知道如何获取所有响应header。我尝试了response.header和response.headers但没有任何效果。 最佳答案 响应对象实际上包含标题。有关详细信息,请参阅“Net::HTTPResponse”。你可以这样做:response['Cache-Control']您还可以在响应对象上调用each_header或each以遍历header。如果您真的想要响应对象之外的header,请调用response.to_hash

ruby-on-rails - rails 4 : Flash message persists for the next page view

我在布局中使用以下代码来显示两种类型的即显消息:它们都工作正常,但无论何时触发一个,它仍会出现一次额外的页面View。我没有使用任何缓存gem。为什么会这样?我该如何解决? 最佳答案 使用flash.now而不是flash.flash变量旨在在redirect之前使用,并且它会在一个请求的结果页面上持续存在。这意味着如果我们不redirect,而不是简单的render一个页面,flash消息将持续存在两个请求:它出现在呈现的页面上但仍在等待重定向(即第二个请求),因此如果您单击链接,消息将再次出现。为了避免这种奇怪的行为,在渲染而不

ruby-on-rails - 在 Rails 4 中检测用户代理 - 读取 HTTP header

我刚刚从PHP切换到RubyonRails,想知道是否有一种方法可以检测客户端设备/用户代理(读取HTTPheader),以便根据收到的请求为网站的不同版本提供服务。在PHP中我一直在使用MobileDetect这样做。一般的想法是只提供每个特定版本所需的文件。这就是为什么客户端方法不是那么有效。有没有办法用Ruby2.0.0和Rails4.0.0做类似的事情?也许有gem可以处理这样的情况? 最佳答案 检查request方法,在那里你可以获得ActionDispatch::Request您拥有所有请求参数,包括用户代理。reque