3

当我注意到这样的事情时:在我的规范中,一个简单的方法需要 0.15 秒,例如:

class String
  def to_slug
    (self.dup).gsub(/["']/, '').gsub(/@/, 'at').gsub(/&/, 'and').parameterize
  end
end

我开始问自己发生了什么事,所以在没有参数化的情况下对方法进行基准测试后,我认为这是参数化内部的问题,不一定是方法本身的问题,但是,对于它的加载方式,在我看来它是懒惰的当像这样的猴子补丁应该急切加载时加载,它会导致延迟,它不应该存在 IMO。所以我的问题是,Rails 真的懒惰地加载包含参数化的文件吗?有没有办法说服 Rails 急切地将补丁加载到 String 和其他 stdlib 中。

4

1 回答 1

1

调用config.threadsafe!你的config/environments/test.rb应该强制所有代码在启动时加载。请注意,这将设置cache_classestrue,因此不要在development环境中使用它,否则您将丢失代码重新加载。

另一种方法是更改config.eager_load_paths​​以包含您要加载的目录。

资源:

于 2012-07-26T06:47:26.883 回答