如何通过“http://gems.rubyforge.org/似乎不是存储库”错误消息

问题828421问了类似的问题,但只收到一个真正的答案(更新rubygems),并且该尝试导致相同的错误。 Windows上的Ruby版本1.9.1.p243。 包含Gem,版本1.3.5。 从未安装任何gem; 从来没有为这个Ruby做任何特殊的配置。 Ruby本身和irb一样工作,“gem”运行但不能安装(也许还有其他操作)。 试过这个(从一本书): gem安装rspec 明白啦: 错误: http : //gems.rubyforge.org/似乎不是一个存储库 错误:执行gem时…(Gem :: RemoteFetcher :: FetchError)SocketError:getaddrinfo:存储控制块被破坏。 ( http://gems.rubyforge.org/yaml ) 当我使用MSIE7访问该URL(没有“yaml”)时,我得到一个标题为“Gemcutter | awesome gem hosting”的页面,并且没有任何问题在该网站上游荡。 所以我不认为 – 这是一个代理问题(虽然这都是来自企业防火墙/代理/等)。 当我转到那个URL -with-“yaml”时,它转到“ http://production.s3.rubygems.org/yaml ”并显示我认为是更新规范页面,从这开始:—!ruby/对象:gem:: SourceIndex 我没有销毁任何“存储控制块”。 那么什么阻止gem安装gem? 网络搜索显示很多人在很长一段时间内都遇到同样的问题,但是我还没有看到有人说“这是因为这个,所以要解决这个问题。” 好吧,有人建议更新“gem”,但尝试得到同样的错误。 请帮忙?

迭代Ruby中深度嵌套的哈希级别

所以我有一个哈希,对于每个哈希级别,我想存储它的键和值。 问题是,值可以是另一个哈希数组。 此外,该哈希可以包含键值对,其中值又是另一个哈希数组等等。另外,我不知道每个哈希的嵌套程度有多深。 举个例子: { :key1 => ‘value1’, :key2 => ‘value2’, :key3 => { :key4 => ‘value4’, :key5 => ‘value5’ }, :key6 => { :key7 => ‘value7’, :key8 => { :key9 => ‘value9’ } } } ..等等。 我想要做的是保存每个键,值对和其父级的ID。 我认为这可能是递归完成的,我只是不确定如何因为我不熟悉递归函数。 我知道如何正常迭代数据: myHash.each {|key, value| …Do something with the key and value … } 所以我猜测递归调用将是这样的: def save_pair […]

如何运行单个RSpec测试?

我有以下文件: /spec/controllers/groups_controller_spec.rb 我在终端中使用什么命令来运行该规范以及在哪个目录中运行命令? 我的gem文件: # Test ENVIRONMENT GEMS group :development, :test do gem “autotest” gem “rspec-rails”, “~> 2.4” gem “cucumber-rails”, “>=0.3.2” gem “webrat”, “>=0.7.2” gem ‘factory_girl_rails’ gem ’email_spec’ end 规格文件: require ‘spec_helper’ describe GroupsController do include Devise::TestHelpers describe “GET yourgroups” do it “should be successful and return 3 items” do Rails.logger.info ‘HAIL MARRY’ get :yourgroups, […]

Ruby中的’|| =’运算符

有人可以向我解释以下Ruby代码的含义吗? (我在一个人的项目中看到了这段代码): car ||= (method_1 || method_2 || method_3 || method_4) 上面的代码和下面的代码有什么区别? car = method_1 || method_2 || method_3 || method_4 ———-更新————– 好的,在阅读@ Dave的解释之后,我得到了||=运算符的含义,我的下一个问题是,如果method_2 , method_3和method_4返回一个值,哪一个值将分配给car ? (我猜car最初是零 )

Ruby中的’通过引用传递参数’?

在Ruby中,是否可以通过引用传递带有值类型语义的参数(例如Fixnum)? 我正在寻找类似于C#的’ ref ‘关键字的东西。 例: def func(x) x += 1 end a = 5 func(a) #this should be something like func(ref a) puts a #should read ‘6’ 顺便说一句。 我知道我可以使用: a = func(a)

有’variable_get’方法吗? 如果没有,我该如何创建自己的?

礼貌的irb: 2.0.0-p0 :006 > @instance_variable = “from an instance variable” => “from an instance variable” 2.0.0-p0 :007 > variable = “from a variable” => “from a variable” 2.0.0-p0 :008 > instance_variable_get(:@instance_variable) => “from an instance variable” 2.0.0-p0 :009 > variable_get(:variable) NoMethodError: undefined method `variable_get’ for main:Object from (irb):9 from /usr/local/rvm/rubies/ruby-2.0.0-p0/bin/irb:16:in `’ 2.0.0-p0 :010 > 我只是尝试以编程方式“查询”变量并返回其内容。 […]

有没有办法从UTF-8编码的文件中删除BOM?

有没有办法从UTF-8编码的文件中删除BOM? 我知道我的所有JSON文件都是用UTF-8编码的,但编辑JSON文件的数据输入人员用BOM将其保存为UTF-8。 当我运行我的Ruby脚本来解析JSON时,它失败并出现错误。 我不想手动打开58+ JSON文件并在没有BOM的情况下转换为UTF-8。

在Ruby中,为什么nil = 1评估为nil?

例如: nil[1] #=> NoMethodError nil[1]=1 #=> nil 这不仅仅是语法,因为变量也是如此: a = nil a[1] #=> NoMethodError a[1]=1 #=> nil 奇怪: nil.method(:[]=) #=> NameError [].method(:[]=) #=> # Ruby 2.3.0p0

在测试“无限循环”时,最佳做法是什么?

我的基本逻辑是在某处运行无限循环并尽可能地测试它。 拥有无限循环的原因并不重要(游戏的主循环,类似守护进程的逻辑……)而且我更多地询问有关这种情况的最佳实践。 我们以此代码为例: module Blah extend self def run some_initializer_method loop do some_other_method yet_another_method end end end 我想使用Blah.run测试方法Blah.run (我也使用RR ,但普通的rspec是一个可接受的答案)。 我认为最好的方法是分解更多,比如将循环分成另一种方法或其他方法: module Blah extend self def run some_initializer_method do_some_looping end def do_some_looping loop do some_other_method yet_another_method end end end …这允许我们测试run并模拟循环…但是在某些时候需要测试循环内的代码。 那么在这种情况下你会做什么? 只是不测试这个逻辑,意味着测试some_other_method & yet_another_method但不测试do_some_looping ? 通过模拟在某个时刻让循环中断? ……别的什么?

使用Google Analytics进行Rails 4 turbolinks

我想知道在Rails 4中实施Google Analytics跟踪代码以及turbo链接的最佳方式是什么。普通代码段是否有效? 我也看过这个gem ,但我不确定它是做什么的。