将哈希值转换为json字符串时,我遇到了特殊字符的问题.
使用Ruby 2.0/Rails 3.2.21,一切正常,也就是说,
puts "“".to_json
#"\u201c"
Run Code Online (Sandbox Code Playgroud)
但是使用Ruby 2.3.0/Rails 4.2.5.1我得到了
puts "“".to_json
#"“"
Run Code Online (Sandbox Code Playgroud)
有没有办法强制Ruby 2.3.0将特殊字符转换为unicode样式字符串(\uXXXX)?
备注:
请注意,在Ruby 2.3/Rails 4中,我们得到了
"“".to_json.bytesize == 5 #true
Run Code Online (Sandbox Code Playgroud)
但是,在2.0中我们得到了
"“".to_json.bytesize == 8 #true
Run Code Online (Sandbox Code Playgroud)
很明显,字符串本身是不同的,而不是不同的输出格式.
假设我在这种格式的文本文件中有数百万个字符串:
st=expand&c=22&t=button&k=fun HTTP
Run Code Online (Sandbox Code Playgroud)
这是一个字符串,我们可以看看与键的哈希st,c,t和k.文本文件中的某些字符串可能没有给定的&KEY = VALUE,因此可能如下所示:
st=expand&k=fun HTTP
Run Code Online (Sandbox Code Playgroud)
如何使用sed将字符串更改为以下内容
expand,,,fun
Run Code Online (Sandbox Code Playgroud)
也就是说,即使认为key = value不存在,我们仍然添加一个逗号.我们可以假设我们有一个固定的密钥集[st,c,t,k].
我尝试的是类似的东西(只是一个想法!!)
sed 's/\(st=\|c=\|t=\|k=\)\([\(^\&\|HTTP\)])\(\&\|HTTP\)/\3,/g' big_file
Run Code Online (Sandbox Code Playgroud)
但显然,如果c不存在,则不会添加逗号,因为它找不到任何逗号.任何想法如何处理这个?使用awk也可以接受(或任何其他快速文本处理实用程序)
谢谢!
st=expand&c=22&t=button&k=fun HTTP
c=22&t=button&k=fun HTTP
st=expand&c=22&t=party&k=fun HTTP
st=expand&c=22&k=fun HTTP
st=expand HTTP
HTTP
Run Code Online (Sandbox Code Playgroud)
expand,22,button,fun
,22,button,fun
expand,22,party,fun
expand,22,,fun
expand,,,
,,,
Run Code Online (Sandbox Code Playgroud) 假设我像这样动态创建一个模块:
app = Object.const_set('CoolModule', Module.new)
Run Code Online (Sandbox Code Playgroud)
无论如何要向该模块添加一个类?也许像这样的东西?
app << (class Application; end)
Run Code Online (Sandbox Code Playgroud)
我基本上是在尝试进行以下操作
module 'CoolModule'.turnThisIntoAModule
class Application < Rails::Application
config.blabla = 2
end
end
Run Code Online (Sandbox Code Playgroud) 在Rails 3.2中根据您的环境(生产或开发)加载不同的Javascript文件的最佳方法是什么?我正在尝试创建一个全局(是全局)javascript变量,该变量应根据环境而有所不同。该变量由JQuery调用,但是我编写的其他一些javascript文件需要该变量。
最好application.js.erb根据我们正在运行的环境生成动态的,还是我遗漏了什么?
谢谢
你如何使用Mongoid 5.1查询日期范围?我正在尝试类似的东西
Data.find(sid: 7, :created_at => (Time.parse('5-07-2015')..Time.now ))
Run Code Online (Sandbox Code Playgroud)
但这给了我一个错误
有任何想法吗?
是否可以使用以root身份运行预脚本的upstart脚本,但其余部分为normal_user.我正在尝试这样的事情:
setuid normal_user
pre-start exec su -c "echo I'm root" root
script
exec /bin/bash <<"EOT"
echo "haha, I'm normal user"
EOT
Run Code Online (Sandbox Code Playgroud)
是否有必要放弃setuid?