草庐IT

matrix_before

全部标签

ruby - 是否可以在 Ruby 中执行 before_action(就像在 Rails 中一样)?

是否可以像在rails中那样在某些指定方法之前调用before_action?classCalculatorbefore_action{raiseException,"calculatorisempty"if@numbers.nil?},only:[:plus,:minus,:divide,:times]defpushnumber@numbers||=[]@numbers 最佳答案 它可以用纯Ruby来完成!一种方法是使用methodaliasingclassFoodefbar#truebarendalias_method:orig

ruby-on-rails - 当处理文件 before_save 时出错,验证后,我应该引发异常还是返回 false 并添加错误?

例如,如果我有一个通过所有验证的图像,例如大小、尺寸、类型等,但是当我必须处理它时,由于某些未知原因ImageMagick无论如何都会抛出一个错误...应该如何处理我处理那个? 最佳答案 对于Rails4和更早的版本ActiveRecordValidationsandCallbacksGuide:Ifanybeforecallbackmethodreturnsexactlyfalseorraisesanexception,theexecutionchaingetshaltedandaROLLBACKisissued[...]因此,您

ruby - RSpec - 如果我避免使用 let、let 和 before,如何实现相同的功能?

我听说最好避免在RSpec中使用its,let,let!,specify,before,和subject。关于let,let!和before,如果不使用它们,我该如何执行设置任务? 最佳答案 编写这些最佳实践的人实际上只想说“不要使用RSpec”。避免使用核心功能并仍然认为你可以把事情做好是很疯狂的。你能链接到这些最佳实践吗?我很想阅读它们,看看它们是否合理,或者只是一些j-random-guy的意见。避免before和let?什么?真的吗?避免specify,我想,这只是it的旧语法。避免特定的subject电话?我想,如果您的代

ruby - 在 RSpec 中,如何在访问主题的子上下文中添加一个 before 钩子(Hook)?

考虑以下几点:describeMyModeldocontext'updatesfields'dosubject{create(:my_model)}beforedosubject.savesubject.reloadendcontext'whenchangingfoo.bar'dobefore{subject.foo.bar=3}it{is_expected.tobe_multiple_bar}endcontext'whenchangingbaz.quux'dobefore{subject.baz.quux=3}it{is_expected.tobe_multiple_quux}end

ruby-on-rails - Rspec 和 'before_validation' 回调问题

我正在使用RubyonRails3.0.9和RSpec2。我知道使用RSpec和before_validation回调存在一些已知问题,因为before_validation在spec文件中运行时似乎不会被触发。您可以找到很多类似的问题(例如,通过执行Googlesearch)。我想知道目前是否有人想出了解决这个问题的方法?P.S.:我读到一些人建议使用模拟,其他人建议从before_validation切换到其他回调(例如:到before_save)或使用save(:validate=>false)方法(因此跳过验证)...等等...但似乎没有人解决了“真实”的问题。您认为在这种情况

ruby - 如何在之前访问标签过滤器(:suite)/before(:all) hook in RSpec?

我想访问命令行传递的标签过滤器命令行rspec--taguse_ffRSpec配置RSpec.configuredo|config|config.before:suite,type::featuredo#howdoIcheckifuse_fffilterwasspecifiedinthecommandline?iffilter[:use_ff]use_seleniumelseuse_poltergeistendendend在before(:suite)钩子(Hook)中,我想访问在配置的命令行中指定的标签过滤器。根据rspec-core代码库,包含标签过滤器存储在inclusion_f

ruby-on-rails - gmaps4rails validates before validates presence set to true

提交空地址字段时遇到以下错误。Gmaps4rails::LocationsController中的GeocodeInvalidQuery#create您必须提供一个地址我的模型classLocationtrueacts_as_gmappabledefgmaps4rails_addressaddressenddefgmaps4rails_infowindow"#{name}"#{address}"endend为什么它从不验证地址字段存在与否并直接抛出错误? 最佳答案 已在0.8.7中修复,现在通常会将错误添加到地址字段。Gmaps4r

ruby - let() 值在 before( :all) is used?

我有一个spec文件,如下所示:#foo_spec.rbclassFooenddescribeFoodolet(:foo){'foo'}subject{bar}#before(:all){foo}#Theseondexamplefailsifuncommentthisline.describe'testone'dolet(:bar){'one'}it{should=='one'}enddescribe'testtwo'dolet(:bar){'two'}it{should=='two'}endend两个示例都按预期通过。但是,如果我取消对before(:all)的注释,第二个示例将失败

ruby-on-rails - Ruby on Rails2.3.8 : Unit Testing: Rails/Ruby has setup to run before each test. 在所有测试之前运行的方法怎么样?

我想在每次运行测试时初始化数据库一次,而不是每次测试。我知道Rspec有before(:all),但我无法让它工作。我想知道Rails是否有类似的东西。 最佳答案 首先:在Test::Unit中曾经有一个before(:all)等价物,但它被删除了(不知道为什么)。其次:有很好的理由不做你想做的事——测试应该相互独立运行,而不是依赖于数据库中的状态。这样您就可以保证它完全测试您期望它测试的内容。如果您有一个更改数据库状态的测试,并且您移动它并且它在另一个期望它是另一种状态的测试之后运行-您会遇到问题。因此,所有测试必须是独立的。因此

ruby-on-rails - before_filter 与另一个 Controller

如果用户已登录,我正在尝试创建一个将检查每个页面的操作。为此,在ControllerHome中我创建了这个方法:defcheck_sessionif!session[:user_id]redirect_to:action=>'login'endend我把这段代码放在Controller的头部:before_filter:check_session,:except=>[:sub_layout,:authenticate,:login]现在我想在Home页面之外使用check_session,比如在Users页面中。在before_filter中调用不同Controller的方法的正确语法