Sha256: 0b54d49bb18617702266695a43164bea0c21cf8fac2d92742ce9d6a7a8ae01ef

Contents?: true

Size: 898 Bytes

Versions: 5

Compression:

Stored size: 898 Bytes

Contents

module ActiveRecordViews
  class RegisteredView
    attr_reader :sql_path

    def initialize(model_class, sql_path)
      @model_class_name = model_class.name
      @sql_path = sql_path
      update_timestamp!
    end

    def model_class
      @model_class_name.constantize
    end

    def stale?
      sql_timestamp != @cached_sql_timestamp
    end

    def reload!
      if File.exist? sql_path
        ActiveRecordViews.create_view model_class.connection, model_class.table_name, model_class.name, ActiveRecordViews.read_sql_file(sql_path), model_class.view_options
      else
        ActiveRecordViews.drop_view model_class.connection, model_class.table_name
      end
      update_timestamp!
    end

    private

    def sql_timestamp
      File.exist?(sql_path) ? File.mtime(sql_path) : nil
    end

    def update_timestamp!
      @cached_sql_timestamp = sql_timestamp
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
activerecord_views-0.0.20 lib/active_record_views/registered_view.rb
activerecord_views-0.0.19 lib/active_record_views/registered_view.rb
activerecord_views-0.0.18 lib/active_record_views/registered_view.rb
activerecord_views-0.0.17 lib/active_record_views/registered_view.rb
activerecord_views-0.0.16 lib/active_record_views/registered_view.rb