Class: Kamaze::Project::Tools::Shell
- Inherits:
-
BaseTool
- Object
- Observable
- BaseTool
- Kamaze::Project::Tools::Shell
- Defined in:
- lib/kamaze/project/tools/shell.rb
Overview
Provide a REPL (based on Pry
)
Instance Attribute Summary collapse
-
#banner ⇒ String
Get banner.
-
#console ⇒ Kamaze::Project::Tools::Console
protected
Get console.
- #observer_peers ⇒ Hash|nil included from Concern::Observable readonly protected
-
#provider ⇒ Pry|Class|Object
protected
Get provider.
Instance Method Summary collapse
-
#require_any(gem_name, req_name = nil) ⇒ Boolean
protected
Require any gem based on
Gem::Specification
. - #setup ⇒ Object
-
#start ⇒ Object
Start REPL session.
Constructor Details
This class inherits a constructor from Kamaze::Project::Tools::BaseTool
Instance Attribute Details
#banner ⇒ String
Get banner
32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/kamaze/project/tools/shell.rb', line 32 def return @banner if @banner patch = defined?(RUBY_PATCHLEVEL) ? "p#{RUBY_PATCHLEVEL}" : nil # almost like RUBY_DESCRIPTION descr = ["#{RUBY_ENGINE} #{RUBY_VERSION}#{patch}".rstrip, "(#{RUBY_RELEASE_DATE})", "[#{RUBY_PLATFORM}]"].join(' ') "{{green:#{descr}}}" end |
#console ⇒ Kamaze::Project::Tools::Console (protected)
Get console
62 63 64 |
# File 'lib/kamaze/project/tools/shell.rb', line 62 def console @console end |
#observer_peers ⇒ Hash|nil (readonly, protected) Originally defined in module Concern::Observable
#provider ⇒ Pry|Class|Object (protected)
Get provider
67 68 69 |
# File 'lib/kamaze/project/tools/shell.rb', line 67 def provider @provider end |
Instance Method Details
#require_any(gem_name, req_name = nil) ⇒ Boolean (protected)
Require any gem based on Gem::Specification
74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/kamaze/project/tools/shell.rb', line 74 def require_any(gem_name, req_name = nil) gem_name = gem_name.to_s req_name ||= gem_name spec = Gem::Specification return false unless spec.find_all_by_name(gem_name).any? require req_name true end |
#setup ⇒ Object
44 45 46 47 48 |
# File 'lib/kamaze/project/tools/shell.rb', line 44 def setup @console ||= Kamaze.project.tools.fetch(:console) @provider ||= require_any(:pry) ? Pry : nil @banner ||= nil end |
#start ⇒ Object
Start REPL session
51 52 53 54 55 |
# File 'lib/kamaze/project/tools/shell.rb', line 51 def start require_any(:interesting_methods) console.stdout.puts() provider.start end |