异步发出多个HTTP请求

require ‘net/http’ urls = [ {‘link’ => ‘http://www.google.com/’}, {‘link’ => ‘http://www.yandex.ru/’}, {‘link’ => ‘http://www.baidu.com/’} ] urls.each do |u| u[‘content’] = Net::HTTP.get( URI.parse(u[‘link’]) ) end print urls 此代码以同步方式工作。 第一个请求,第二个,第三个。 我想异步发送所有请求并在完成所有请求后打印urls 。 最好的办法是什么? 纤维适合那吗?

Ruby中的“等于大于”operator =>是什么?

在Ruby on Rails教程中,我被要求输入: class Post true validates :title, :presence => true, :length => { :minimum => 5 } end 我理解这是做什么的,但我想知道=>运算符是什么。 在PHP-land中,它链接键和关联数组中的值。 这是一回事吗? 它是Ruby运算符还是Rails运算符?

在块/ lambda中产生麻烦

我有以下Ruby代码: # func1 generates a sequence of items derived from x # func2 does something with the items generated by func1 def test(x, func1, func2) func1.call(x) do | y | func2.call(y) end end func1 = lambda do | x | for i in 1 .. 5 yield x * i end end func2 = lambda […]

Ruby动态类。 如何修复“警告:来自toplevel的类变量访问”

我正在尝试编写一个程序,根据从文件中读取的配置动态定义ruby类。 我知道我可以使用Class.new来做到这一点。 这是一个示例程序: x = [1,2,3] Test = Class.new do @@mylist = x def foo puts @@mylist end end Test.new.foo 当我运行它时,我得到以下输出(与ruby 1.9.3p0一起运行): c:/utils/test.rb:4:警告:来自toplevel的类变量访问 c:/utils/test.rb:7:警告:来自toplevel的类变量访问 1 2 3 有谁知道导致这些警告的原因以及如何摆脱这些警告? 我已经尝试更换线路了 @@mylist = x 有了这个 class_variable_set(:@@mylist, x) 但是当我这样做时,我得到了这个错误: c:/utils/test.rb:7:警告:来自toplevel的类变量访问 c:/utils/test.rb:7:在`foo’中:未初始化的类变量@@ mylist in Object(NameError) 来自c:/utils/test.rb:11:in” 提前致谢!

Ruby Regex捕获两个字符串之间的所有内容(包括)

我正在尝试清理一些HTML并删除一个标签(我真的想避免使用nokogiri等)。 所以我有以下字符串出现我想要摆脱: Some junk here that’s different every time 这在我的字符串中只显示一次,我想找到一种方法将其删除。 我已经尝试用正则表达式来捕获它,但我找不到一个有效的。 我已经尝试/ (.*)/m这样/ (.*)/m ,但它也会匹配并包含文档中的任何其他 标记,我不想要。 关于如何处理这个的任何想法?

在开发中禁用Sprockets资产缓存

我正在使用Rails 3.2.13和Rails Asset Pipeline。 我想使用资产管道,所以我可以使用SASS和CoffeeScript和ERB作为我的资产,并让Pipeline自动编译它们,所以我不能在开发中关闭管道。 我不是在开发中预编译资产,甚至没有public/assets/目录。 但是,当我对包含的文件进行更改时,例如对_partial.html.erb文件中包含(呈现)的_partial.html.erb文件进行更改,而不更改包含本身的文件(在此示例layout.html.erb ),Sprockets没有检测到更改并使缓存无效,所以我不断获得相同的陈旧文件。 当我在积极开发中执行此操作时,我想禁用任何资产缓存,以便我可以对每个请求进行更改,但我无法弄清楚如何执行此操作。 我在development.rb设置了以下所有内容development.rb : config.action_controller.perform_caching = false config.action_dispatch.rack_cache = nil config.middleware.delete Rack::Cache config.assets.debug = true config.assets.compress = false config.cache_classes = false 尽管如此,即使这样,文件也会显示在tmp/cache/assets/和tmp/cache/sass/并且在将来的请求中无法进行更改。 现在我每次想要看到更改时都必须手动删除这些目录。 不幸的是,资产管道RoR指南的How Caching Works部分的全部内容是: Sprockets使用默认的Rails缓存存储来缓存开发和生产中的资产。 TODO:添加有关更改默认商店的更多信息。 那么,我如何让Sprockets按需编译资产但不缓存结果呢?

在Ruby中递归遍历哈希

我遇到了遍历Hash的这个函数的问题。 哈希可能包含一个哈希数组。 我希望该方法搜索一个id,然后只返回它找到的嵌套哈希。 它似乎适用于遍历,但它返回传入的原始值。 require ‘rubygems’ require ‘ruby-debug’ def find_by_id(node, find_this=””) if node.is_a?(Hash) node.each do |k,v| if v.is_a?(Array) v.each do |elm| if elm[“_id”] == find_this && !find_this.empty? return elm # THIS IS WHAT I WANT! else find_by_id(elm, find_this) end end end end end end x = {“name” => “first”, “_id”=>’4c96a9a56f831b0eb9000005′, “items”=>[“name” => “second”, “_id”=>’4c96a9af6f831b0eb9000009′, “others”=>[{“name” […]

param丢失或值为空:user rails 4

当我尝试提交我的注册表单时,我收到以下错误。 param丢失或值为空:user def user_params params.require(:user).permit(:name, :email, :password, :password_confirmation) end 以下是要求: {“utf8″=>”✓”, “authenticity_token”=>”YX0+4AeWlGWJiQZgbhV9cxi6TUCoibZfwh95BrK9iCQ=”, “name”=>”asasa”, “email”=>”asasas@asas.com”, “password”=>”[FILTERED]”, “confirm_password”=>”[FILTERED]”, “commit”=>”Register”} 以下是我的看法

从Ruby中的多维数组创建排列

我在Ruby中有以下多维数组: [[1,2], [3], [4,5,6]] 我需要输出以下内容: [[1,3,4], [1,3,5], [1,3,6], [2,3,4], [2,3,5], [2,3,6]] 我试过创建一个递归函数,但我运气不好。 是否有任何Rubyfunction可以帮助解决这个问题? 或者是递归执行此操作的唯一选择? 谢谢

如何解码ruby中的Rijndael(用VB.net编码)

我正在使用Rinjael在VB.NET中进行编码,需要在Ruby中进行解码。 我的VB.NET加密类看起来像这样: Private Class Encryptor Private symmetricKey As System.Security.Cryptography.RijndaelManaged Private iVector As Byte() Private Key As Byte() Public Function encrypt(ByVal data As String) As String Try Dim plainTextBytes As Byte() = System.Text.Encoding.ASCII.GetBytes(data) Dim encryptor As System.Security.Cryptography.ICryptoTransform = symmetricKey.CreateEncryptor(Key, iVector) Dim memoryStream As New System.IO.MemoryStream Dim cryptoStream As System.Security.Cryptography.CryptoStream = New System.Security.Cryptography.CryptoStream(memoryStream, encryptor, System.Security.Cryptography.CryptoStreamMode.Write) cryptoStream.Write(plainTextBytes, 0, […]