草庐IT

activesupport

全部标签

ruby-on-rails - 如果 Object::try 被发送到一个 nil 对象,为什么它会起作用?

如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象

ruby-on-rails - 在默认方法参数中使用 .reverse_merge 或 .merge

两者都可以defsetup(options={})options.reverse_merge:size=>25,:velocity=>10end和defsetup(options={}){:size=>25,:velocity=>10}.merge(options)end在方法的参数中分配默认值。问题是:哪个更好?您更愿意使用哪一个?在性能、代码可读性或其他方面有什么不同吗?编辑:我无意中添加了bang(!)...并不是要询问nobang方法与bang方法之间的区别 最佳答案 我倾向于使用reverse_merge方法:option

ruby-on-rails - 如何从过时的 TZInfo 标识符中获取 Rails TimeZone 名称?

已经有一个问题回答了如何将“America/Los_Angeles”转换为“PacificTime(US&Canada)”。但是我想将“美国/太平洋”和其他过时的时区转换为RailsTimeZone。我无法在图书馆中找到任何可以帮助我完成此任务的东西。 最佳答案 来自RailsActiveSupport::TimeZonedocs:TheversionofTZInfobundledwithActiveSupportonlyincludesthedefinitionsnecessarytosupportthezonesdefinedb

ruby-on-rails - 当需要 active_support 时,cattr_accessor 不工作(在 rails 之外)?

我不熟悉active_support,所以请多多包涵!Fox'slibrary允许通过谷歌的API进行搜索,但它需要积极的支持。我似乎无法让它工作!有什么想法吗?require'rubygems'require'active_support'require'google_search'pGoogleSearch.web:q=>"HelloWorld!"给我:NoMethodError:undefinedmethod‘cattr_accessor’forGoogleSearch:Class知道我做错了什么吗? 最佳答案 通过更多的谷歌

ruby - 在多个线程中引用类方法会导致自动加载循环依赖崩溃

代码:threads=[]Thread.abort_on_exception=truebegin#throwexceptionsinthreadssowecanseethemthreadseputs"EXCEPTION:#{e.inspect}"puts"MESSAGE:#{e.message}"end崩溃:.rvm/gems/ruby-2.1.3@req/gems/activesupport-4.1.5/lib/active_support/dependencies.rb:478:inload_missing_constant':自动加载常量MyClass时检测到循环依赖稍加研究后,

ruby - Rails 比较 date.end_of_day.to_datetime 和 date.to_datetime.end_of_day 返回的日期对象值时返回 false

ruby1.9.3dev(2011-09-23修订版33323)[i686-linux]轨道3.0.20最近为什么在与DateTimeonRails相关的RSpecs项目上工作我发现在给定日期以下语句发出的值date.end_of_day.to_datetime和date.to_datetime.end_of_day虽然它们表示相同的日期时间,但比较时返回false。为了确认这一点,我打开了Rails控制台并尝试了以下操作1.9.3dev:053>monday=Time.now.monday=>2013-02-2500:00:00+05301.9.3dev:054>monday.cla

ruby - 扩展 ActiveSupport::Notifications.subscribe, instantiation.active_record 钩子(Hook)

我正在探索ActiveSupport::Notifications,并且想要更多关于'instantiation.active_record'的信息,而不仅仅是:record_count和:类名[1].例如,ActiveSupport::Notifications.subscribe/instantiation.active_record/do|*args|args.status#DatabaseorActiveRecordreturnstatusargs.result#Theactualresultsetreturnedargs.etc..#AnyotherinfoIcancolle

ruby-on-rails - 与 ActiveSupport 的时间比较失败

now=Time.zone.now=>Wed,19Feb201421:30:56UTC+00:00Time.zone.at(now.to_i)=>Wed,19Feb201421:30:56UTC+00:00now==Time.zone.at(now.to_i)=>false这怎么可能?更新:Time.zone.at(now.to_i).to_i==now.to_i=>true 最佳答案 Ruby跟踪时间精确到纳秒:now=Time.zone.now=>Wed,19Feb201421:30:56UTC+00:00Time.zone.a

ruby-on-rails - ActiveSupport::DescendantsTracker.descendants 不返回后代

这个问题与另一个关于LookingupallthedescendantsofaclassinRuby的堆栈溢出问题类似/相关.一个很好的问题,里面充满了我正在寻找的信息——除了当我进入Rails控制台时:irb(main):001:0>ActiveSupport::DescendantsTracker.descendants(Object)=>[]irb(main):002:0>ObjectSpace.each_object(Class).select{|klass|klass[IRB::Notifier::AbstractNotifier,IRB::Notifier::ErrUnre

ruby - 使用扩展 ActiveSupport::Concern

我正在研究CodeSchool的RubyBits,我做了一个我只是不理解的练习:“确保AtariLibrary类只包含LibraryUtils模块,并让ActiveSupport::Concern负责加载它的依赖项。然后,重构LibraryUtils上的self.included方法以使用包含的方法。”moduleLibraryLoaderextendActiveSupport::ConcernmoduleClassMethodsdefload_game_listendendendmoduleLibraryUtilsdefself.included(base)base.load_gam