标签: ruby

使用RSpec测试哈希内容

我有这样的测试:

it "should not indicate backwards jumps if the checker position is not a king" do
    board = Board.new
    game_board = board.create_test_board
    board.add_checker(game_board, :red, 3, 3)
    x_coord = 3
    y_coord = 3
    jump_locations = {}
    jump_locations["upper_left"]  = true 
    jump_locations["upper_right"] = false 
    jump_locations["lower_left"]  = false
    jump_locations["lower_right"] = true
    adjusted_jump_locations = @bs.adjust_jump_locations_if_not_king(game_board, x_coord, y_coord, jump_locations)
    adjusted_jump_locations["upper_left"].should == true 
    adjusted_jump_locations["upper_right"].should == false 
    adjusted_jump_locations["lower_left"].should == false
    adjusted_jump_locations["lower_right"].should == false
  end 
Run Code Online (Sandbox Code Playgroud)

我知道,这是冗长的.是否有更简洁的方式来陈述我的期望.我看过文档,但我看不出在哪里压缩我的期望.谢谢.

ruby rspec expectations

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

ActiveSupport :: Memoizable引用哪种Ruby memoize模式?

所以在Rails 3.2中,不推荐使用ActiveSupport :: Memoizable.

消息如下:

DEPRECATION WARNING: ActiveSupport::Memoizable is deprecated and
will be removed in future releases,simply use Ruby memoization
pattern instead.
Run Code Online (Sandbox Code Playgroud)

它指的是"Ruby memoization pattern"(单数),好像有一个模式,我们都应该知道并参考...

我认为他们的意思是:

def my_method
  @my_method ||= # ... go get the value
end
Run Code Online (Sandbox Code Playgroud)

要么

def my_method
  return @my_method if defined?(@my_method)

  @my_method = # ... go get the value
end
Run Code Online (Sandbox Code Playgroud)

还有其他我错过的东西吗?

ruby memoization activesupport ruby-on-rails-3

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

为什么Ruby无法验证SSL证书?

这是我第一次尝试使用XMLRPC :: Client库与远程API进行交互,并且我一直收到此错误:

warning: peer certificate won't be verified in this SSL session
Run Code Online (Sandbox Code Playgroud)

搜索周围我发现有很多人犯了这个错误.通常它是自签名证书,他们只是想让它消失,所以他们像MonkeyRPC :: Client打开它的http会话一样做了像Monkey patch那样的脏东西.

我首先假设这只是客户不关心证书是否有效,所以我继续我的搜索并遇到了这个宝石.它只是强制验证所有SSL证书,如果它也不能,则会引发硬错误.这正是我想要的.我把它包括在内,再​​次运行代码,现在我得到了这个:

OpenSSL:SSL::SSLError:
  SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B:
  certificate verify failed
Run Code Online (Sandbox Code Playgroud)

当然!证书很糟糕!但我仔细检查以确保使用openssl的内置s_client,如下所示:

openssl s_client -connect sub.example.com:443
Run Code Online (Sandbox Code Playgroud)

我得到了什么:

CONNECTED(00000003)
---
Certificate chain
<snip>
Verify return code: 0 (ok)
Run Code Online (Sandbox Code Playgroud)

所以现在我们回答我的问题.OpenSSL(命令行版本)说证书很好.OpenSSL(Ruby库)不同意.我的所有网络浏览器都说证书很好.

一些可能有用的其他细节.证书是通配符,但对域有效.openssl s_client在距离Ruby代码几秒钟的同一台机器上运行.这是与Windows一起安装的Ruby 1.8.7 p357.

Ruby是否使用主机操作系统提供的CA捆绑以外的东西?有没有办法告诉Ruby使用特定的CA捆绑或系统?

ruby api openssl certificate

54
推荐指数
1
解决办法
3万
查看次数

(JSON :: ParserError)"{N}:'alihack <%eval request(\"alihack.com \")%>的意外标记

我有Ruby on Rails 3.2.11和Ruby 1.9.3的网站.

什么可能导致以下错误:

(JSON::ParserError) "{N}: unexpected token at 'alihack<%eval request(\"alihack.com\")%>
Run Code Online (Sandbox Code Playgroud)

