Sha256: 43c6854d5502eeec6ade4abd9b4c3d96d21f57f3e194054f8909a48d899c7c86

Contents?: true

Size: 876 Bytes

Versions: 9

Compression:

Stored size: 876 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, File.read(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

9 entries across 9 versions & 1 rubygems

Version Path
activerecord_views-0.0.15 lib/active_record_views/registered_view.rb
activerecord_views-0.0.14 lib/active_record_views/registered_view.rb
activerecord_views-0.0.13 lib/active_record_views/registered_view.rb
activerecord_views-0.0.12 lib/active_record_views/registered_view.rb
activerecord_views-0.0.11 lib/active_record_views/registered_view.rb
activerecord_views-0.0.10 lib/active_record_views/registered_view.rb
activerecord_views-0.0.9 lib/active_record_views/registered_view.rb
activerecord_views-0.0.8 lib/active_record_views/registered_view.rb
activerecord_views-0.0.7 lib/active_record_views/registered_view.rb