草庐IT

before_request

全部标签

ruby-on-rails - 在其他人之后运行 Rails Controller before_action 回调

有没有一种简单的方法可以附加到Rails中Controller的before_action列表,这样以后添加的其他before_action回调将在我的回调之前而不是之后运行?我的用途是我担心其他Controller会包含,我希望包含它的Controller能够添加自己的before_action方法,然后在之后调用我的方法之一所有这些,但仍在实际行动之前。因为它是一个相当大的代码库,有很多开发人员,为了可用性,我不希望每个关注这个问题的用户都必须执行prepend_before_action或必须记住include我的模块在他们声明回调之后而不是在类的顶部。我很确定没有内置的方法可以

ruby-on-rails - Rails 2.3.14:如何序列化 ActionController::Request 对象?

我需要编写一些方法来根据Rails2.3.14Controller接收到的请求对象的种类来执行操作。但是,我不想启动整个应用程序,甚至也不想启动Controller;我只想拥有这样一个对象的编码副本,我可以在Rails环境之外使用它。不幸的是,传递给Controller​​的ActionController::Request对象在它们的内部深处包括本质上不可序列化的Proc对象。有谁知道序列化其中一个对象的方法,以便我可以将它存储在数据文件中并在另一个脚本中重新创建它?我不希望通过猴子修补Proc类来提供#marshal_dump方法..谢谢! 最佳答案

ruby-on-rails - 使用 before_action 过滤器的 RSPEC 测试索引操作

我有一个before_action过滤器,想测试索引操作是否仅在用户登录时执行。简而言之,我不知道该怎么做。我正在使用我自己的简单例份验证,我知道我可以使用CanCan或类似的,但为了我自己的学习,我正在以艰难的方式进行!ApplicationController.rbhelper_method:logged_inhelper_method:current_userdefcurrent_user@current_user||=User.find_by_id(session[:current_user])ifsession[:current_user]enddeflogged_inunl

ruby-on-rails - `dispatch_request' : 在 Net::SFTP.upload 期间没有这样的请求

我正在使用Net::SFTP将文件上传到服务器。这是代码:uri=URI.parse('sftp://host.org')io=StringIO.new(csv_string)timeout120doNet::SFTP.start(uri.host,ENV['SFTP_USER'],:password=>ENV['SFTP_PASS'],:port=>22)do|sftp|sftp.upload(io,"/ftpguest/Medstro/"+file_name)endend当我运行代码时,它成功连接到主机并上传了一个具有正确文件名的零字节文件。然后它抛出这个异常:lib/ruby/g

ruby 事件机器 + AMQP : Ensuring specific async calls happen before raising exceptions

我们正在用Ruby构建一个支持AMQP的消息传递系统。但是,我们在错误处理方面遇到了问题。我们维护一个异常白名单,这是安全的,并且RabbitMQ中的消息可以不被确认并由另一个工作人员重试。然而,对于未知或不可预见的错误,我们假设无论工作人员尝试消息多少次,同样的失败总是会发生。这意味着,当出现未知错误时,我们需要捕获它,将其记录在某个地方(目前是MySQL),然后向RabbitMQ发送一个ACK调用以从队列中删除消息。目前一切都是使用amqpgem构建的,它是用EventMachine触发的。这会导致问题,因为调用#ack方法,并不意味着ACK由于gem的异步行为已发送到Rabbit

ruby-on-rails - 验证器 before_update(ing) 一个模型

我想在编辑模型时执行一些验证,所以我认为最好的方法是使用before_update在Rails中。有人可以提供使用before_update调用的自定义验证器的示例吗?例如:我有一个主题类,我只想允许主题的创建者能够更改标题。 最佳答案 #Topic.rbbefore_update:your_custom_validationprivatedefyour_custom_validation#yourcodeend您可以使用任何回调来做到这一点。也就是说,指定过滤器并将其传递给您的方法名称的符号。您可能还想考虑添加一个用户身份验证ge

ruby-on-rails - 在 rails 初始化程序运行之前运行 rspec "before" block

我想运行一个rspecbeforeblock来在Rails初始化器运行之前设置一些东西,这样我就可以测试初始化​​器应该做什么。这可能吗? 最佳答案 如果您的初始化程序中的逻辑足够复杂,则应该对其进行测试,您应该将其提取到一个帮助程序中,您可以在不处于初始化程序上下文的情况下隔离和测试它。complex_initializer.rbconfig.database.foo=calculate_hard_stuff()config.database.bar=other_stuff()您可以将其提取到可测试的帮助程序(lib/config

ruby-on-rails - mark_for_destruction 在 before_save

这个before_save-callback有什么问题?classOrder:destroy,:inverse_of=>:orderaccepts_nested_attributes_for:line_itemsattr_accessible:line_items_attributesbefore_save:mark_line_items_for_removaldefmark_line_items_for_removalline_items.eachdo|line_item|line_item.mark_for_destructionifline_item.quantity.to_f当

ruby - 如何修补 RequestId 中间件或为什么 Heroku 不使用标准的 HTTP_X_REQUEST_ID?

Heroku推出了一个newlabsfeaturefortrackinghttp-request-id从它的路由器。一些有用的背景知识:Rails3.2推出了一个带有TaggedLogger的功能到includeauniquerequestIDintothelogs,这样您就可以跟踪给定日志行属于哪个Web请求。这在运行多个将日志流式传输到同一个日志存储的Web服务器时非常重要,例如这与Heroku或Unicorn设置等上的多个测功机很常见。现在,借助Heroku的实验室功能,Heroku路由器将生成此请求ID,以便您可以在请求进入应用程序之前从路由器级别跟踪该请求。这很重要,例如如果

ruby-on-rails - Rails - request.env ['HTTP_X_FORWARDED_FOR' ] 和 request.remote_ip 之间的区别

我正在对现有RoR应用程序添加一些更改,发现request.env['HTTP_X_FORWARDED_FOR']返回了nil。我将其更改为request.remote_ip并获得了客户端的正确IP地址。为什么request.remote_ip在request.env['HTTP_X_FORWARDED_FOR']返回nil时返回一个IP?它们之间有什么区别?我怎样才能使request.env['HTTP_X_FORWARDED_FOR']工作,我应该使用哪一个(最佳实践)? 最佳答案 通常,您应该使用request.remote_