我在日志中有几个这样的错误.所有人都试图评估请求(\"alihack.com \").

部分日志文件:

"REMOTE_ADDR" => "10.123.66.198",
"REQUEST_METHOD" => "PUT",
"REQUEST_PATH" => "/ali.txt",
"PATH_INFO" => "/ali.txt",
"REQUEST_URI" => "/ali.txt",
"SERVER_PROTOCOL" => "HTTP/1.1",
"HTTP_VERSION" => "HTTP/1.1",
"HTTP_X_REQUEST_START" => "1407690958116",
"HTTP_X_REQUEST_ID" => "47392d63-f113-48ba-bdd4-74492ebe64f6",
"HTTP_X_FORWARDED_PROTO" => "https",
"HTTP_X_FORWARDED_PORT" => "443",
"HTTP_X_FORWARDED_FOR" => "23.27.103.106, 199.27.133.183".
Run Code Online (Sandbox Code Playgroud)

199.27.133.183 - 是CLoudFlare IP."REMOTE_ADDR"=>"10.93.15.235"和"10.123.66.198"以及其他我认为是假代理的IP.

这是一个链接人与他的网站有相同的问题来自相同的IP地址(23.27.103.106).

总而言之,所有错误的常见ip是23.27.103.106,他们尝试使用ruby的eval运行脚本.

所以我的问题是:他们试图找到什么类型的漏洞?该怎么办?阻止ip?

先感谢您.

ruby json ruby-on-rails ruby-on-rails-3

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

无法在Windows上安装Aptana Studio 3.6

我想在Windows下使用Aptana Studio for Rails开发.我目前有不同的开发工具和运行(如git/ruby​​/jdk),我也想安装Aptana Studio,但我不能.下载并运行安装程序后,它正常启动,在我选择目标目录后,它开始下载prequisities.我有几个问题:

  1. 过了一会儿,它试图安装node.js(好吧,我不知道为什么,但是让它成为),有时它安装好了,但有时它只是失败而没有错误,只告诉我aptana无法安装prequisities.
  2. 如果安装了机会node.js,它会尝试安装msysgit(再次,我不知道为什么,因为我安装了git并添加到PATH).安装msysgit完成后,我得到的是"安装msysgit失败"的信息,我所能做的就是点击安装程序中的完成,告诉我无法安装prequisities.

我使用的是Win7 x64,ruby 1.9.3p-545,msysgit 1.8.4,jdk 1.7.有没有人有类似问题并成功安装了这个ide?

ruby aptana installation aptana3

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

计算文件中的行数而不将整个文件读入内存?

我正在处理大量数据文件(每个数百万行).

在开始处理之前,我想得到文件中行数的计数,然后我可以指出处理的距离.

由于文件的大小,将整个文件读入内存是不切实际的,只计算有多少行.有没有人对如何做到这一点有一个很好的建议?

ruby

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

使用哈希参数进行Ruby初始化

我发现自己对构造函数使用了哈希参数,特别是在编写用于配置的DSL或最终用户将要暴露的其他API时.我最终做的事情如下:

class Example

    PROPERTIES = [:name, :age]

    PROPERTIES.each { |p| attr_reader p }

    def initialize(args)
        PROPERTIES.each do |p|
            self.instance_variable_set "@#{p}", args[p] if not args[p].nil?
        end
    end

end
Run Code Online (Sandbox Code Playgroud)

有没有更惯用的方法来实现这一目标?抛弃常数和符号到字符串转换似乎特别令人震惊.

ruby idioms initialization dry

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

我的红宝石宝石在哪里?

Linux新手问题我猜...

我怎样才能找到gem在我的Ubuntu 10系统上安装宝石的位置?我想阅读宝石源代码,也许会改变一些东西.

ruby linux gem

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

什么是Rakefile?

我已经开始学习Ruby了,刚刚在NetBeans IDE中尝试了我的第一个hello world程序.我有一个疑问,我可以看到新项目向导创建了一组包结构.它里面有一个"Rakefile".这意味着什么,它的用途是什么?

ruby rakefile

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

Ruby中的"=〜"运算符是什么?

我在截屏视频中看到了这个,但无法弄清楚它是什么.参考表只是将其与其他运算符一起作为一般模式匹配运算符.

ruby operators

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