racksh 0.9.3 → 0.9.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.markdown CHANGED
@@ -9,8 +9,9 @@ environment for Rails, Merb, Sinatra, Camping, Ramaze or your own framework prov
9
9
  directory.
10
10
 
11
11
  It's purpose is to allow developer to introspect his application and/or make some initial setup. You can for example run
12
- _DataMapper.auto_migrate!_ or make a request to "/users/666" and check response details. It's mainly aimed at apps that don't
13
- have console-like component (ie. app built with Sinatra) but all frameworks can benefit from interactive Rack stack introspection.
12
+ _DataMapper.auto_migrate!_ or make a request to _/users/666_ and check response details. It's mainly aimed at apps that don't
13
+ have console-like component (ie. app built with Sinatra) but all frameworks can benefit from interactive Rack stack and request
14
+ introspection.
14
15
 
15
16
  ## How it works?
16
17
 
@@ -28,8 +29,8 @@ Additionally it exposes _$rack_ variable which allows you to make simulated HTTP
28
29
  To start racksh session run following inside rack application directory (containing config.ru file):
29
30
 
30
31
  % racksh
31
- Rack::Shell v0.9.3 started in development environment.
32
- irb(main):001:0>
32
+ Rack::Shell v0.9.4 started in development environment.
33
+ >>
33
34
 
34
35
  Specifying location of config.ru:
35
36
 
@@ -43,14 +44,14 @@ Executing ruby code inside application environment and printing results:
43
44
  Specifying Rack environment (default is development):
44
45
 
45
46
  % RACK_ENV=production racksh
46
- Rack::Shell v0.9.3 started in production environment.
47
- irb(main):001:0>
47
+ Rack::Shell v0.9.4 started in production environment.
48
+ >>
48
49
 
49
- ### Making simulated HTTP requests to your app:
50
+ ### Making simulated HTTP requests to your app
50
51
 
51
52
  % racksh
52
- Rack::Shell v0.9.3 started in development environment.
53
- irb(main):001:0> $rack.get "/"
53
+ Rack::Shell v0.9.4 started in development environment.
54
+ >> $rack.get "/"
54
55
  => #<Rack::MockResponse:0xb68fa7bc @body="<html>...", @headers={"Content-Type"=>"text/html", "Content-Length"=>"1812"}, @status=200, ...
55
56
 
