处理用户发送的“字符串包含空字节”

我有一个API控制器,它接收有关媒体文件的路径和id3标签的信息,并使用PostgreSQL / Rails将它们保存到Active Record实例。 但有时用户会发送字符串,例如: “genre”=>”Hip-Hop\u0000Hip-Hop/Rap” 当试图坚持save时,Rails / Postgres对此并不十分满意: An ArgumentError occurred in internals#receive: string contains null byte activerecord (3.2.21) lib/active_record/connection_adapters/postgresql_adapter.rb:1172:in `send_query_prepared’ 如何在Ruby中清除此字符串以完全删除空字节?

Mongoid不在查询中

我对mongoid有些麻烦: test “Test candidate” do User.create(:id => 1, :sex => User::Male, :country => 1, :city => 1) User.create(:id => 2, :sex => User::Female, :country => 1, :city => 1) User.create(:id => 3, :sex => User::Female, :country => 1, :city => 1) user = User.not_in(:id => [2]).second assert_not_equal(user.id, 2) end 测试失败。 我曾尝试使用where(:id => {‘$ nid’=> [2]}),但它具有相同的效果。 […]

如何在rails中命名路由

我有一些看起来像这样的路线: match ‘hotels/:action(/:id)’, :controller => ‘hotel’, :action => /[az]+/i, :id => /[0-9]+/i 我想在我的代码中的某个地方使用类似于hotels_dislike_path的内容 ,这些内容引用/ hotels / dislike 我怎样才能做到这一点?

一元运算符的运算符优先级

关于运算符优先级的一些信息源就像这样说一元运算符就像! , ~ , + , -优先级高于赋值= 。 但是,以下表达式是可能的: !a = true # => false (with warning) a # => true ~a = 1 # => -2 a # => 1 +a = 1 # => 1 a # => 1 -a = 1 # => -1 a # => 1 考虑到这些结果,我能想到的唯一可能的解释是这些一元运算符的优先级低于赋值。 如果是这种情况,则意味着我上面提到的信息是错误的。 哪个是对的? 有不同的解释吗?

用于构建Trie数据结构的Ruby代码的说明

所以我有从维基百科中抓取的这个ruby代码,我修改了一下: @trie = Hash.new() def build(str) node = @trie str.each_char { |ch| cur = ch prev_node = node node = node[cur] if node == nil prev_node[cur] = Hash.new() node = prev_node[cur] end } end build(‘dogs’) puts @trie.inspect 我首先在控制台irb上运行它,并且每次输出node ,它每次都会给我一个空哈希{} ,但是当我实际调用带有参数’dogs’字符串的函数构建时,它实际上可以工作,并输出{“d”=>{“o”=>{“g”=>{“s”=>{}}}}} ,这是完全正确的。 这可能是一个Ruby问题,而不是关于算法如何工作的实际问题。 我真的没有足够的Ruby知识来破译那里发生的事情。

RVM查找系统gems的可执行文件

我已经安装了RVM以及ruby版本。 但是,如果我启动控制台并运行命令rails服务器,捆绑安装等,我收到此错误 bash: /usr/bin/rails: /usr/bin/ruby1.8: bad interpreter: No such file or directory 但如果我先运行rvm use 1.9.2 ,那么一切都还可以。 我尝试使用`rvm use –default 1.9.2’,但没有改变。 这是否意味着它使用与RVM中不同的ruby? 提前致谢!

DBI :: InterfaceError:无法加载驱动程序(未初始化的常量MysqlError)

我收录了gem, dbd-mysql (0.4.4) dbi (0.4.5) mysql (2.8.1) 在我运行以下代码时在rails控制台上, require ‘rubygems’ require “dbi” require ‘dbd-mysql’ dbh = DBI.connect(“DBI:Mysql:TestDB:localhost”,”username”, “pwd”) 1.9.2-p180 :001 > require ‘rubygems’ => false 1.9.2-p180 :002 > require “dbi” => false 1.9.2p180 :003 > require ‘dbd-mysql’ LoadError: no such file to load — dbd-mysql from /.rvm/gems/ruby-1.9.2-p180@rails3/gems/dbi-0.4.5/lib/dbi.rb:318:in `rescue in load_driver’ from /.rvm/gems/ruby-1.9.2-p180@rails3/gems/dbi-0.4.5/lib/dbi.rb:242:in `load_driver’ from /.rvm/gems/ruby-1.9.2-p180@rails3/gems/dbi-0.4.5/lib/dbi.rb:160:in […]

Ruby Array concat vs + speed?

我做了Ruby的数组concat() vs +操作的小性能测试, concat()太快了。 但是我不清楚为什么concat()这么快? 有人可以帮忙吗? 这是我使用的代码: t = Time.now ar = [] for i in 1..10000 ar = ar + [4,5] end puts “Time for + ” + (Time.now – t).to_s t = Time.now ar = [] for i in 1..10000 ar.concat([4,5]) end puts “Time for concat ” + (Time.now – t).to_s

错误:无法在Windows上构建gem原生扩展

我在安装’ redcarpet ‘gem时遇到以下错误。 它虽然在我朋友的机器上安装没有问题。 (我想安装它来运行yard )Ruby版本:1.9.3 cmd输出: D:\Learning\Common_POM_FW\SampleProjects>yard [error]: Missing ‘redcarpet’ gem for Markdown formatting. Install it with `gem install redcarpet` D:\Learning\Common_POM_FW\SampleProjects>gem install redcarpet Temporarily enhancing PATH to include DevKit… Building native extensions. This could take a while… ERROR: Error installing redcarpet: ERROR: Failed to build gem native extension. C:/Ruby193/bin/ruby.exe -r ./siteconf20141009-6544-978w4t.rb extconf.rb creating Makefile […]

Ruby:开始在大文件中的任意点读取

我有一些我希望筛选的日志文件。 内容正是您在日志文件中所期望的:许多单行的逗号分隔文本。 这些文件大约每个4演出。 其中一个File.each_line或foreach大约需要20分钟。 由于简单的foreach似乎……简单(而且速度慢),我认为如果我只能告诉他们从哪里开始,两个单独的线程可能能够在同一个文件上工作。 但基于我(有限的)知识,我无法决定这是否可能。 有没有办法开始在任意行读取文件?