Cputs - Custom Puts
##Description
Custom Puts is as it's name says, a customized puts command that will always remember you where is the following message coming from:
Firm Load (0.2ms) SELECT `table2`.* FROM `table2` INNER JOIN `table1` ON `table2`.`id` = `table2`.`table2_id` WHERE `table2`.`foreign_key_id` = 509122938901 AND (table1.update_at is null)
Firm Load (0.2ms) SELECT `table2`.* FROM `table2` INNER JOIN `table1` ON `table2`.`id` = `table2`.`table2_id` WHERE `table1`.`user_id` = 668972 [["user_id", 668972]]
Project4 - The name is still to decide. user jgutierrezc
(0.3ms) SELECT COUNT(*) FROM `table1` WHERE `table1`.`id` = 166561 AND `table1`.`field_x` = 1
(0.2ms) SELECT COUNT(*) FROM `table1` WHERE `table1`.`id` = 166561 AND `table1`.`field_x` = 1 AND `table1`.`field2` = 0
As you can see, the message Project4 - The name is still to decide. user jgutierrezc
is a puts message coming from who knows what file.
With cputs this message can be changed to this:
/Users/JGutierrezC/AwesomeProjects/the_best/app/controllers/randoms_controller at line 2: Project4 - The name is still to decide. user jgutierrezc
Or using a preffix and/or suffix to make the output more noticeable:
---------------------------->
/Users/JGutierrezC/AwesomeProjects/the_best/app/controllers/randoms_controller at line 2: Project4 - The name is still to decide. user jgutierrezc
<----------------------------
You could also add a Timestamp to every output
---------------------------->
2016-01-03T18:28:32 /Users/JGutierrezC/AwesomeProjects/the_best/app/controllers/randoms_controller at line 2: Project4 - The name is still to decide. user jgutierrezc
<----------------------------
This way, you'll NEVER lose your output messages and hopefully they won't make it to production.
###Sometimes even the Gems are printing to your console. Find out which gem is doing that by using CPuts.override_puts
:)
Installation
Add this line to your application's Gemfile:
gem 'cputs'
And then execute:
$ bundle
Or install it yourself as:
$ gem install cputs
Usage
To use this gem you need to require 'cputs' and configure it as you want to:
require 'cputs'
# to set a message preffix for every output:
CPuts.set_preffix('<---------')
# to set a message suffix for every output:
CPuts.set_suffix('--------->')
# to set the same preffix and suffix for every output:
CPuts.set_preffix_and_suffix('-----------------')
# to set different preffix and suffix in a single method for every output:
CPuts.set_preffix_and_suffix('----------->', '<-----------')
# to set default timestamp to be shown along with the preffix:
CPuts.set_timestamp(true)
# to set a custom timestamp to be shown along with the preffix:
CPuts.set_timestamp('%H:%M:%S')
Note: Please refer to http://apidock.com/ruby/DateTime/strftime for time formatting
And use cputs command to output your message:
cputs 'Project4 - The name is still to decide. user jgutierrezc'
Or if you want to replace the usual puts
command for cputs
functionality:
CPuts.override_puts
And then use puts:
puts 'Project4 - The name is still to decide. user jgutierrezc'
The output will be as follows (previously defined preffix and suffix):
----------------------------> /Users/JGutierrezC/AwesomeProjects/the_best/app/controllers/randoms_controller at line 2: Project4 - The name is still to decide. user jgutierrezc <----------------------------
Defaults
By default preffix is
----------------->
Timestamp format (if set) is
%Y-%m-%dT%H:%M:%S (2016-01-03T18:28:32)
Suffix is empty
When using rails
Add cputs
to your Gemfile and then add a cputs.rb initializer:
# config/initializers/cputs.rb
require 'cputs'
CPuts.override_puts
CPuts.set_preffix_and_suffix("----------------->\n", "\n<-----------------")
Restart your console... Done!
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/JGutierrezC/cputs. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct. Remember to test with rspec before :)
License
The gem is available as open source under the terms of the MIT License.