标签: ruby

在ruby中调用超类中的另一个方法

class A
  def a
    puts 'in #a'
  end
end

class B < A
  def a
    b()
  end
  def b
    # here i want to call A#a.
  end
end  

ruby

47
推荐指数
2
解决办法
2万
查看次数

如何在ruby中解压缩Gzip字符串?

Zlib :: GzipReader可以采用"IO或IO类对象".正如它的输入,如文档中所述.

Zlib::GzipReader.open('hoge.gz') {|gz|
  print gz.read
}

File.open('hoge.gz') do |f|
  gz = Zlib::GzipReader.new(f)
  print gz.read
  gz.close
end
Run Code Online (Sandbox Code Playgroud)

我应该如何解开字符串?

ruby gzip zlib

47
推荐指数
6
解决办法
4万
查看次数

如何在ruby net/http中实现cookie支持?

我想使用net/http来浏览网页,为ruby类添加cookie支持.Cookie必须存储在文件中才能在脚本结束后继续存在.当然我可以阅读规范并编写某种处理程序,使用一些cookie.txt格式等等,但它似乎意味着重新发明轮子.有没有更好的方法来完成这项任务?也许某种类型的帽子类来照顾饼干?

ruby cookies

47
推荐指数
4
解决办法
4万
查看次数

如何使用Ruby OptionParser指定所需的开关(而不是参数)?

我正在写一个脚本,我想要一个--host带有值的开关,但是如果--host没有指定开关,我希望选项解析失败.

我似乎无法弄清楚如何做到这一点.文档似乎只指定了如何使参数值成为必需参数,而不是交换机本身.

ruby arguments optionparser

47
推荐指数
5
解决办法
4万
查看次数

Ruby中的Undefine变量

假设我正在使用irb,并输入a = 5.如何删除定义,a以便键入a返回NameError

一些背景:后来我想这样做:

context = Proc.new{}.binding
context.eval 'a = 5'
context.eval 'undef a'  # though this doesn't work.
Run Code Online (Sandbox Code Playgroud)

ruby metaprogramming local-variables

47
推荐指数
3
解决办法
2万
查看次数

Rails:如何为ruby模块编写测试?

我想知道如何为一个混合成几个类的模块编写单元测试但是不太知道如何去做:

  1. 我是通过在其中一个测试文件中为包含它们的类(似乎不对)编写测试来测试实例方法,还是以某种方式将所包含方法的测试保存在特定于模块的单独文件中?

  2. 同样的问题适用于类方法.

  3. 我是否应该为模块中的每个类提供单独的测试文件,例如普通的rails模型,或者它们是否存在于通用模块测试文件中(如果存在的话)?

ruby testing unit-testing module ruby-on-rails

47
推荐指数
3
解决办法
2万
查看次数

强制捆绑安装使用https://而不是git://用于基于GitHub的gems

我正在尝试构建一个rails项目,因为我正在处理的主机无法访问Internet上的git://协议(端口9418)我得到的错误就像

Fetching git://github.com/pivotal/jasmine.git
fatal: unable to connect to github.com:
github.com[0: 192.30.252.130]: errno=Connection refused
Run Code Online (Sandbox Code Playgroud)

跑步的时候bundle install.

GemFile中的相关行没有指定git://作为协议,它只是指向GitHub作为gem的源代码

gem 'jasmine', :github => 'pivotal/jasmine-gem'
Run Code Online (Sandbox Code Playgroud)

我需要做些什么来使捆绑器使用https://而不是git://从GitHub中提取宝石?

编辑:

除了编辑GemFile中的每个受影响的行之外,还有其他方法吗?如果项目的GemFile更新,我宁愿避免任何合并问题.

ruby github bundler

47
推荐指数
5
解决办法
1万
查看次数

TypeError:没有将Symbol隐式转换为Integer

尝试从哈希中改变值时遇到一个奇怪的问题.我有以下设置:

myHash = {
  company_name:"MyCompany", 
  street:"Mainstreet", 
  postcode:"1234", 
  city:"MyCity", 
  free_seats:"3"
}

def cleanup string
  string.titleize
end

def format
  output = Hash.new
  myHash.each do |item|
    item[:company_name] = cleanup(item[:company_name])
    item[:street] = cleanup(item[:street])
    output << item
  end
end
Run Code Online (Sandbox Code Playgroud)

当我执行这段代码时,我得到:"TypeError:没有将Symbol隐式转换为Integer",尽管item [:company_name]的输出是预期的字符串.我究竟做错了什么?

ruby ruby-on-rails

47
推荐指数
2
解决办法
12万
查看次数

如何在Ruby中编写复杂的多行if条件?

如何在Ruby中编写这个多行,复杂的if语句?

  if ( (aa != nil && self.prop1 == aa.decrypt)   
      || (bb != nil && self.prop2 == bb.decrypt)  
    ) && (self.id.nil? || self.id != id) 
    return true
  end
Run Code Online (Sandbox Code Playgroud)

我到了Syntax error; unexpected tOROP.

在Java中,我可以写

if (
     ( (aa != null && aa.prop1.equals(aa.decrypt()))
     || (bb != null && bb.prop2.equals(bb.decrypt()))
     )
     && (this.id != id)
   ) {

   return true;
}
Run Code Online (Sandbox Code Playgroud)

ruby conditional if-statement conditional-statements

47
推荐指数
2
解决办法
5万
查看次数

从字符串中删除所有特殊字符 - ruby

我正在用python挑战来编写ruby中的代码,特别是这个.它在页面源中包含一个非常长的字符串,带有特殊字符.我试图找到一种方法来删除它们/检查字母字符.

我尝试使用扫描方法,但我想我可能不会正确使用它.我也尝试过delete!:

    a = "PAGE SOURCE CODE PASTED HERE"
    a.delete! "!", "@"  #and so on with special chars, does not work(?) 
    a
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

谢谢

ruby special-characters

47
推荐指数
5
解决办法
6万
查看次数