我知道String.strip/2,但我无法弄清楚它用于删除空格的用法.
String.strip "_some_", ?_ #=> "some"
Run Code Online (Sandbox Code Playgroud)
如果字符串有空格而不是_,那么如何删除它们?而且,如果有人可以解释什么,那会很棒吗?在这里意味着
我需要知道为什么eager_load首选false非生产环境?我听过的其中一个论点说,eager_load急切地将大部分Rails和应用程序加载到内存中.因此,使用eager_load进行单独测试会使其运行速度变慢.然而,这引发了一些问题,比如如何在不加载Rails和应用程序相关代码的情况下运行测试?什么是Rails和应用程序相关的代码正在急切加载?config.eager_load_namespaces给出以下类:
ActiveSupport
ActionDispatch
ActiveModel
ActionView
ActionController
ActiveRecord
ActionMailer
Jquery::Rails::Engine
MyApp::Application
是否所有这些类及其子类都被迫加载?
eager_load = false 在开发或测试环境中使用有哪些明显的缺点?
在我的大多数应用程序中,我有一个current_user方法.为了避免在例外的情况一样current_user.name,其中current_user是nil,Rails提供了try方法.这个问题是我需要记住在try任何地方current_user使用nil.
我想使用Null对象模式来删除这个额外的开销.
class NullUser
def method_missing(method_name, *args)
nil
end
end
def current_user
return NullUser.new unless UserSession.find
@current_user ||= UserSession.find.user
end
Run Code Online (Sandbox Code Playgroud)
try在某些情况下,这可以取代:
current_user.try(:first_name) #=> nil
current_user.first_name #=> nil
Run Code Online (Sandbox Code Playgroud)
但进一步链接失败:
current_user.profiles.first.name #=> undefined method...
Run Code Online (Sandbox Code Playgroud)
我试图返回null对象:
class NullUser
def method_missing(method_name, *args)
self.class.new
end
end
current_user.try { |u| u.profiles.first.name } #=> nil
current_user.profiles.first.name #=> nil
Run Code Online (Sandbox Code Playgroud)
但在其他情况下这会失败:
current_user.is_admin? #=> #<NullUser:0x96f4e98>
Run Code Online (Sandbox Code Playgroud)
是否有可能解决这个问题或我们都必须忍受try?
我有一个vimscript,它从vim命令行传递的字符串中获取匹配列表.字符串的一部分有一个类似的模式some-word.以下输出总结了问题:
echo matchlist("some-word", escape('(\w|-)+', '()+|'))
" => ['some-word', 'd', '', '', '', '', '', '', '', '']
据我所知,这'd'是由于捕获组.我尝试使用[\w|-]但不会工作.我发现避免这种情况的一种方法是使用非捕获组\%(\w|-),但似乎添加了更多代码.vim没有像[]perl 那样的解决方案吗?