Sha256: 37da8fd37278acc7c50154a0e1d7b7d1eb091e35aea6feb6bfaf06482431cd31

Contents?: true

Size: 843 Bytes

Versions: 3

Compression:

Stored size: 843 Bytes

Contents

require 'erb'

module ActiveRecordViews
  module Extension
    extend ActiveSupport::Concern

    def self.currently_migrating?
      if defined?(Rake) && Rake.method_defined?(:application)
        Rake.application.top_level_tasks.include?('db:migrate')
      end
    end

    module ClassMethods
      def is_view(sql = nil)
        sql ||= begin
          sql_path = ActiveRecordViews.find_sql_file(self.name.underscore)
          ActiveRecordViews.register_for_reload self, sql_path

          if sql_path.end_with?('.erb')
            ERB.new(File.read(sql_path)).result
          else
            File.read(sql_path)
          end
        end

        unless ActiveRecordViews::Extension.currently_migrating?
          ActiveRecordViews.create_view self.connection, self.table_name, self.name, sql
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
activerecord_views-0.0.6 lib/active_record_views/extension.rb
activerecord_views-0.0.5 lib/active_record_views/extension.rb
activerecord_views-0.0.4 lib/active_record_views/extension.rb