代码之家  ›  专栏  ›  技术社区  ›  DEfusion

如何缓存视图部分文件。是否存在?在Rails中检查应用程序的寿命

  •  0
  • DEfusion  · 技术社区  · 15 年前

    我在视图中呈现多态记录,方法是循环遍历多态记录,并选择用于多态关系的适当部分。但是,当用户管理该站点时,每个多态性记录可能(或不可能)有第二个(备用)部分,应该在这种情况下使用。

    所以目前我正在做以下工作(伪代码):

    polymorphs.each do |poly|
        if File.exists?( File.join( RAILS_ROOT, 'app', 'views', poly.type, '_alternate.html.erb' ) )
            partial = "#{poly.type}/alternate"
        else
            partial = "#{poly.type}/original"
        end
        ...
    end
    

    这是一个很好的工作,但它是一个明显的瓶颈。所以我只想检查这些可选的部分是否存在,然后缓存它们。

    我确实是在初始值设定项中开始这样做的,但缺点是它在开发中只运行一次,理想情况下,我不想在开发过程中添加新的备用部分时重新启动服务器。

    1 回复  |  直到 15 年前
        1
  •  2
  •   cwninja    15 年前

    把它放在一个单独的类方法中并使用 memoize 关于它。

    class FooController
      class << self
        extend ActiveSupport::Memoizable
        def find_path_for(type)
          if File.exists?( File.join( RAILS_ROOT, 'app', 'views', poly.type, '_alternate.html.erb' ) )
            partial = "#{poly.type}/alternate"
          else
            partial = "#{poly.type}/original"
          end
        end
        memoize :find_path_for
      end
    end