lib/arql/app.rb in arql-0.1.0 vs lib/arql/app.rb in arql-0.1.1

- old
+ new

@@ -1,7 +1,5 @@ -require 'active_support/core_ext/hash' - module Arql class App def initialize(options) @options = options Connection.open(connect_options) @@ -19,19 +17,26 @@ encoding: @options.db_encoding, pool: @options.db_pool, port: @options.db_port } else - config[:db][@options.env] + db_config end end def config @config ||= YAML.load(IO.read(@options.config_file)).with_indifferent_access end + def db_config + config[:db][@options.env] + end + def run! + show_sql if should_show_sql? + write_sql if should_write_sql? + append_sql if should_append_sql? if @options.code.present? eval(@options.code) elsif @options.args.present? @options.args.each { |rb| load(rb) } else @@ -43,8 +48,40 @@ Repl.new end def use_db_cmd_options? @options.db_host.present? + end + + def should_show_sql? + @options.show_sql || db_config[:show_sql] + end + + def should_write_sql? + @options.write_sql || db_config[:write_sql] + end + + def should_append_sql? + @options.append_sql || db_config[:append_sql] + end + + def show_sql + @log_io ||= MultiIO.new + ActiveRecord::Base.logger = Logger.new(@log_io) + @log_io << STDOUT + end + + def write_sql + write_sql_file = @options.write_sql || db_config[:write_sql] + @log_io ||= MultiIO.new + ActiveRecord::Base.logger = Logger.new(@log_io) + @log_io << File.new(write_sql_file, 'w') + end + + def append_sql + write_sql_file = @options.append_sql || db_config[:append_sql] + @log_io ||= MultiIO.new + ActiveRecord::Base.logger = Logger.new(@log_io) + @log_io << File.new(write_sql_file, 'a') end end end