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