小编agb*_*ike的帖子

铁轨4的弃用数量

a = Session.where(:date_at => date_from..date_to).
            order("date_at").
            count("DISTINCT(user_id)",
                  :group => "date(convert_tz(date_at, 'UTC', 'Europe/Warsaw'))")
Run Code Online (Sandbox Code Playgroud)

我怎么能在Rails 4中写这个?

这会产生错误:

DEPRECATION WARNING: Relation#calculate with finder options is deprecated. Please build a scope and then call calculate on it instead. (called from block (2 levels) in <top (required)> at /Users/xxx/Desktop/DEPLOY/d1_mysql/d1/app/admin/user.rb:11)
DEPRECATION WARNING: The :distinct option for `Relation#count` is deprecated. Please use `Relation#distinct` instead. (eg. `relation.distinct.count`). (called from block (2 levels) in <top (required)> at /Users/xxx/Desktop/DEPLOY/d1_mysql/d1/app/admin/user.rb:11)
Run Code Online (Sandbox Code Playgroud)

sql ruby-on-rails

6
推荐指数
1
解决办法
3691
查看次数

RSpec:“allow_any_instance_of”的替代方案是什么?

文档中,Rspec Mocks 维护者

... 出于多种原因不鼓励使用它...

列出的原因似乎与expect此功能的版本有关,但它们对两者没有区别。

我可以理解为什么expect不鼓励该版本,但该allow版本似乎没有共享列出的问题。

似乎使用该allow版本是测试某些类型行为的最方便的方法。

例子:

我正在测试某些路线的授权。一种方法是在数据库中创建一个用户,但这似乎相当笨拙,我更喜欢只创建一个模拟对象并在授权调用期间返回它。此示例是使用复杂库的测试代码的特定案例,这些库是单独测试的。

鉴于它不鼓励,什么是更好的选择?

unit-testing rspec

5
推荐指数
1
解决办法
1170
查看次数

为 Rails 中的特定路由执行机架中间件

我正在集成一个 3rd 方 API,并且在一个步骤中他们将 JSON 数据发布到我们的服务器中。

内容类型是application/json,但有效负载实际上是 gzip 压缩的。由于内容类型,rails 在尝试解析数据时抛出 ActionDispatch::ParamsParser::ParseError 异常。

我计划编写一个机架中间件来捕获异常并尝试解压缩有效负载,但我只想为该特定操作执行此操作,有没有办法仅针对特定路由执行中间件?

更新

我已经考虑过模式匹配路径,但理想情况下,我想要一些更健壮的东西,以防将来路径发生变化。

更新

关于压缩的问题可以通过下面的马特评论更好地解决,并且路由在另一个问题中得到了回答,这个问题现在被标记为重复。

rack ruby-on-rails

3
推荐指数
1
解决办法
3467
查看次数

机架中间件中的跟踪错误

我现在不是 100% 确定,但我相信我收到了一个异常,导致请求的状态以 401 响应。

我已经消除了控制器中的所有代码,但问题仍然存在,并且似乎有些东西正在捕获异常以返回 401 状态,因此没有堆栈跟踪。

我已经创建了一个自定义中间件来尝试和调试,但我仍然无法找到问题的根源。

如何隔离问题发生的位置?

我们正在使用 heroku,所以 pry 似乎不起作用,我也没有对正在运行的服务器的命令行访问权限。我无法在本地开发机器上复制该问题。

ruby rack ruby-on-rails

2
推荐指数
1
解决办法
1884
查看次数

标签 统计

ruby-on-rails ×3

rack ×2

rspec ×1

ruby ×1

sql ×1

unit-testing ×1