小编msh*_*onj的帖子

在rails中解码JSON简单字符串引发错误

我正试图在json中往返编码/解码普通字符串,但是我收到了一个错误.

在轨道2.3.w/ruby​​ 1.8.6,它曾经工作过.

>> puts ActiveSupport::JSON.decode("abc".to_json)
abc
=> nil
Run Code Online (Sandbox Code Playgroud)

在rails 3.1beta1 w/ruby​​ 1.9.2中,它会引发错误.

ruby-1.9.2-p180 :001 > puts ActiveSupport::JSON.decode("abc".to_json)
MultiJson::DecodeError: 706: unexpected token at '"abc"'
    from /home/stevenh/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/json/common.rb:147:in `parse'
    from /home/stevenh/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/json/common.rb:147:in `parse'
    from /home/stevenh/.rvm/gems/ruby-1.9.2-p180/gems/multi_json-1.0.1/lib/multi_json/engines/json_gem.rb:13:in `decode'
    [...]
Run Code Online (Sandbox Code Playgroud)

这与nil.to_json讨论的问题几乎相同,无法解析为nil?

但是nil曾经在2.3/1.8.7中工作过.

puts ActiveSupport::JSON.decode(nil.to_json)
nil
Run Code Online (Sandbox Code Playgroud)

这是新常态吗?

json ruby-on-rails

12
推荐指数
1
解决办法
7578
查看次数

在Rails中寻求更细粒度的日志记录选项.如何将整个请求和/或单个过滤器记录到备用日志文件中?

这是一个两部分问题,但可能有相同的答案.

第一部分:在我们的应用程序中,一个特定的控制器受到了很多打击- 以至于我们希望将它记录在与所有其他请求分开的文件中.设置FoosController.logger不是我正在寻找的,因为请求会运行一些具有其logger对象的lib文件和活动记录对象,rails会在将控制权交给相关控制器之前记录一些信息.

第二部分:我们在根application_controller.rb中包含了一个全局的前置过滤器,它在大多数控制器的大多数操作之前运行.这个before_filter在日志中非常冗长,并且是将所有日志信息发送到单独文件的候选者.此过滤器之前还会调用libs和ActiveRecord代码,并使用它们对记录器的引用.

一种可能的解决方案是将单个控制器作为自己的独立应用程序运行.我还没有尝试过,因为它与app的内部结合在一起.这种方法对before_filter也无济于事.

有没有什么好的解决方案可以在rails应用程序中进行更细粒度的日志记录?

谢谢!

ruby-on-rails-3

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

标签 统计

json ×1

ruby-on-rails ×1

ruby-on-rails-3 ×1