草庐IT

locality-sensitive-hash

全部标签

将 Enumerable 转换为 Hash 的 Ruby 库函数

考虑对Enumerable的扩展:moduleEnumerabledefhash_onh={}eachdo|e|h[yield(e)]=eendhendend它是这样使用的:people=[{:name=>'fred',:age=>32},{:name=>'barney',:age=>42},]people_hash=people.hash_on{|person|person[:name]}ppeople_hash['fred']#=>{:age=>32,:name=>"fred"}ppeople_hash['barney']#=>{:age=>42,:name=>"barney"}是

ruby-on-rails - Rack 和 rack.request.form_vars/rack.request.form_hash

我正在做一些中间件,在它到达Rails之前更改authenticity_token参数。我可以看到env.inspect给出了rack.request.form_vars和rack.request.form_hash。两者都包含真实性token。Rails使用哪一个?为什么Rack两者都提供? 最佳答案 让我们看看源码吧!这两个变量都来自使用Rack::Request辅助类。它为请求参数提供了一个很好的接口(interface)。Rack应用程序不需要使用它,但Rails确实会使用它。变量供Rack::Request内部使用。rac

ruby-on-rails - 获取 Hash 对象的循环次数

我有一个Hash类型的对象,我想通过hash.eachdo|key,value|对其进行循环。我想获得从1开始的循环次数。是否有类似于each的方法提供此功能(同时仍提供散列键/值数据),或者我是否需要创建另一个计数器变量以在循环内递增? 最佳答案 使用each_with_index而不是each。注意:索引确实从0开始:hash.each_with_indexdo|(key,value),index| 关于ruby-on-rails-获取Hash对象的循环次数,我们在StackOver

ruby - 如何将 ruby​​ hash 转为 value 成为指向一组旧键的键?

我有这样的哈希:t={"4nM"=>"Triangle","I40"=>"Triangle","123"=>"Square"}我想把它变成像这样的散列:{"Triangle"=>["4nM","I40"],"Square"=>["123"]}执行此操作的最佳方法是什么?我从group_by开始,但是代码变得有点复杂....这是我做的:t.group_by{|k,v|v}.map{|type,group|{type=>group.flatten.reject{|x|x==type}}} 最佳答案 h={"4nM"=>"Triangle

ruby-on-rails - Hash.except() 不适用于符号键

我有一段代码,其中这一行:user.attributes.except('created_at','created_by','updated_at','updated_by','id')有效(返回带有作为参数传递的键的散列,从中移除),同时将其更改为:user.attributes.except(:created_at,:created_by,:updated_at,:updated_by,:id)没有(返回的散列仍然包含所有键)。这怎么可能? 最佳答案 因为attributes返回一个Hash,其键为字符串而不是符号。http:/

ruby - 库未加载 :/opt/local/lib/libffi. 5.dylib 但我正在使用 Homebrew 软件

我正在尝试在MacOSXLion(XCode4.3+OSXGCCInstaller+Homebrew)上运行guard错误信息:Librarynotloaded:/opt/local/lib/libffi.5.dylib我没有/opt/local目录,因为我使用的不是MacPorts,而是Homebrew我尝试了brewinstalllibffi,这是成功的,但gem仍然无法正常工作。我也试过卸载并重新安装gem,但没有成功。安装apple-gcc42的OSX10.9(Mavericks)也会出现问题。我也试过告诉gemlibffi的存在,如下所示:geminstallffi:1.0.

ruby - 如何在 hash-bang 可执行文件中引用本地 ruby​​?

我有一个以开头的Ruby可执行文件(它是一个bundlerbinstub)#!/usr/bin/envruby在我的服务器上,我通过RVM安装了Ruby193。$whichruby->/home/dtuite/.rvm/rubies/ruby-1.9.3-p0/bin/ruby在我的本地机器上,我也通过RVM安装了Ruby,但是在不同的位置(很明显!)$whichruby->/Users/davidtuite/.rvm/rubies/ruby-1.9.3-p0/bin/ruby当我尝试在服务器上运行这个可执行文件时出现错误/usr/bin/env:ruby:Nosuchfileordi

ruby-on-rails - gem 未加载 : NameError (uninitialized constant) | But gem works in local path

我买了一台新机器并全新安装了rbenv(我之前一直使用rvm)。Thisgem现在不会加载到我的应用程序中。我没有做任何代码更改。现在和那时的唯一区别是rbenv。Loadingdevelopmentenvironment(Rails5.2.1)irb(main):001:0>SportsApi::Fetcher::Score::NBATraceback(mostrecentcalllast):1:from(irb):1NameError(uninitializedconstantSportsApi::Fetcher)有趣的是,如果我将gem克隆到我的本地机器,然后更改Gemfile中

ruby-on-rails - Custom Rails I18n Locale 多元化帮助

我正在尝试在I18n和Rails中实现特定于语言环境的复数规则,但我没有运气。这是我正在做的:#inconfig/initializers/locale.rbI18n::Backend::Simple.send(:include,I18n::Backend::Pluralization){#ForceUseof:fewkey:ru=>{:i18n=>{:plural=>{:rule=>lambda{|n|:few}}}}}#inconfig/locales/ru.ymlru:user:one:OneUserfew:FewUsersmany:ManyUsersother:OtherUse

Ruby Hash 在 1.8.7 和 1.9.2 中的区别

给定以下脚本,我看到使用Ruby1.8.7和Ruby1.9.2的不同输出。我的问题是,强制执行此特定行为的Ruby哈希发生了什么变化?defto_params(_hash)params=''stack=[]_hash.eachdo|k,v|ifv.is_a?(Hash)stack["some_val"],"another_key"=>["another_val"]}n=convert_params(q)putsnRuby1.8.7输出:some_key=some_val&another_key=another_valRuby1.9.2输出:some_key=["some_val"]&a