Ruby:const_set在块之外?

我想用Ruby模拟一个类 。 如何编写一个处理样板代码的方法? 以下代码: module Mailgun end module Acani def self.mock_mailgun(mock) temp = Mailgun const_set(:Mailgun, mock) p Mailgun yield ensure const_set(:Mailgun, temp) end end Acani.mock_mailgun(‘mock’) { p Mailgun } 打印: “mock” Mailgun 这里发生了什么? 为什么Mailgun在块内部具有原始值? 这与Ruby绑定有关吗? Ruby版本:2.1.1p76

gemspec中的日期格式规范无效

当我尝试在Windows中使用gems时,我收到以下错误,我也提到了这个stackoverflowpost和更新的rubygems和rails。 但没有什么能解决这个问题。 以下是完整的错误, D:\> gem env [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications中的gemspec无效 /tilt-1.3.3.gemspec]:规范中的日期格式无效:“2011-08-25 00:00:00 .000000000Z” [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications中的gemspec无效 /execjs-1.2.4.gemspec]:规范中的日期格式无效:“2011-08-03 00:00: 00.000000000Z” [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications中的gemspec无效 /temple-0.3.3.gemspec]:规范中的日期格式无效:“2011-08-26 00:00: 00.000000000Z” [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications中的gemspec无效 /guard-0.6.3.gemspec]:规范中的日期格式无效:“2011-09-01 00:00:0 0.000000000Z” [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications中的gemspec无效 /guard-livereload-0.3.1.gemspec]:规范中的日期格式无效:“2011-09 -01 00:00:00.000000000Z“ [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications中的gemspec无效 /rack-cache-1.0.3.gemspec]:规范中的日期格式无效:“2011-08-27 00 :00:00.000000000Z” [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications中的gemspec无效 /tilt-1.3.3.gemspec]:规范中的日期格式无效:“2011-08-25 00:00:00 .000000000Z” [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications中的gemspec无效 /execjs-1.2.4.gemspec]:规范中的日期格式无效:“2011-08-03 00:00: 00.000000000Z” [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications中的gemspec无效 /temple-0.3.3.gemspec]:规范中的日期格式无效:“2011-08-26 00:00: 00.000000000Z” [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications中的gemspec无效 /guard-0.6.3.gemspec]:规范中的日期格式无效:“2011-09-01 00:00:0 0.000000000Z” [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications中的gemspec无效 /guard-livereload-0.3.1.gemspec]:规范中的日期格式无效:“2011-09 -01 00:00:00.000000000Z“ [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications中的gemspec无效 /rack-cache-1.0.3.gemspec]:规范中的日期格式无效:“2011-08-27 00 :00:00.000000000Z” RubyGems环境: […]

Ruby用空格大写第一个字符

一些规则:必须使用大写(不是upcase或任何其他表达式) 坚持以下内容: string = << – HERE 我喜欢炸玉米饼。 我听到 它们味道鲜美,营养丰富 这里 我需要利用空格大写每行的第一个单词,并且无法弄清楚如何完成它: 输出需要如下所示: 我喜欢炸玉米饼。 我听到 它们味道鲜美,营养丰富 任何指导或帮助将不胜感激。 我甚至会指出正确的方向,而不是答案!

假设不变的ASCII编码,Rubyist方式解码这个编码的字符串

我的程序是二进制协议的解码器。 该二进制协议中的一个字段是编码的String 。 String中的每个字符都是可打印的,并且表示一个整数值。 根据我正在解码的协议规范,它所代表的整数值取自下表,其中列出了所有可能的字符: Character Value ========= ===== 0 0 1 1 2 2 3 3 […] : 10 ; 11 < 12 = 13 […] B 18 例如,character =代表一个整数13 。 我的代码最初使用ord获取字符的ASCII代码,然后从中减去48 ,如下所示: def Decode(val) val[0].ord – 48 end …这完全有效,假设val仅包含该表中列出的字符(这在其他地方已经过validation)。 但是,在另一个问题中 ,我被告知: 您要求使用Ruby方式使用ord,使用它是违反Ruby方式的。 在我看来, ord正是我在这里所需要的,所以我不明白为什么在这里使用ord并不是一种Rubyist方式来做我想做的事情。 所以我的问题是: 首先,Rubyist在上面编写函数的方法是什么? 中学, 为什么在这里使用orr非Rubyist练习? 关于编码的注意事项:我正在解码的这个协议精确地指定了这些字符串是ASCII编码的。 这里没有其他编码可行。 像我这样的协议在我的行业(股票和商品市场)中非常普遍。

