module DBCode
Constants
- LoadError
- VERSION
Attributes
code_schema_name[W]
env[W]
logger[W]
sql_file_path[W]
Public Instance Methods
build_graph()
click to toggle source
# File lib/dbcode.rb, line 59 def build_graph Graph.new files.map &SQLFile.method(:new) end
code_schema_name()
click to toggle source
# File lib/dbcode.rb, line 12 def code_schema_name @code_schema_name || 'code' end
env()
click to toggle source
# File lib/dbcode.rb, line 30 def env @env ||= 'development' end
files()
click to toggle source
# File lib/dbcode.rb, line 63 def files Dir[sql_file_path.join('**/*.sql').expand_path].sort.map do |file_name| path = Pathname(file_name) { name: path.relative_path_from(sql_file_path).sub(/.sql$/,'').to_s, contents: path.read } end end
logger()
click to toggle source
# File lib/dbcode.rb, line 24 def logger @logger ||= Logger.new(STDOUT) end
prepare()
click to toggle source
# File lib/dbcode.rb, line 36 def prepare code = Schema.new connection: Base.connection, name: code_schema_name code.append_path!(Base.connection_config) return if Migrator.needs_migration? code.within_schema do graph = build_graph if code.digest != graph.digest if env == 'production' return logger.error "[dbcode] out of date, but refusing to reset #{code.name} in production." end logger.warn "[dbcode] Resetting schema #{code.name}" code.reset! code.execute graph.to_sql code.digest = graph.digest else logger.info "[dbcode] Schema #{code.name} is up to date" end end end
sql_file_path()
click to toggle source
# File lib/dbcode.rb, line 18 def sql_file_path @sql_file_path or raise "Configure sql file path. eg: #{self}.#{__method__} = Rails.root" end