snailgun 1.0.3 → 1.0.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 +40 -4
- data/bin/frake +6 -3
- data/bin/snailgun +3 -2
- data/lib/snailgun/server.rb +3 -2
- metadata +2 -2
data/README.markdown
CHANGED
|
@@ -9,8 +9,7 @@ command-line Ruby interpreter is required.
|
|
|
9
9
|
Installation
|
|
10
10
|
------------
|
|
11
11
|
|
|
12
|
-
sudo gem
|
|
13
|
-
sudo gem install candlerb-snailgun
|
|
12
|
+
sudo gem install snailgun
|
|
14
13
|
|
|
15
14
|
Or for the latest code, `git clone git://github.com/candlerb/snailgun.git`
|
|
16
15
|
and put the bin directory into your PATH.
|
|
@@ -60,7 +59,7 @@ with `snailgun -v` if you wish to be notified when it is ready.
|
|
|
60
59
|
$ vi config/environments/test.rb
|
|
61
60
|
... set config.cache_classes = false
|
|
62
61
|
$ snailgun
|
|
63
|
-
Use 'exit' to terminate snailgun
|
|
62
|
+
Now entering subshell. Use 'exit' to terminate snailgun
|
|
64
63
|
|
|
65
64
|
$ time RAILS_ENV=test fruby script/runner 'puts 1+2'
|
|
66
65
|
3
|
|
@@ -126,11 +125,48 @@ the correct environment. e.g.
|
|
|
126
125
|
|
|
127
126
|
RAILS_ENV=test fruby -Ilib -Itest test/unit/some_test.rb
|
|
128
127
|
|
|
128
|
+
Case 4: Rails with cucumber
|
|
129
|
+
---------------------------
|
|
130
|
+
|
|
131
|
+
Cucumber creates its own Rails environment called "cucumber", so you can
|
|
132
|
+
setup snailgun like this:
|
|
133
|
+
|
|
134
|
+
$ snailgun --rails test,cucumber
|
|
135
|
+
|
|
136
|
+
Then use `frake cucumber` to exercise the features. frake selects the
|
|
137
|
+
"cucumber" environment if run with "cucumber" as an argument.
|
|
138
|
+
|
|
139
|
+
NOTE: to make your model classes be loaded on each run you need to set
|
|
140
|
+
`config.cache_classes = false` in `config/environments/cucumber.rb`.
|
|
141
|
+
Cucumber will give a big warning saying that this is known to be a
|
|
142
|
+
problem with transactional fixtures. I don't use transactional fixtures
|
|
143
|
+
so this isn't a problem for me.
|
|
144
|
+
|
|
145
|
+
For a substantial performance boost, remove `:lib=>false` lines from
|
|
146
|
+
`config/environments/cucumber.rb` so that cucumber, webrat, nokogiri etc
|
|
147
|
+
are preloaded.
|
|
148
|
+
|
|
149
|
+
Smaller performance boosts can be had from further preloading. For example,
|
|
150
|
+
cucumber makes use of some rspec libraries for diffing even if you're not
|
|
151
|
+
using rspec, so you can preload those. Add something like this to the end of
|
|
152
|
+
`config/environments/cucumber.rb`
|
|
153
|
+
|
|
154
|
+
begin
|
|
155
|
+
require 'spec/expectations'
|
|
156
|
+
require 'spec/runner/differs/default'
|
|
157
|
+
rescue LoadError
|
|
158
|
+
end
|
|
159
|
+
require 'test_help'
|
|
160
|
+
require 'test/unit/testresult'
|
|
161
|
+
require 'active_support/secure_random'
|
|
162
|
+
require 'active_support/time_with_zone'
|
|
163
|
+
|
|
129
164
|
autotest
|
|
130
165
|
--------
|
|
131
166
|
|
|
132
167
|
There is some simple support for autotest (from the ZenTest package).
|
|
133
168
|
Just type `fautotest` instead of `autotest` after snailgun has been started.
|
|
169
|
+
This hasn't been tested for a while.
|
|
134
170
|
|
|
135
171
|
Bypassing rubygems
|
|
136
172
|
------------------
|
|
@@ -139,7 +175,7 @@ You can get noticeably faster startup if you don't use rubygems to invoke
|
|
|
139
175
|
the programs. To do this, you can add the binary directory directly into
|
|
140
176
|
the front of your PATH, e.g. for Ubuntu
|
|
141
177
|
|
|
142
|
-
PATH=/var/lib/gems/1.8/gems/snailgun-1.0.
|
|
178
|
+
PATH=/var/lib/gems/1.8/gems/snailgun-1.0.3/bin:$PATH
|
|
143
179
|
|
|
144
180
|
Alternatively, create a file called `fruby` somewhere early on in your PATH
|
|
145
181
|
(e.g. under `$HOME/bin`), like this:
|
data/bin/frake
CHANGED
|
@@ -9,10 +9,13 @@ ARGV.each do |arg|
|
|
|
9
9
|
end
|
|
10
10
|
end
|
|
11
11
|
|
|
12
|
-
#
|
|
12
|
+
# Rails/Merb: make a guess at the correct environment
|
|
13
13
|
if File.exist?("config/boot.rb") || File.exist?("config/init.rb")
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
if ARGV.find { |arg| arg =~ /\bcucumber\b/ }
|
|
15
|
+
$DEFAULT_ENV='cucumber'
|
|
16
|
+
elsif ARGV.find { |arg| arg =~ /\b(test|spec)\b/ } || !ARGV.find { |arg| arg !~ /^-/ }
|
|
17
|
+
$DEFAULT_ENV='test'
|
|
18
|
+
end
|
|
16
19
|
end
|
|
17
20
|
|
|
18
21
|
ARGV[0,0] = ["-rrake", "-eRake.application.run", "--"]
|
data/bin/snailgun
CHANGED
|
@@ -56,7 +56,7 @@ when :ruby
|
|
|
56
56
|
when :rails
|
|
57
57
|
conf = File.expand_path('config/boot.rb')
|
|
58
58
|
unless File.exist?(conf)
|
|
59
|
-
raise
|
|
59
|
+
raise "#{conf} does not exist, cannot continue"
|
|
60
60
|
end
|
|
61
61
|
sockdir = File.expand_path('tmp/sockets/snailgun')
|
|
62
62
|
begin
|
|
@@ -73,6 +73,7 @@ when :rails
|
|
|
73
73
|
load conf
|
|
74
74
|
require File.expand_path(RAILS_ROOT + '/config/environment')
|
|
75
75
|
# We can get some drastic test speedups by preloading test frameworks
|
|
76
|
+
# (although user could do that in config/environments/test.rb)
|
|
76
77
|
if env != 'test'
|
|
77
78
|
# do nothing
|
|
78
79
|
elsif File.exist?('test/test_helper.rb')
|
|
@@ -91,7 +92,7 @@ EOS
|
|
|
91
92
|
server.run
|
|
92
93
|
end
|
|
93
94
|
end
|
|
94
|
-
STDERR.puts "Use 'exit' to terminate snailgun"
|
|
95
|
+
STDERR.puts "Now entering subshell. Use 'exit' to terminate snailgun"
|
|
95
96
|
Snailgun::Server.shell
|
|
96
97
|
pids.each do |env,pid|
|
|
97
98
|
Process.kill('TERM',pid)
|
data/lib/snailgun/server.rb
CHANGED
|
@@ -25,7 +25,7 @@ module Snailgun
|
|
|
25
25
|
|
|
26
26
|
def run
|
|
27
27
|
while client = @socket.accept
|
|
28
|
-
fork do
|
|
28
|
+
pid = fork do
|
|
29
29
|
begin
|
|
30
30
|
STDIN.reopen(client.recv_io)
|
|
31
31
|
STDOUT.reopen(client.recv_io)
|
|
@@ -56,6 +56,7 @@ module Snailgun
|
|
|
56
56
|
exit 1
|
|
57
57
|
end
|
|
58
58
|
end
|
|
59
|
+
Process.detach(pid) if pid && pid > 0
|
|
59
60
|
client.close
|
|
60
61
|
end
|
|
61
62
|
ensure
|
|
@@ -92,7 +93,7 @@ module Snailgun
|
|
|
92
93
|
end
|
|
93
94
|
|
|
94
95
|
def self.shell
|
|
95
|
-
system(ENV['
|
|
96
|
+
system(ENV['SHELL'] || 'bash')
|
|
96
97
|
end
|
|
97
98
|
|
|
98
99
|
# Interactive mode (start a subshell with SNAILGUN_SOCK set up,
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: snailgun
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0.
|
|
4
|
+
version: 1.0.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Brian Candler
|
|
@@ -9,7 +9,7 @@ autorequire:
|
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
11
|
|
|
12
|
-
date: 2009-
|
|
12
|
+
date: 2009-11-12 00:00:00 +00:00
|
|
13
13
|
default_executable:
|
|
14
14
|
dependencies: []
|
|
15
15
|
|