我最近读了一篇关于在Ruby中使用StringIO的好post 。 然而作者没有提到的是, StringIO只是一个“我”。 没有“O” 你不能这样做,例如: s = StringIO.new s << 'foo' s << 'bar' s.to_s # => should be "foo\nbar" # => really is ''` Ruby确实需要一个StringBuffer,就像Java一样。 StringBuffers有两个重要的用途。 首先,他们让你testing一下Ruby的StringIO的输出结果。 其次,它们对于从小部件中构build长弦是有用的 – Joel一再提醒我们的事情是非常缓慢的。 有没有好的替代品? Ruby中的string是可变的,但这并不意味着我们应该总是依赖于这个function。 如果stuff很大,那么这个性能和内存要求就非常糟糕。 result = stuff.map(&:to_s).join(' ') 在Java中这样做的“正确”方式是: result = StringBuffer.new("") for(String s : stuff) { result.append(s); } 虽然我的Java有点生疏。
Ruby Struct允许使用一组访问器生成一个实例: # Create a structure named by its constant Customer = Struct.new(:name, :address) #=> Customer Customer.new("Dave", "123 Main") #=> #<Customer name="Dave", address="123 Main"> 这看起来方便而且function强大,但是,一个Hash可以做些非常相似的事情: Customer = {:name => "Dave", :address => "123 Main"} 什么是现实世界的情况下,我应该更喜欢一个结构(以及为什么),以及在select一个之前有什么警告或陷阱?
我认为通知将是它自己的资源,并has_many, through与用户模型与表示关联的连接表的关系。 具有许多通知的用户是显而易见的,然后通知将具有许多用户,因为将会有许多与许多用户相关联的标准化通知(评论通知,以下通知等)。 除了这个设置之外,我不确定如何根据应用程序中的某些事件触发创build通知。 我也有点不确定我需要如何设置路由 – 是它自己单独的资源还是嵌套在用户资源中? 如果有人可以扩展这个,我会觉得非常有帮助。 最后,阿贾克斯民意调查可能会改善这种function。 可能有一些我错过的东西,所以请填写这个,这是一个很好的一般资源。
我是.Net程序员,他正在寻找分支,并可能在当前和未来的Web应用程序中使用一些Ruby。 在Iron Ruby网站上查看最近一次发布是在一年前:2011年3月13日。自那时以来,他们的网站上也没有发布任何公告 。 所有这一切,都想到了几个问题: IronRuby死了吗? 如果项目已经死了,那么在.NET中是否还有其他的select? 如果它还活着,它仍然是一个积极维护的项目? 我在哪里可以find最新版本? 我吠叫错了树吗? 我应该把ruby作为ruby还是.Net作为.Net,两个独立的实体永远不会在同一个项目中见面? 我最近在Stackoverflow上看到了有关IronRuby的问题,所以显然人们正在使用它。 我不确定他们是否支持遗留应用程序或进行新的开发工作。
当我bundle exec rake -T (或bundle exec rake ),我得到了弃用警告: Andrews-Air:nabu agrimm$ bundle exec rake –trace -T [DEPRECATION] `last_comment` is deprecated. Please use `last_description` instead. [DEPRECATION] `last_comment` is deprecated. Please use `last_description` instead. [DEPRECATION] `last_comment` is deprecated. Please use `last_description` instead. [DEPRECATION] `last_comment` is deprecated. Please use `last_description` instead. [DEPRECATION] `last_comment` is deprecated. Please use `last_description` instead. […]
在Sinatra中,是否有可能将content_type 'application/json'为默认值? 因为我正在写api。
我使用ruby1.9.2 我试图parsing一个包含一些法语单词(例如spécifié) 的CSV文件 ,并将内容放在MySQL数据库中。 当我从CSV文件中读取行时, file_contents = CSV.read("csvfile.csv", col_sep: "$") 元素返回为ASCII-8BIT编码的string(spécifié变成sp \ xE9cifi \ xE9),然后像“spécifié”这样的string不能正确保存到我的MySQL数据库中。 耶胡达卡茨说,ASCII-8BIT是真正的“二进制”的数据,这意味着CSV不知道如何读取适当的编码。 所以,如果我试图使CSV像这样编码: file_contents = CSV.read("csvfile.csv", col_sep: "$", encoding: "UTF-8") 我得到以下错误 ArgumentError: invalid byte sequence in UTF-8: 如果我回到我的原始ASCII-8BIT编码string,并检查我的CSV读取为ASCII-8BIT的string,它看起来像这个“Non sp \ xE9cifi \ xE9”而不是“Nonspécifié”。 我无法使用"Non sp\xE9cifi\xE9".encode("UTF-8")将“Non sp \ xE9cifi \ xE9”转换为“Nonspécifié”。 因为我得到这个错误: Encoding::UndefinedConversionError: "\xE9" from ASCII-8BIT to UTF-8 Katz指出会发生这种情况,因为ASCII-8BIT并不是真正的string“编码”。 问题: 我可以得到CSV来读取我的文件在适当的编码? 如果是这样,怎么样? […]
在其他语言的正则expression式中,您可以使用// g进行全局匹配。 但是,在Ruby中: "hello hello".match /(hello)/ 只捕获一个你好 我如何捕获所有你好?
我正在玩控制台,我改变了一些模型代码,现在我想testing它。 我通常重新启动控制台。 有更快的方法吗? 也许一个控制台命令来重新加载模型代码?
轨道3似乎逃避一切,包括HTML。 我曾尝试使用原始(),但它仍然转义的HTML。 有没有解决方法? 这是我正在使用的帮助程序(/helpers/application_helper.rb): module ApplicationHelper def good_time(status = true) res = "" if status == true res << "Status is true, with a long message attached…" else res << "Status is false, with another long message" end end end 我使用这个代码在我的视图中调用助手: <%= raw(good_time(true)) %>