Lumos

Build Status Code Climate Test Coverage


☢☢☢☢☢☢☢☢☢☢☢☢☢☢☢☢☢☢☢☢☢☢☢☢☢☢☢☢☢☢
                            
                            
  Objects wrapping library  
                            
                            
☢☢☢☢☢☢☢☢☢☢☢☢☢☢☢☢☢☢☢☢☢☢☢☢☢☢☢☢☢☢

Have you ever tried to highlight your Ruby objects from your controllers/models/whatever in the Rails log? I bet you have ). I usually do something like that p "###"; p %w(foo bar baz ); p "###" and in general it works fine, until you have to repeat this construction again and again, with different objects, in different places. I have a good news – lumos can easily wrap and make any object perceptible amongs common Rails log mess.

Installation

Add this line to your application's Gemfile:

gem 'lumos'

And call inside your controller/model/whatever

class My::MoviesController < ApplicationController
  def checked
    lumos params
    @movie = Movie.find(params[:movie_id])
    current_user.send(params[:scope]) << @movie
    #redirect_to root_path
  end
end

Usage

Depend on passed parameters, lumos can act as a divider or as a wrapper.

Divider

For example, simple call of lumos without params will print a ### message in your log. Of course you're able to change a divider sign (lumos :>, "☭" will print a ☭☭☭ message) and number of repetitions – lumos :>, "☢", 10.

lumos
print "###"

lumos :>, ""
print "☭☭☭"

lumos :>, "", 10
print "☢☢☢☢☢☢☢☢☢☢"

Wrapper

But main reason of lumos existence is necessity of objects highlighting besides ambient noise. So, initial array might be highlighted with lumos %w(foo bar baz) that will give us such output:


#########################
#                       #
# ["foo", "bar", "baz"] #
#                       #
#########################

Wrapping method also takes few options such as:

position:

:surround (by default), :top, :bottom, :left, :right, :horizontal, :vertical

domains = {ru: "Russia", th: "Thailand", "com.au" => "Australia", ph: "Philippines", la: "Laos"}
lumos domains, {position: :horizontal}

######################################################################
{:ru=>"Russia", :th=>"Thailand", "com.au"=>"Australia", :ph=>"Philippi
nes", :la=>"Laos"}
######################################################################

delimiter:

lumos domains, {position: :horizontal, delimiter: "❤★"}

{:ru=>"Russia", :th=>"Thailand", "com.au"=>"Australia", :ph=>"Philippi
nes", :la=>"Laos"}
❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★

padding:

lumos domains, {delimiter: "", padding: 2}

❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄
❄                                                                            ❄
❄                                                                            ❄
❄                                                                            ❄
❄   {:ru=>"Russia", :th=>"Thailand", "com.au"=>"Australia", :ph=>"Philippi   ❄
❄   nes", :la=>"Laos"}                                                       ❄
❄                                                                            ❄
❄                                                                            ❄
❄                                                                            ❄
❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄

length:

lumos domains, {position: :horizontal, delimiter: "->", length: 140}

->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->
{:ru=>"Russia", :th=>"Thailand", "com.au"=>"Australia", :ph=>"Philippines", :la=>"Laos"}
->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->