为什么我不能从哈希中读取值?

考虑以下代码: hash = {“a”=>[“B”, “C”], “b”=>[“C”], “c”=>[“D”, “E”], “d”=>[“F”]} puts hash[“a”] 这只是打印什么。 puts hash[“a”].class 这打印出NilClass 以下ruby版本中是否存在某种已知错误? ruby 2.0.0p247(2013-06-27修订版41674)[universal.x86_64-darwin13] 我希望有人可以帮助我,这让我发疯。 我的IDE是JetBrains的RubyMine。 我也尝试通过IRB直接运行它。 谢谢 PS。 操作系统是OSX

Ruby中的数字运算(需要优化)

Ruby可能不是最佳语言,但我很乐意在终端中使用它,这就是我的目标。 我需要处理从1到666666的数字,所以我列出了所有包含6但不包含7,8或9的数字。第一个数字是6 ,接下来的数字是16 ,然后是26等等。 然后我需要它打印像这样(6=6) (16=6) (26=6) ,当我有60到66范围时,我需要打印像(60 THRU 66=6) (SPSS语法)。 我有这个代码它可以工作,但它既不漂亮也不高效,所以我怎么能优化它? (可能会跟随愚蠢的代码) class Array def to_ranges array = self.compact.uniq.sort ranges = [] if !array.empty? # Initialize the left and right endpoints of the range left, right = array.first, nil array.each do |obj| # If the right endpoint is set and obj is not equal […]

我的雅虎联系人导入OmniContacts gem总是失败

我正在使用OmniContacts gem将联系人从yahoo和gmail导入我的应用程序。 现在雅虎import商停止工作了。 我的控制器上有以下操作: def contacts_callback @contacts = request.env[‘omnicontacts.contacts’] @importer = params[:importer] if session[:draw_token] @draw_token = session[:draw_token] end end def import_failed if session[:draw_token] draw = Draw.find_by_token(session[:draw_token]) if draw != nil session[:draw_token] = nil redirect_to dashboard_draw_url(draw) else session[:draw_token] = nil redirect_to root_path, alert: _(‘Draw not exists.’) end else redirect_to dashboard_show_invitation_email_friendship_url, alert: _(‘You have canceled the request.’) […]

Rake任务栏:升级:检查无法在Windows上运行。 Rails 3升级问题

有没有解决rake任务栏问题的解决方案:升级:检查windows?

Ruby:反转哈希以保留非唯一值

我有一个看起来像这样的哈希: {“a” => [1, 2, 3], “b” => [4, 5, 6], “c” => [3, 4, 5], “d” => [7, 2, 3]} 我想要做的是使用包含它的所有键的数组来创建所有现有值的哈希值,例如将上面的内容转换为: {1 => [“a”], 2 => [“a”, “d”], 3 => [“a”, “c”, “d”], 4 => [“b”, “c”]}

使用Nokogiri解析大型HTML文件

我正在尝试用Nokogiri解析http://www.pro-medic.ru/index.php?ht=246&perpage=all ,但不幸的是我无法从页面中获取所有项目。 我的简单测试代码是: require ‘open-uri’ require ‘nokogiri’ html = Nokogiri::HTML open(‘http://www.pro-medic.ru/index.php?ht=246&perpage=all’) p html.css(‘ul.products-grid-compact li .goods_container’).count 它只返回83项,但实际数量约为186。 我认为问题可能是open ,但似乎函数正确读取HTML页面。 有人遇到过同样的问题吗?