草庐IT

block-cipher

全部标签

ruby-on-rails - 如何使用 OpenSSL::Cipher 加密 UTF-8 字符串中的数据?

在Rails3.0(Ruby1.9.2)应用程序中,我正在尝试使用如下方式加密一些数据:cipher=OpenSSL::Cipher.new'aes-256-cbc'cipher.encryptcipher.key=cipher.random_keycipher.iv=cipher.random_ivencrypted=cipher.update'mostsecretdataintheworld'encrypted这将进入UTF-8数据库。我的问题是>encrypted.encoding=>#>encrypted.encode'utf-8'Encoding::UndefinedConv

ruby - 是什么启发了 Ruby 的 =begin .. =end 注释 block 语法?

我知道很多Ruby的灵感来自Perl(例如,STDIN作为全局常量)或Unixshell(例如heredoc语法)。但我不知道block注释语法从何而来。语法:=beginThisisacommentlineitexplainsthatthenextlineofcodedisplaysawelcomemessage=end这是从哪里来的?我对Perl的了解很粗略。是Perl吗? 最佳答案 是的,这是PerlPerl使用=beginThisisacommentlineitexplainsthatthenextlineofcodedis

ruby - 何时使用 block

我喜欢Rubyblock!它们背后的想法非常简洁方便。我刚刚回顾了过去一周左右的代码,基本上我写过的每一个ruby​​函数,我注意到没有一个返回值(value)!我总是使用block来传回数据,而不是返回值!我什至发现自己在考虑编写一个小的状态类,它允许我编写如下代码:something.do_stuffdo|status|status.successdo#successfulcodeendstatus.faildo#failcodeputsstatus.error_messageendend我是不是用了太多积木?是否有使用block的时间和使用返回值的时间?有什么需要注意的陷阱吗?我

ruby - 在 Ruby gsub block (正则表达式)中使用命名捕获组

我正在尝试在Ruby的block内使用命名捕获组。$1仍然有效,但我想使用我提供的名称来引用它。"foo/(bar)".gsub(/(?\(.*?\))/x)do|match|puts"$1=#{$1}and$my_word=#{$my_word}"end预期:$1=(bar)and$my_word=(bar) 最佳答案 你在找"foo/(bar)".gsub(/(?\(.*?\))/x)do|match|puts"$1=#{$1}and$my_word=#{$~[:my_word]}"end

ruby-on-rails - 在 RSpec 中,在 :all block 之前使用 let 变量

我的大部分测试中都有以下代码:describe'index'let(:company){FactoryGirl.create(:company)}let(:user){FactoryGirl.create(:user,company:company)}beforedosign_inuservisitproducts_pathend...end但我收到以下警告:WARNING:letdeclaration'user'accessedina'before(:all)'我的问题是,这样做的正确方法是什么?我找不到关于警告本身的太多信息。谢谢!编辑:我的目标是使用user变量,这样我就可以将它

ruby - 将 block 放在一行上的语法

所以我有一个像这样的Ruby方法:defsomething(variable,&block)....end我想这样调用它:something'hello'{do_it}除非这对我不起作用,否则我会遇到语法错误。如果我改为这样做,它会起作用:something'hello'dodo_itend除了那里我有点想念它在一条线上的漂亮外观。我明白为什么会这样,因为它看起来像是作为第二个变量传递的散列,但变量之间没有逗号......但我认为必须有一种方法来处理这个我失踪了。有吗? 最佳答案 你需要用括号括起你的论点:something('he

ruby - 为什么实例变量在 block 内时似乎消失了?

原谅我,伙计们。在Ruby方面,我充其量是个新手。我只是想知道对我来说似乎很奇怪的行为的解释。我正在使用Savon在我的Ruby应用程序中与SOAP服务交互的库。我注意到以下代码(在我为处理此交互而编写的类中)似乎传递了空值,我希望成员字段的值传递给它:create_session_response=client.request"createSession"dosoap.body={:user=>@user,#ThisendsupbeingemptyintheSOAPrequest,:pass=>@pass#asdoesthis.}end尽管@user和@pass都已初始化为非空字符串

ruby-on-rails - 从 before(:each) block) 中获取完整的 RSpec 测试名称

RSpec允许您通过执行以下操作在before(:each)block中获取当前运行的测试方法名称:Spec::Runner.configuredo|config|config.before:eachdo|x|x.method_name#returns'shouldbecool'endend这是为了这样的测试:requireFile.expand_path(File.dirname(__FILE__)+'/../spec_helper')describe'Helloworld'doit'shouldbecool'do#testcodeendend是否有可能在beforeblock中获得

ruby - File.open 带 block vs 不带

我有一个关于Block的问题,这两个代码的意思一样吗?代码1File::open('yozloy.txt','w')do|f|f代码2newFile=File::open('yozloy.txt','w')newFile 最佳答案 不,它们的意思不同。在第一个示例中,文件在处理完block后自动关闭。在第二个示例中,您有责任手动调用newFile.close。 关于ruby-File.open带blockvs不带,我们在StackOverflow上找到一个类似的问题:

ruby - 为什么 Ruby 中的内联字符串 block 名为 "eos"?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。这个问题似乎与helpcenter中定义的范围内的编程无关。.关闭7年前。Improvethisquestion为什么Ruby中的内联字符串block名为“eos”?更新感谢您指出正确的方法。一直以为“eos”是保留字,不过好像什么字都可以用:a=我还发现这个结构被命名为Heredoc这告诉我,即使是最愚蠢的问题也可以成为学习的机会。