草庐IT

str_clean

全部标签

ruby-on-rails - 如何避免 `#{str}` 中的安全问题

像这样编写代码是一种方便的方法:str="John"p"Welcome,#{str}"#=>"Welcome,John"在真实的Rails应用程序中,str可能被故意写入以终止当前表达式并启动恶意代码。在我们确实需要将字符串与评估的函数值混合的情况下,如何避免使用#{}?例如:“你好,#{foo(param)}”。 最佳答案 "#{str}"有以下警告是安全的:格式本身不得由用户提供。另一方面,插入的值(str的求值)不是(求值)结果。因此,要使这段代码不安全实际上相当困难:fmt="doBadStuff()"eval('"Welc

ruby - 有人能帮助我理解 Ruby 手册中的 str.counts 示例吗?

在我看到的所有其他示例中,str.count都非常简单。它只计算字符串中参数的实例。但是Ruby手册中给出的方法的例子似乎难以理解(见下文)。它甚至不使用括号!谁能帮我解释一下?a="helloworld"a.count"lo"»5a.count"lo","o"»2a.count"hello","^l"»4a.count"ej-m"»4 最佳答案 它正在计算occurences的数量你作为参数传入的字母的数量a.count("lo")#5,counts[l,o]helloworld*****#countsall[h,e,o],but

ruby - 使用 CLEAN rake 任务的正确方法是什么?

这就是我在Rakefile中尝试做的事情:require'rake/clean'CLEAN=['coverage']这是我在日志中看到的:$rake/code/foo/Rakefile:29:warning:alreadyinitializedconstantCLEAN/Users/foo/.rvm/gems/ruby-2.1.3/gems/rake-10.3.2/lib/rake/clean.rb:61:warning:previousdefinitionofCLEANwashere我不喜欢这些警告。什么是正确的方法? 最佳答案

ruby - 为什么 `Kernel::String` 检查 `to_str` 结果,而 `Kernel::Integer` 不检查 `to_int` 结果?

Kernel::Integer和Kernel::String都通过首先尝试调用“long”方法(to_int和to_str),然后是“短”方法(分别为to_i和to_str)。两种方法都检查“短”方法结果的类,并在需要时引发错误:[1]pry(main)>classDummy[1]pry(main)*defto_i[1]pry(main)*"42"[1]pry(main)*end[1]pry(main)*defto_s[1]pry(main)*42[1]pry(main)*end[1]pry(main)*end;[2]pry(main)>Integer(Dummy.new)TypeEr

ruby-on-rails - DatabaseCleaner.clean_with( :truncate) does not reset auto incremented id

我目前在运行PostgreSQL的Rails项目中使用DatabaseCleaner,并将其设置如下。RSpec.configuredo|config|config.before(:suite)doDatabaseCleaner.clean_with(:truncation,{pre_count:true,reset_ids:true})endconfig.before(:each,js:true)doDatabaseCleaner.strategy=:truncationendconfig.before(:each)doDatabaseCleaner.strategy=:transa

ruby-on-rails - 向 Symbol 添加 to_str 方法有什么负面影响?

我在一个ruby​​应用程序中工作,在这个应用程序中,符号被用于不同的地方,而在这些地方人们通常会使用其他语言的字符串或枚举(主要用于指定配置)。所以我的问题是,为什么我不向符号添加to_str方法?这似乎是明智的,因为它允许符号和字符串之间的隐式转换。所以我可以做这样的事情而不必担心调用:symbol.to_s:File.join(:something,"something_else")#=>"something/something_else"负数与正数相同,它隐式地将符号转换为字符串,如果它导致一个模糊的错误,这可能会非常困惑,但考虑到符号的通常使用方式,我不确定这是否是一个有效的

ruby - 当文件不存在时 Rake clean 引发错误

我有一个这样的Rakefiletask:cleandosh'rm./foo'end我想防止它在文件“foo”不存在时报错。如何做到这一点?我想我想要的是:有没有办法先检查文件,然后再决定下一步做什么。例如:file'aaa'=>'bbb'dosh'cpbbbaaa'end这个任务依赖于文件'bbb'的存在,所以我想知道我可以告诉Rake我的任务依赖于不存在文件“foo”? 最佳答案 你可以通过稍微扩展rake来做到这一点:雷克文件:requireFile.join(File.dirname(__FILE__),'unfile_rak

ruby - 不小心删除了很多 "git clean -fd"的 stash 文件,现在我无法安装 Ruby

所以我真的搞砸了这个......我正在开发一个Rails应用程序,想恢复到之前的提交。我打开了一个新的shell却忘了cd进入我的项目文件夹,所以我在我的用户目录中运行了“gitreset--hard”,然后是“gitclean-fd”。在一切都消失之前我注意到了,但这里是被删除的东西:bash-3.2$gitclean-fdRemoving.CFUserTextEncodingRemoving.Trash/Removing.XauthorityRemoving.adobe/Removing.bash_historyRemoving.bash_profileRemoving.bundl

寄存器内存读写指令(一) —— 单寄存器读写 LDR / STR

CPU在处理C语言的a++操作时,变量a因为是放在在内存里的,需要先把a从内存中读取到寄存器中,运算完毕后再保存到内存中。因此,下面要介绍的是单个寄存器的读写将一个寄存器的数据写入到内存       ——STR指令从内存中读取数据保存到一个寄存器    ——LDR指令     目录1、基本内存读写指令(4个字节读写)(1)写内存STR(2)读内存LDR2、内存的其他读写方式(1个字节读写、2个字节读写)(1)加后缀B(1个字节的读写)(2)加后缀H(2个字节的读写)1、基本内存读写指令(4个字节读写)(1)写内存STRSTR的作用是将数据保存到内存中,默认情况下,一次会向内存中写入4个字节。指

c++ - 正在写入 &str[0] 缓冲区(std :string) well-defined behaviour in C++11?

charhello[]="helloworld";std::stringstr;str.resize(sizeof(hello)-1);memcpy(&str[0],hello,sizeof(hello)-1);此代码在C++98中是未定义的行为。在C++11中是否合法? 最佳答案 是的,代码在C++11中是合法的,因为std::string的存储保证是连续的,并且您的代码避免覆盖终止NULL字符(或初始化的值CharT)。来自N3337,§21.4.5[string.access]const_referenceoperator[]