spin 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/bin/spin +23 -8
  2. metadata +4 -4
data/bin/spin CHANGED
@@ -29,7 +29,7 @@ def socket_file
29
29
  end
30
30
 
31
31
  # ## spin serve
32
- def serve(force_rspec = false)
32
+ def serve(force_rspec = false, time = false)
33
33
  file = socket_file
34
34
  # We delete the tmp file for the Unix socket if it already exists. The file
35
35
  # is scoped to the `pwd`, so if it already exists then it must be from an
@@ -50,7 +50,7 @@ def serve(force_rspec = false)
50
50
  # In my experience that's the best we can do in terms of preloading. Rails
51
51
  # and the gem dependencies rarely change and so don't need to be reloaded.
52
52
  # But you can't initialize the application because any non-trivial app will
53
- # involve it's models/controllers, etc. in its initialization, which you
53
+ # involve it's models/controllers, etc. in its initialization, which you
54
54
  # definitely don't want to preload.
55
55
  require File.expand_path 'config/application'
56
56
  }
@@ -68,6 +68,10 @@ def serve(force_rspec = false)
68
68
  files = conn.gets.chomp
69
69
  files = files.split(File::PATH_SEPARATOR)
70
70
 
71
+ # If spin is started with the time flag we will track total execution so
72
+ # you can easily compare it with time rspec spec for example
73
+ start = Time.now if time
74
+
71
75
  # We fork(2) before loading the file so that our pristine preloaded
72
76
  # environment is untouched. The child process will load whatever code it
73
77
  # needs to, then it exits and we're back to the baseline preloaded app.
@@ -79,7 +83,7 @@ def serve(force_rspec = false)
79
83
  # test file that you want to run (suddenly test/unit seems like the less
80
84
  # crazy one!).
81
85
  if defined?(RSpec) || force_rspec
82
- # We pretend the filepath came in as an argument and duplicate the
86
+ # We pretend the filepath came in as an argument and duplicate the
83
87
  # behaviour of the `rspec` binary.
84
88
  ARGV.push files
85
89
  require 'rspec/autorun'
@@ -94,15 +98,16 @@ def serve(force_rspec = false)
94
98
  # that destroys the idea of being simple to use. So we wait(2) until the
95
99
  # child process has finished running the test.
96
100
  Process.wait
101
+
102
+ # If we are tracking time we will output it here after everything has
103
+ # finished running
104
+ puts "Total execution time was #{Time.now - start} seconds" if start
97
105
  end
98
106
  end
99
107
 
100
108
  # ## spin push
101
109
  def push
102
- # This is the other end of the socket that `spin serve` opens. At this point
103
- # `spin serve` will accept(2) our connection.
104
- socket = UNIXSocket.open(socket_file)
105
- # The filenames that we will spin up to `spin serve` are passed in as
110
+ # The filenames that we will spin up to `spin serve` are passed in as
106
111
  # arguments.
107
112
  files_to_load = ARGV
108
113
 
@@ -112,7 +117,12 @@ def push
112
117
  #
113
118
  # We build a string like `file1.rb:file2.rb` and pass it up to the server.
114
119
  f = files_to_load.select { |f| File.exist?(f) }.join(File::PATH_SEPARATOR)
120
+ abort if f.empty?
115
121
  puts "Spinning up #{f}"
122
+
123
+ # This is the other end of the socket that `spin serve` opens. At this point
124
+ # `spin serve` will accept(2) our connection.
125
+ socket = UNIXSocket.open(socket_file)
116
126
  # We put the filenames on the socket for the server to read and then load.
117
127
  socket.puts f
118
128
  rescue Errno::ECONNREFUSED
@@ -120,6 +130,7 @@ rescue Errno::ECONNREFUSED
120
130
  end
121
131
 
122
132
  force_rspec = false
133
+ time = false
123
134
  options = OptionParser.new do |opts|
124
135
  opts.banner = usage
125
136
  opts.separator ""
@@ -135,6 +146,10 @@ options = OptionParser.new do |opts|
135
146
 
136
147
  opts.on('-e', 'Stub to keep kicker happy')
137
148
 
149
+ opts.on('-t', '--time') do |v|
150
+ time = true
151
+ end
152
+
138
153
  opts.on('-h', '--help') do
139
154
  $stderr.puts opts
140
155
  exit 1
@@ -144,7 +159,7 @@ options.parse!
144
159
 
145
160
  subcommand = ARGV.shift
146
161
  case subcommand
147
- when 'serve' then serve(force_rspec)
162
+ when 'serve' then serve(force_rspec, time)
148
163
  when 'push' then push
149
164
  else
150
165
  $stderr.puts options
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spin
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 17
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 4
10
- version: 0.1.4
9
+ - 5
10
+ version: 0.1.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jesse Storimer
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-11-02 00:00:00 -04:00
18
+ date: 2011-11-15 00:00:00 -05:00
19
19
  default_executable:
20
20
  dependencies: []
21
21