草庐IT

ios - Swift 1.2 可选外部变量?

全部标签

ruby - RSpec 类变量测试

我正在使用RSpec测试gem中的类级实例变量(和setter)。我需要测试以下内容:如果从未使用过setter,则会提供正确的默认值。变量可以通过setter成功更新。显然这里存在运行顺序问题。如果我使用setter更改值,我就会忘记默认值是什么。我可以在setter测试之前将它保存到一个变量,然后在最后重置该值,但只有当所有setter测试都遵循相同的做法时,这才能保护我。测试变量默认值的最佳方法是什么?这是一个简单的例子:classFooclass 最佳答案 classFooDEFAULT_ITEMS=%w(foobarbaz

ruby - 将呈现的部分分配给实例变量

在rails4中,我想在页面的任何地方呈现部分内容(比如页脚)。在home_controller.rb中,我在一个类中有这个:defspree_application@test=render:partial=>'spree/shared/footer'end当我转到索引页并添加时:没有任何反应。我知道我可以在索引页面内呈现,但我想问是否有办法将呈现的链接分配给变量。谢谢!编辑:我在这个问题上犯了一个错误。我定义了:spree_application 最佳答案 您正在寻找render_to_string

ruby - 确定变量是否是值列表中的任何一个的最短/最惯用的方法是什么?

这似乎是一个非常简单的问题,但是用Ruby重写它的最短/最惯用的方法是什么?ifvariable==:aorvariable==:borvariable==:corvariable==:d#etc.我看到了这个解决方案:if[:a,:b,:c,:d].include?variable但这在功能上并不总是等价的-我相信Array#include?实际上是在查看变量对象是否包含在列表中;它没有考虑到对象可以使用def==(other)实现自己的相等性测试。正如下面有帮助的评论员所说,这种解释是不正确的。include?确实使用==但它使用数组中项目的==方法。在我的示例中,它是符号,而不是

ruby-on-rails - 如何将 Ruby 变量放入正则表达式代码中

我正在运行grep方法以通过模式匹配进行过滤。这是示例代码。companies.grep/city/但是,ruby不允许我在railsView内的block中输入area_code。相反,我不得不像这样对其进行硬编码:companies.grep/miami/请记住,城市是一个变量。例如,city=miami但是,它会更新。你知道如何通过grep方法传递变量吗?此外,我尝试了companies.grep/#{city}/,但没有成功 最佳答案 companies.grep/#{city}/#orcompanies.grepRegex

ruby - 是否可以在 Ruby 中定义带有可选参数的 block ?

我正在尝试动态定义调用另一个采用选项参数的函数的函数:classMyClass["hour","minute","second"].eachdo|interval|define_method"get_#{interval}"do|args|some_helper(interval,args)endenddefsome_helper(interval,options={})#Dosomething,withargumentsendend我希望能够以这两种方式调用MyClass的不同方法(有和没有可选参数):mc=MyClass.newmc.get_minute(:first_option

ruby - 不使用@符号访问实例变量

这是书中的一个例子:classTextCompressorattr_reader:unique,:indexdefinitialize(text)@unique=[]@index=[]add_text(text)enddefadd_text(text)words=text.splitwords.each{|word|add_word(word)}enddefadd_word(word)i=unique_index_of(word)||add_unique_word(word)@index在方法add_unique_word中,作者访问了变量unique而没有使用@符号(unique.s

ruby-on-rails - 有没有办法在 Ruby ERB 模板中列出可用变量?

假设我有一个名为my_template.html.erb的RubyERB模板,它包含以下内容:有没有办法以编程方式列出模板中的所有可用变量?例如下面的方法:deflist_out_variablestemplate=File.open("path_to/my_template.html.erb","rb").readerb=ERB.new(template)erb.this_method_would_list_out_variablesend会返回类似的东西:['div1','div2','div3']如有任何帮助,我们将不胜感激。谢谢,迈克 最佳答案

Ruby:如何将变量设置为 0,或者如果已经设置,则递增 1

我知道||=运算符,但我认为它不会对我有帮助...尝试创建一个数组来计算对象数组中“类型”的数量。array.eachdo|c|newarray[c.type]=newarray[c.type]?newarray[c.type]+1?0end有没有更优雅的方式来做到这一点? 最佳答案 types=Hash.new(-1)#Itfeelslikethisshouldbe0,buttobe#equivalenttoyourexampleitneedstobe-1array.eachdo|c|types[c.type]+=1end

ruby - rbenv:未安装版本 `2.2.3'(由 RBENV_VERSION 环境变量设置)

当我运行部署脚本时,出现错误:[cb123fad]rbenv:version`2.2.3'isnotinstalled(setbyRBENV_VERSIONenvironmentvariable)DEBUG[cb123fad](Backtracerestrictedtoimportedtasks)capaborted!SSHKit::Runner::ExecuteError:Exceptionwhileexecutingasdeploy@xx.xx.xx.xx:Exceptionwhileexecutingasdeploy@xx.xx.xx.xx:bundleexitstatus:1b

ruby-on-rails - Sorcery Gem - 外部提供商的自定义 user_info_mapping

我正在使用SorceryAuthenticationGem的0.7.7版通过NoamB在我的Rails3.2应用程序上我正在寻找一种可能性,如何连接一种为特定外部登录提供商(例如facebook、twitter)执行用户信息映射的方法。例如,我想将提供的语言环境更改为我在数据库中使用的格式,或者我想从Twitter下载用户头像作为匹配过程的一部分。默认情况下,只有通过sorcery.rb文件才能通过这种方式:config.facebook.user_info_mapping={:email=>"email",:first_name=>"first_name",:last_name=>"