snailgun 1.0.6 → 1.1.0
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-snowleopard +15 -0
- data/README-textmate +26 -0
- data/README.markdown +2 -0
- data/bin/fautotest +1 -1
- data/bin/fruby +2 -2
- data/bin/snailgun +25 -7
- data/lib/snailgun/server.rb +7 -1
- data/ruby-1.9.2-p0.patch +54 -0
- data/textmate.patch +25 -0
- metadata +6 -2
data/README-snowleopard
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
If you use ruby-1.9.2-p0 on Snow Leopard snailgun won't work out of the Box!
|
2
|
+
|
3
|
+
I have included a small patch to the ruby-sources that make it work:
|
4
|
+
|
5
|
+
(this is assuming you use rvm)
|
6
|
+
|
7
|
+
cd $HOME/.rvm/src/ruby-1.9.2-p0/ext/socket
|
8
|
+
patch -p1 < wherever_snailgun_was_installed/ruby-1.9.2-p0.patch
|
9
|
+
ruby extconf.rb
|
10
|
+
make clean
|
11
|
+
make clean install
|
12
|
+
|
13
|
+
Patch was taken from http://redmine.ruby-lang.org/repositories/revision/ruby-19?rev=29242
|
14
|
+
|
15
|
+
thieso@gmail.com 20101024
|
data/README-textmate
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
To get ultra fast CMD-R results in textmate you need to patch the run_script.rb that comes with textmate:
|
2
|
+
|
3
|
+
cd /Applications/TextMate.app/Contents/SharedSupport/Bundles/Ruby.tmbundle/Support/RubyMate/
|
4
|
+
|
5
|
+
patch -p0 < wherever_snailgun_was_installed/textmate.patch
|
6
|
+
|
7
|
+
To run test in never before seen speed simply cd into your rails-app (tested with rails 3) and say:
|
8
|
+
|
9
|
+
> snailgun
|
10
|
+
|
11
|
+
the output should read something like:
|
12
|
+
Now entering subshell for RAILS_ENV=test. Use 'exit' to terminate snailgun
|
13
|
+
Server starting for RAILS_ENV=test
|
14
|
+
.. some seconds later ...
|
15
|
+
Server ready for RAILS_ENV=test
|
16
|
+
|
17
|
+
Now you can either use fruby instead of ruby to start tests "by hand":
|
18
|
+
|
19
|
+
fruby -Itest test/unit/your_test.rb
|
20
|
+
|
21
|
+
or - in TextMate - simply navigate to your_test.rb and hit CMD-R
|
22
|
+
|
23
|
+
enjoy!
|
24
|
+
|
25
|
+
thieso@gmail.com 20101024 at #rchh
|
26
|
+
|
data/README.markdown
CHANGED
data/bin/fautotest
CHANGED
@@ -5,5 +5,5 @@
|
|
5
5
|
|
6
6
|
ENV["RAILS_ENV"] = "test"
|
7
7
|
Test::Unit.run = true if defined?(Test::Unit) && Test::Unit.respond_to?(:run=)
|
8
|
-
ARGV[0,0] = ["-e","gem 'ZenTest'","-e","load 'autotest'","--"]
|
8
|
+
ARGV[0,0] = ["-e","gem 'ZenTest'","-e","load Gem.bin_path('ZenTest', 'autotest')","--"]
|
9
9
|
load File.join(File.dirname(__FILE__), "fruby")
|
data/bin/fruby
CHANGED
@@ -15,7 +15,7 @@ elsif File.directory?('tmp/sockets/snailgun')
|
|
15
15
|
sockname = "tmp/sockets/snailgun/#{env}"
|
16
16
|
end
|
17
17
|
|
18
|
-
unless sockname
|
18
|
+
unless sockname and File.exists? sockname
|
19
19
|
STDERR.puts <<EOS
|
20
20
|
Unable to find path to snailgun socket.
|
21
21
|
- did you run this in a session with a snailgun parent?
|
@@ -28,7 +28,7 @@ server = UNIXSocket.open(sockname)
|
|
28
28
|
server.send_io(STDIN)
|
29
29
|
server.send_io(STDOUT)
|
30
30
|
server.send_io(STDERR)
|
31
|
-
args = Marshal.dump([ARGV, Dir.pwd, Process.getpgrp])
|
31
|
+
args = Marshal.dump([ARGV, ENV.to_hash, Dir.pwd, Process.getpgrp])
|
32
32
|
server.write [args.size].pack("N")
|
33
33
|
server.write args
|
34
34
|
begin
|
data/bin/snailgun
CHANGED
@@ -1,5 +1,13 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
# Copyright (C) Brian Candler 2009. Released under the Ruby licence.
|
3
|
+
|
4
|
+
# Turn on copy-on-write garbage collection in REE: see
|
5
|
+
# http://www.rubyenterpriseedition.com/documentation.html#_copy_on_write_friendliness
|
6
|
+
begin
|
7
|
+
GC.copy_on_write_friendly = true
|
8
|
+
rescue NoMethodError
|
9
|
+
end
|
10
|
+
|
3
11
|
$:.unshift File.expand_path(File.join(File.dirname(__FILE__), "..", "lib"))
|
4
12
|
require 'snailgun/server'
|
5
13
|
require 'optparse'
|
@@ -66,33 +74,43 @@ when :rails
|
|
66
74
|
end
|
67
75
|
pids = {}
|
68
76
|
fix_rake # TODO: separate process for rake (but then need to choose right RAILS_ENV)
|
69
|
-
|
77
|
+
|
78
|
+
start_for_envs = envs.split(/[\s,]+/).uniq
|
79
|
+
start_for_envs.each do |env|
|
70
80
|
pids[env] = fork do
|
81
|
+
STDERR.puts "Server starting for RAILS_ENV=#{env}"
|
71
82
|
server = Snailgun::Server.new("#{sockdir}/#{env}")
|
72
83
|
ENV['RAILS_ENV'] = env
|
73
84
|
load conf
|
74
|
-
|
85
|
+
if File.exist?('./config/environment.rb')
|
86
|
+
require './config/environment.rb'
|
87
|
+
end
|
75
88
|
# We can get some drastic test speedups by preloading test frameworks
|
76
89
|
# (although user could do that in config/environments/test.rb)
|
77
90
|
if env != 'test'
|
78
91
|
# do nothing
|
79
|
-
elsif File.exist?('test/test_helper.rb')
|
80
|
-
require '
|
92
|
+
elsif File.exist?('./test/test_helper.rb')
|
93
|
+
require './test/test_helper'
|
81
94
|
elsif File.exist?('spec/spec_helper.rb')
|
82
95
|
require 'spec'
|
83
96
|
require 'spec/rails'
|
84
97
|
end
|
85
98
|
if Rails.respond_to?(:configuration) && Rails.configuration.cache_classes
|
86
|
-
STDERR.puts
|
99
|
+
STDERR.puts <<-EOS
|
87
100
|
WARNING: Snailgun doesn't work well with `cache_classes`. Strongly recommend
|
88
101
|
`config.cache_classes = false` in config/environments/#{env}.rb
|
89
102
|
EOS
|
90
103
|
end
|
91
|
-
STDERR.puts "
|
104
|
+
STDERR.puts "Server ready for RAILS_ENV=#{env}"
|
92
105
|
server.run
|
93
106
|
end
|
94
107
|
end
|
95
|
-
|
108
|
+
if start_for_envs.size == 1
|
109
|
+
ENV['RAILS_ENV'] = start_for_envs.first
|
110
|
+
STDERR.puts "Now entering subshell for RAILS_ENV=#{ENV['RAILS_ENV']}. Use 'exit' to terminate snailgun"
|
111
|
+
else
|
112
|
+
STDERR.puts "Now entering subshell Don't forget to set your RAILS_ENV!. Use 'exit' to terminate snailgun"
|
113
|
+
end
|
96
114
|
Snailgun::Server.shell
|
97
115
|
pids.each do |env,pid|
|
98
116
|
Process.kill('TERM',pid)
|
data/lib/snailgun/server.rb
CHANGED
@@ -32,8 +32,9 @@ module Snailgun
|
|
32
32
|
STDOUT.reopen(client.recv_io)
|
33
33
|
STDERR.reopen(client.recv_io)
|
34
34
|
nbytes = client.read(4).unpack("N").first
|
35
|
-
args, cwd, pgid = Marshal.load(client.read(nbytes))
|
35
|
+
args, env, cwd, pgid = Marshal.load(client.read(nbytes))
|
36
36
|
Dir.chdir(cwd)
|
37
|
+
$LOAD_PATH << env['RUBYLIB']
|
37
38
|
begin
|
38
39
|
Process.setpgid(0, pgid)
|
39
40
|
rescue Errno::EPERM
|
@@ -77,6 +78,11 @@ module Snailgun
|
|
77
78
|
opts.on("-r LIB") do |v|
|
78
79
|
require v
|
79
80
|
end
|
81
|
+
# opts.on("-rcatch_exception") do |v|
|
82
|
+
# end
|
83
|
+
opts.on("-KU") do |v|
|
84
|
+
$KCODE = 'u' if RUBY_VERSION < "1.9"
|
85
|
+
end
|
80
86
|
end.order!(args)
|
81
87
|
|
82
88
|
ARGV.replace(args)
|
data/ruby-1.9.2-p0.patch
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
Only in /Users/thieso/.rvm/src/ruby-1.9.2-p0/ext/socket: Makefile
|
2
|
+
Only in /Users/thieso/.rvm/src/ruby-1.9.2-p0/ext/socket: ancdata.o
|
3
|
+
Only in /Users/thieso/.rvm/src/ruby-1.9.2-p0/ext/socket: basicsocket.o
|
4
|
+
Only in /Users/thieso/.rvm/src/ruby-1.9.2-p0/ext/socket: constants.o
|
5
|
+
Only in /Users/thieso/.rvm/src/ruby-1.9.2-p0/ext/socket: constdefs.c
|
6
|
+
Only in /Users/thieso/.rvm/src/ruby-1.9.2-p0/ext/socket: constdefs.h
|
7
|
+
Only in /Users/thieso/.rvm/src/ruby-1.9.2-p0/ext/socket: extconf.h
|
8
|
+
diff -u socket/extconf.rb /Users/thieso/.rvm/src/ruby-1.9.2-p0/ext/socket/extconf.rb
|
9
|
+
--- socket/extconf.rb 2010-05-19 15:48:50.000000000 +0200
|
10
|
+
+++ /Users/thieso/.rvm/src/ruby-1.9.2-p0/ext/socket/extconf.rb 2010-10-24 10:44:17.000000000 +0200
|
11
|
+
@@ -117,7 +117,7 @@
|
12
|
+
}
|
13
|
+
end
|
14
|
+
|
15
|
+
-if (have_func("sendmsg") | have_func("recvmsg")) && /64-darwin/ !~ RUBY_PLATFORM
|
16
|
+
+if have_func("sendmsg") | have_func("recvmsg")
|
17
|
+
# CMSG_ macros are broken on 64bit darwin, because of use of __DARWIN_ALIGN.
|
18
|
+
have_struct_member('struct msghdr', 'msg_control', ['sys/types.h', 'sys/socket.h'])
|
19
|
+
have_struct_member('struct msghdr', 'msg_accrights', ['sys/types.h', 'sys/socket.h'])
|
20
|
+
Only in /Users/thieso/.rvm/src/ruby-1.9.2-p0/ext/socket: init.o
|
21
|
+
Only in /Users/thieso/.rvm/src/ruby-1.9.2-p0/ext/socket: ipsocket.o
|
22
|
+
Common subdirectories: socket/lib and /Users/thieso/.rvm/src/ruby-1.9.2-p0/ext/socket/lib
|
23
|
+
Only in /Users/thieso/.rvm/src/ruby-1.9.2-p0/ext/socket: mkmf.log
|
24
|
+
Only in /Users/thieso/.rvm/src/ruby-1.9.2-p0/ext/socket: option.o
|
25
|
+
Only in /Users/thieso/.rvm/src/ruby-1.9.2-p0/ext/socket: raddrinfo.o
|
26
|
+
diff -u socket/rubysocket.h /Users/thieso/.rvm/src/ruby-1.9.2-p0/ext/socket/rubysocket.h
|
27
|
+
--- socket/rubysocket.h 2010-04-28 09:16:30.000000000 +0200
|
28
|
+
+++ /Users/thieso/.rvm/src/ruby-1.9.2-p0/ext/socket/rubysocket.h 2010-10-24 10:43:51.000000000 +0200
|
29
|
+
@@ -138,6 +138,17 @@
|
30
|
+
};
|
31
|
+
#endif
|
32
|
+
|
33
|
+
+#if defined __APPLE__ && defined __MACH__
|
34
|
+
+/*
|
35
|
+
+ * CMSG_ macros are broken on 64bit darwin, because __DARWIN_ALIGN
|
36
|
+
+ * aligns up to __darwin_size_t which is 64bit, but CMSG_DATA is
|
37
|
+
+ * 32bit-aligned.
|
38
|
+
+ */
|
39
|
+
+#undef __DARWIN_ALIGNBYTES
|
40
|
+
+#define __DARWIN_ALIGNBYTES (sizeof(unsigned int) - 1)
|
41
|
+
+#endif
|
42
|
+
+
|
43
|
+
+
|
44
|
+
#if defined(_AIX)
|
45
|
+
#ifndef CMSG_SPACE
|
46
|
+
# define CMSG_SPACE(len) (_CMSG_ALIGN(sizeof(struct cmsghdr)) + _CMSG_ALIGN(len))
|
47
|
+
Only in /Users/thieso/.rvm/src/ruby-1.9.2-p0/ext/socket: socket.bundle
|
48
|
+
Only in /Users/thieso/.rvm/src/ruby-1.9.2-p0/ext/socket: socket.o
|
49
|
+
Only in /Users/thieso/.rvm/src/ruby-1.9.2-p0/ext/socket: sockssocket.o
|
50
|
+
Only in /Users/thieso/.rvm/src/ruby-1.9.2-p0/ext/socket: tcpserver.o
|
51
|
+
Only in /Users/thieso/.rvm/src/ruby-1.9.2-p0/ext/socket: tcpsocket.o
|
52
|
+
Only in /Users/thieso/.rvm/src/ruby-1.9.2-p0/ext/socket: udpsocket.o
|
53
|
+
Only in /Users/thieso/.rvm/src/ruby-1.9.2-p0/ext/socket: unixserver.o
|
54
|
+
Only in /Users/thieso/.rvm/src/ruby-1.9.2-p0/ext/socket: unixsocket.o
|
data/textmate.patch
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
--- run_script.rb.orig 2010-10-25 09:23:45.000000000 +0200
|
2
|
+
+++ run_script.rb 2010-10-25 09:24:06.000000000 +0200
|
3
|
+
@@ -90,6 +90,22 @@
|
4
|
+
return path, '', path
|
5
|
+
end
|
6
|
+
|
7
|
+
+def snailgun_socket
|
8
|
+
+ Pathname.new(Dir.pwd).ascend do |path|
|
9
|
+
+ if File.exists?(path.join("config", "boot.rb"))
|
10
|
+
+ if File.exists?(path.join("tmp", "sockets", "snailgun", "test"))
|
11
|
+
+ return path.join("tmp", "sockets", "snailgun", "test").to_s
|
12
|
+
+ end
|
13
|
+
+ end
|
14
|
+
+ end
|
15
|
+
+ nil
|
16
|
+
+end
|
17
|
+
+
|
18
|
+
+if socket = snailgun_socket
|
19
|
+
+ ENV['SNAILGUN_SOCK'] = socket
|
20
|
+
+ cmd[0] = 'fruby'
|
21
|
+
+end
|
22
|
+
+
|
23
|
+
TextMate::Executor.run( cmd, :version_args => ["--version"],
|
24
|
+
:script_args => args ) do |line, type|
|
25
|
+
if is_test_script and type == :out
|
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.1.0
|
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:
|
12
|
+
date: 2010-10-24 00:00:00 +03:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -35,6 +35,10 @@ files:
|
|
35
35
|
- bin/snailgun
|
36
36
|
- lib/snailgun/server.rb
|
37
37
|
- README.markdown
|
38
|
+
- README-snowleopard
|
39
|
+
- ruby-1.9.2-p0.patch
|
40
|
+
- textmate.patch
|
41
|
+
- README-textmate
|
38
42
|
has_rdoc: true
|
39
43
|
homepage: http://github.com/candlerb/snailgun
|
40
44
|
licenses: []
|