def root(value = nil)
      if value
        @root = value
      else
        Utils::Kernel.Pathname(@root || Dir.pwd).realpath
      end
    end
def root(value = nil)
      if value
        @root = value
      else
        Utils::Kernel.Pathname(@root || Dir.pwd).realpath
      end
    end
The root of the application

 By default it returns the current directory, for this reason, **all the
 commands must be executed from the top level directory of the project**.

 If for some reason, that constraint above cannot be satisfied, please
 configure the root directory, so that commands can be executed from
 everywhere.

 This is part of a DSL, for this reason when this method is called with
 an argument, it will set the corresponding instance variable. When
 called without, it will return the already set value, or the default.

 @overload root(value)
   Sets the given value
   @param value [String,Pathname,#to_pathname] The root directory of the app

 @overload root
   Gets the value
   @return [Pathname]
   @raise [Errno::ENOENT] if the path cannot be found

 @since 0.1.0

 @see http://www.ruby-doc.org/core/Dir.html#method-c-pwd

 @example Getting the value
   require 'hanami'

   module Bookshelf
     class Application < Hanami::Application
     end
   end

   Bookshelf::Application.configuration.root # => #<Pathname:/path/to/root>

 @example Setting the value
   require 'hanami'

   module Bookshelf
     class Application < Hanami::Application
       configure do
         root '/path/to/another/root'
       end
     end
   end