56
57
  _$rack_ variable contains following methods (thanks to [rack-test](http://github.com/brynary/rack-test) gem):
@@ -85,9 +86,18 @@ _$rack_ variable contains following methods (thanks to [rack-test](http://github
85
86
  # follow redirect from previous request
86
87
  $rack.follow_redirect!
87
88
 
89
+ # last request object
90
+ $rack.last_request
91
+
92
+ # last response object
93
+ $rack.last_response
94
+
88
95
  # access your Rack app
89
96
  $rack.app
90
97
 
98
+ # name of environment
99
+ $rack.env
100
+
91
101
  Check [test.rb from brynary's rack-test](http://github.com/brynary/rack-test/blob/master/lib/rack/test.rb) for implementation of
92
102
  above methods.
93
103
 
@@ -97,6 +107,23 @@ Examples:
97
107
  $rack.header "User-Agent", "Firefox"
98
108
  $rack.post "/users", :user => { :name => "Jola", :email => "jola@misi.ak" }
99
109
 
110
+ ### Configuration files
111
+
112
+ Rack::Shell supports configuration file _.rackshrc_ which is loaded from two places during startup: user's home dir and
113
+ application directory (in this order). You can put any ruby code in it, but it's purpose is to setup your session, ie. setting
114
+ headers which will be used for all $rack.get/post/... requests.
115
+
116
+ For example to set user agent to Firefox and re-migrate db if loaded environment is _test_ put following in _.rackshrc_:
117
+
118
+ $rack.header "User-Agent", "Firefox"
119
+ DataMapper.auto_migrate! if $rack.env == "test"
120
+
121
+ You can also make requests:
122
+
123
+ $rack.put "/signin", :login => "jola", :password => "misiacz"
124
+
125
+ This will ensure you are always logged in when you start _racksh_.
126
+
100
127
  ## Bugs & feature requests
101
128
 
102
129
  Please report bugs and/or feature requests on the github issue tracker for the project located [here](http://github.com/sickill/racksh/issues).
data/bin/racksh CHANGED
@@ -1,8 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ ENV['RACK_ENV'] ||= 'development'
4
+
3
5
  if ARGV.empty?
4
6
  racksh_path = File.join(File.expand_path(File.dirname(__FILE__)), "..", "lib", "racksh.rb")
5
- exec "irb -r #{racksh_path}"
7
+ exec "irb -r irb/completion -r #{racksh_path} --simple-prompt"
6
8
  else
7
9
  require 'racksh'
8
10
  p eval(ARGV.join(" "))
@@ -0,0 +1,41 @@
1
+ require 'rack'
2
+
3
+ module Rack
4
+ module Shell
5
+ File = ::File
6
+
7
+ def self.start!
8
+ # prevent STDOUT & STDERR to be reopened (apps do this to be able to log under Passenger)
9
+ def STDOUT.reopen(*args); end
10
+ def STDERR.reopen(*args); end
11
+
12
+ # build Rack app
13
+ config_ru = ENV['CONFIG_RU'] || 'config.ru'
14
+ rack_app = Object.class_eval("Rack::Builder.new { #{File.read(config_ru)} }")
15
+ $rack = Rack::Shell::Session.new(rack_app)
16
+
17
+ # run ~/.rackshrc
18
+ rcfile = File.expand_path("~/.rackshrc")
19
+ eval(File.read(rcfile)) if File.exists?(rcfile)
20
+
21
+ # run local .rackshrc (from app dir)
22
+ rcfile = File.expand_path(File.join(File.dirname(config_ru), ".rackshrc"))
23
+ eval(File.read(rcfile)) if File.exists?(rcfile)
24
+
25
+ # print startup info
26
+ if STDOUT.tty? && ENV['TERM'] != 'dumb' # we have color terminal, let's pimp our info!
27
+ env_color = ($rack.env == 'production' ? "\e[31m\e[1m" : "\e[36m\e[1m")
28
+ 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."
29
+ else
30
+ puts "Rack::Shell v#{VERSION} started in #{$rack.env} environment."
31
+ end
32
+ rescue Errno::ENOENT => e
33
+ if e.message =~ /config\.ru$/
34
+ puts "Rack::Shell couldn't find #{config_ru}"
35
+ exit(1)
36
+ else
37
+ raise e
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,18 @@
1
+ require 'rack/test'
2
+
3
+ module Rack
4
+ module Shell
5
+ class Session
6
+ include Rack::Test::Methods
7
+ attr_reader :app
8
+
9
+ def initialize(app)
10
+ @app = app
11
+ end
12
+
13
+ def env
14
+ ENV['RACK_ENV']
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,5 @@
1
+ module Rack
2
+ module Shell
3
+ VERSION = '0.9.4'.freeze
4
+ end
5
+ end
data/lib/racksh.rb CHANGED
@@ -1,30 +1,5 @@
1
- require "rubygems"
2
- require "rack"
3
- require "rack/test"
1
+ require 'rubygems'
2
+ dir = File.join(File.expand_path(File.dirname(__FILE__)), 'racksh')
3
+ %w(session version init).each { |f| require File.join(dir, f) }
4
4
 
5
- ENV['RACK_ENV'] ||= 'development'
6
-
7
- module Rack
8
- class Shell
9
- include Rack::Test::Methods
10
- attr_reader :app
11
- def initialize(app)
12
- @app = app
13
- end
14
- end
15
- end
16
-
17
- begin
18
- config_ru = ENV['CONFIG_RU'] || 'config.ru'
19
- rack_application = eval("Rack::Builder.new { #{File.read(config_ru)} }")
20
- $rack = Rack::Shell.new(rack_application)
21
- version = File.read(File.join(File.dirname(__FILE__), '..', 'VERSION')).strip
22
- puts "Rack::Shell v#{version} started in #{ENV['RACK_ENV']} environment."
23
- rescue Errno::ENOENT => e
24
- if e.message =~ /config\.ru$/
25
- puts "Rack::Shell couldn't find #{config_ru}"
26
- exit(1)
27
- else
28
- raise e
29
- end
30
- end
5
+ Rack::Shell.start!
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: racksh
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.3
4
+ version: 0.9.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marcin Kulik
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-11-17 00:00:00 +01:00
12
+ date: 2009-11-19 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -43,7 +43,9 @@ extra_rdoc_files: []
43
43
  files:
44
44
  - bin/racksh
45
45
  - lib/racksh.rb
46
- - VERSION
46
+ - lib/racksh/init.rb
47
+ - lib/racksh/session.rb
48
+ - lib/racksh/version.rb
47
49
  - README.markdown
48
50
  has_rdoc: true
49
51
  homepage: http://github.com/sickill/racksh
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 0.9.3