module Gem::Console
Public Class Methods
enable(load_dir = 'lib', load_file = nil)
click to toggle source
# File lib/gem/console.rb, line 10 def enable(load_dir = 'lib', load_file = nil) load_dir, load_file = 'lib', load_dir unless load_file or load_dir == 'lib' load_file ||= catch(:file) do search_gem_paths Dir[File.join load_dir, '*'] end load_file.slice!(File.join load_dir, '') desc "Open a ruby console preloaded with this library" task :console do Rake::Task["console:#{command}"].invoke end namespace :console do task :irb do run_console precommand, :irb, load_dir, load_file end task :pry do run_console precommand, :pry, load_dir, load_file end end end
Private Class Methods
command()
click to toggle source
# File lib/gem/console.rb, line 60 def command pry_enabled? ? :pry : :irb end
precommand()
click to toggle source
# File lib/gem/console.rb, line 56 def precommand 'bundle exec' if File.exists? 'Gemfile' end
pry_enabled?()
click to toggle source
# File lib/gem/console.rb, line 64 def pry_enabled? require 'pry' or true rescue ::LoadError false end
run_console(precommand, command, load_dir, load_file)
click to toggle source
# File lib/gem/console.rb, line 70 def run_console(precommand, command, load_dir, load_file) sh [ 'CONSOLE=true', precommand, command, "-I #{load_dir}", "-r #{load_file}", ].compact.join(' ') end
search_gem_paths(paths)
click to toggle source
# File lib/gem/console.rb, line 40 def search_gem_paths(paths) files, dirs = paths.partition do |path| File.file? path end files.each do |file| throw :file, file if File.extname(file) == '.rb' end if not files.empty? dirs.each do |dir| search_gem_paths Dir[File.join dir, '*'] end if not dirs.empty? raise [ 'No library file to load `rake console` from found.', 'Provide a path in your `Gem::Console.enable` invocation.', ].join(' ') end