lib/timber/cli/install.rb in timber-2.0.3 vs lib/timber/cli/install.rb in timber-2.0.4

- old
+ new

@@ -30,11 +30,11 @@ puts "" case ask_yes_no("Are the above details correct?") when :yes if app.heroku? - create_initializer(:stdout) + update_environment_config("production", :stdout) puts "" puts Messages.separator puts "" puts Messages.heroku_install(app) @@ -53,21 +53,21 @@ puts "2) Configuring in my app" puts "" case ask("Enter your choice: (1/2) ") when "1" - create_initializer(:http, :api_key_code => "ENV['TIMBER_API_KEY']") + update_environment_config("production", :http, :api_key_code => "ENV['TIMBER_API_KEY']") puts "" puts Messages.http_environment_variables(app.api_key) puts "" ask_yes_no("Ready to proceed?") puts "" when "2" - create_initializer(:http, :api_key_code => "'#{app.api_key}'") + update_environment_config("production", :http, :api_key_code => "'#{app.api_key}'") end send_test_messages(api_key) end @@ -105,56 +105,51 @@ return false end end private - def create_initializer(log_device_type, options = {}) + def update_environment_config(name, log_device_type, options = {}) + path = File.join("config", "environments", "#{name}.rb") + puts "" - write Messages.task_start("Creating config/initializers/timber.rb") + task_message = "Configuring Timber in #{path}" + write Messages.task_start(task_message) logger_code = \ case log_device_type when :http api_key_code = options[:api_key_code] || raise(ArgumentError.new("the :api_key_code option is required")) - "log_device = Timber::LogDevices::HTTP.new(#{api_key_code})\n" + - " Timber::Logger.new(log_device)" + logger_code = defined?(::ActiveSupport::TaggedLogging) ? "ActiveSupport::TaggedLogging.new(logger)" : "logger" + + code = <<-CODE + # Install the Timber.io logger, send logs over HTTP + log_device = Timber::LogDevices::HTTP.new(#{api_key_code}) + logger = Timber::Logger.new(log_device) + logger.level = config.log_level + config.logger = #{logger_code} +CODE + code.rstrip + when :stdout - "Timber::Logger.new(STDOUT)" + code = <<-CODE + # Install the Timber.io logger, send logs to STDOUT + logger = Timber::Logger.new(STDOUT) + logger.level = config.log_level + config.logger = #{logger_code} +CODE + code.rstrip end - body = <<-BODY -# Timber.io Ruby Library -# -# ^ ^ ^ ^ ___I_ ^ ^ ^ ^ ^ ^ ^ -# /|\\/|\\/|\\ /|\\ /\\-_--\\ /|\\/|\\ /|\\/|\\/|\\ /|\\/|\\ -# /|\\/|\\/|\\ /|\\ / \\_-__\\ /|\\/|\\ /|\\/|\\/|\\ /|\\/|\\ -# /|\\/|\\/|\\ /|\\ |[]| [] | /|\\/|\\ /|\\/|\\/|\\ /|\\/|\\ -# -# Library: http://github.com/timberio/timber-ruby -# Docs: http://www.rubydoc.info/github/timberio/timber-ruby -# Support: support@timber.io -logger = case Rails.env -when "development" - # Write logs to STDOUT in a simple message only format - Timber::Logger.new(STDOUT).tap do |logger| - logger.formatter = Timber::Logger::SimpleFormatter.new - end -when "production", "staging" - #{logger_code} -end + current_contents = File.read(path) -if logger - logger.level = Rails.application.config.log_level - Timber::Frameworks::Rails.set_logger(logger) -end -BODY + if !current_contents.include?("Timber::Logger.new") + new_contents = current_contents.sub(/\nend/, "\n\n#{logger_code}\nend") + File.write(path, new_contents) + end - FileUtils.mkdir_p(File.join(Dir.pwd, "config", "initializers")) - File.write(File.join(Dir.pwd, "config/initializers/timber.rb"), body) - - puts colorize(Messages.task_complete("Creating config/initializers/timber.rb"), :green) + puts colorize(Messages.task_complete(task_message), :green) end def send_test_messages(api_key) write Messages.task_start("Sending test logs") \ No newline at end of file