NoMethodError on rails xml builder + cache #2108

Closed
nanaya opened this Issue Dec 28, 2012 · 3 comments

Comments

Projects
None yet
3 participants

nanaya commented Dec 28, 2012

(and garbled characters without cache)

Demo application: https://github.com/edogawaconan/testutf8

(pardon the gemfile requirements)

Start rails and visit /test.atom to reproduce the error. Also additionally visit /test2.atom to see how the character becomes garbled without cache.

### assuming rbx with RBXOPT=-X19
### with nodejs' node somewhere in PATH
cd /some/where
git clone https://github.com/edogawaconan/testutf8
cd testutf8
rbx -S gem install bundler
rbx -S bundle install
rbx -S bundle exec rails s
### and then open/curl the aforementioned url - http://localhost:3000/test.atom etc

Notice that same variable rendered properly in html (/test.html).

No actual memcached server is required.

Contributor

Gibheer commented Dec 28, 2012

The following code is what the cache executes

# encoding: utf-8                                                                                                                                                        
s = '<?xml version="1.0" encoding="UTF-8"?>                                                                                                                              
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom">                                                                                                              
  <id>tag:zero-knowledge.org,2005:/test</id>                                                                                                                             
  <link rel="alternate" type="text/html" href="http://zero-knowledge.org:3000/"/>                                                                                        
  <link rel="self" type="application/atom+xml" href="http://zero-knowledge.org:3000/test.atom"/>                                                                         
  <author>椎名深夏</author>                                                                                                                                                
</feed>'                                                                                                                                                                 
f = s.slice!(0..-1)                                                                                                                                                      
puts f.inspect

The line causing the slice! is in actionpack. As it is building a Range there, I can't introduce nil as that would break.

Owner

dbussink commented Dec 28, 2012

The method missing error was fixed with 9653426, but the underlying string corruption still needs to be fixed.

The problem is that String#tr isn't encoding aware yet and replaces strings wrong.

Owner

dbussink commented Feb 13, 2013

Closing this one since the remaining problem of the invalid character is in issue #2157

@dbussink dbussink closed this Feb 13, 2013

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment