forked from ku1ik/racksh
-
Notifications
You must be signed in to change notification settings - Fork 0
/
init.rb
48 lines (41 loc) · 1.46 KB
/
init.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
require 'rack'
dir = File.expand_path(File.dirname(__FILE__))
%w(session version init).each { |f| require File.join(dir, f) }
def reload!
puts "Rack::Shell reloading..."
Process.exit(255)
end
module Rack
module Shell
File = ::File
def self.init(print_startup_info=true)
config_ru = ENV['CONFIG_RU']
# build Rack app
rack_app = Object.class_eval("Rack::Builder.new { #{File.read(config_ru)} }", config_ru)
$rack = Rack::Shell::Session.new(rack_app)
# run ~/.rackshrc
rcfile = File.expand_path("~/.rackshrc")
eval(File.read(rcfile)) if File.exists?(rcfile)
# run local .rackshrc (from app dir)
rcfile = File.expand_path(File.join(File.dirname(config_ru), ".rackshrc"))
eval(File.read(rcfile)) if File.exists?(rcfile)
# print startup info
if print_startup_info
if STDOUT.tty? && ENV['TERM'] != 'dumb' # we have color terminal, let's pimp our info!
env_color = ($rack.env == 'production' ? "\e[31m\e[1m" : "\e[36m\e[1m")
puts "\e[32m\e[1mRack\e[0m\e[33m\e[1m::\e[0m\e[32m\e[1mShell\e[0m v#{VERSION} started in #{env_color}#{$rack.env}\e[0m environment."
else
puts "Rack::Shell v#{VERSION} started in #{$rack.env} environment."
end
@reloaded = true
end
rescue Errno::ENOENT => e
if e.message =~ /config\.ru$/
puts "Rack::Shell couldn't find #{config_ru}"
exit(1)
else
raise e
end
end
end
end