Skip to content

Commit

Permalink
Implement a simple Rack console
Browse files Browse the repository at this point in the history
Signed-off-by: David Celis <[email protected]>
  • Loading branch information
davidcelis committed Jul 1, 2014
1 parent f2f1285 commit c0e8eb9
Show file tree
Hide file tree
Showing 6 changed files with 38 additions and 3 deletions.
1 change: 1 addition & 0 deletions lib/rack-console.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
require 'rack/console'
16 changes: 14 additions & 2 deletions lib/rack/console.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,19 @@
require 'rack/builder'

require 'rack/console/version'

module Rack
module Console
# Your code goes here...
class Console
def self.start
Rack::Builder.parse_file('config.ru')

begin
require 'pry'
Pry.start
rescue LoadError
require 'irb'
IRB.start
end
end
end
end
2 changes: 1 addition & 1 deletion lib/rack/console/version.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
module Rack
module Console
class Console
class Version
MAJOR = 1
MINOR = 0
Expand Down
2 changes: 2 additions & 0 deletions rack-console.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,7 @@ Gem::Specification.new do |s|
s.test_files = Dir['spec/**/*.rb']
s.require_paths = ['lib']

s.add_dependency 'rack', '>= 1.1'

s.add_development_dependency 'rspec', '~> 3.0'
end
13 changes: 13 additions & 0 deletions spec/rack/console_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
require 'rack/console'
require 'irb'

describe Rack::Console do
before { Dir.chdir 'spec/support' }

it 'parses config.ru in the current working directory' do
expect(Rack::Builder).to receive(:parse_file).with('config.ru')
expect(IRB).to receive(:start)

Rack::Console.start
end
end
7 changes: 7 additions & 0 deletions spec/support/config.ru
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
require 'rack/builder'

app = Rack::Builder.new
map('/') { [200, { 'Content-Type' => 'text/plain' }, 'Hello world.'] }
end

run app

0 comments on commit c0e8eb9

Please sign in to comment.