spring 0.0.4 → 0.0.5
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.md +11 -8
- data/lib/spring.rb +28 -3
- data/lib/spring/commands.rb +16 -8
- data/lib/spring/version.rb +1 -1
- data/spring.gemspec +1 -1
- data/test/acceptance/app_test.rb +8 -0
- data/test/apps/rails-3-2/config/spring.rb +1 -1
- metadata +3 -3
data/README.md
CHANGED
@@ -42,7 +42,10 @@ At the moment only MRI 1.9.3 / Rails 3.2 is supported.
|
|
42
42
|
|
43
43
|
## Usage
|
44
44
|
|
45
|
-
|
45
|
+
Install the `spring` gem. You may wish to add it to your bundle, but
|
46
|
+
it's not necessary. If you do, I don't recommend invoking `spring`
|
47
|
+
via `bundle exec` as that will make it slow. Just call `spring`
|
48
|
+
on its own.
|
46
49
|
|
47
50
|
You now have a `spring` command. Do a `rbenv rehash` if necessary. Note
|
48
51
|
that on my machine I had over 700 gems installed, and activating the gem
|
@@ -79,8 +82,8 @@ That booted our app in the background:
|
|
79
82
|
|
80
83
|
```
|
81
84
|
$ ps ax | grep spring
|
82
|
-
8692 pts/6 Sl 0:00 /home/turnip/.rbenv/versions/1.9.3-p194/bin/ruby -
|
83
|
-
8698 pts/6 Sl 0:02 /home/turnip/.rbenv/versions/1.9.3-p194/bin/ruby -
|
85
|
+
8692 pts/6 Sl 0:00 /home/turnip/.rbenv/versions/1.9.3-p194/bin/ruby -I ... -r spring/server -r bundler/setup -e Spring::Server.boot
|
86
|
+
8698 pts/6 Sl 0:02 /home/turnip/.rbenv/versions/1.9.3-p194/bin/ruby -I ... -r spring/server -r bundler/setup -e Spring::Server.boot
|
84
87
|
```
|
85
88
|
|
86
89
|
We can see two processes, one is the Spring server, the other is the
|
@@ -118,8 +121,8 @@ automatically. Note that the application process id is 8698 above. Let's
|
|
118
121
|
```
|
119
122
|
$ touch config/application.rb
|
120
123
|
$ ps ax | grep spring
|
121
|
-
8692 pts/6 Sl 0:00 /home/turnip/.rbenv/versions/1.9.3-p194/bin/ruby -
|
122
|
-
8876 pts/6 Sl 0:00 /home/turnip/.rbenv/versions/1.9.3-p194/bin/ruby -
|
124
|
+
8692 pts/6 Sl 0:00 /home/turnip/.rbenv/versions/1.9.3-p194/bin/ruby -I ... -r spring/server -r bundler/setup -e Spring::Server.boot
|
125
|
+
8876 pts/6 Sl 0:00 /home/turnip/.rbenv/versions/1.9.3-p194/bin/ruby -I ... -r spring/server -r bundler/setup -e Spring::Server.boot
|
123
126
|
```
|
124
127
|
|
125
128
|
The application process detected the change and exited. The server process
|
@@ -151,9 +154,9 @@ the application in development mode.
|
|
151
154
|
|
152
155
|
```
|
153
156
|
$ ps ax | grep spring
|
154
|
-
8692 pts/6 Sl 0:00 /home/turnip/.rbenv/versions/1.9.3-p194/bin/ruby -
|
155
|
-
8876 pts/6 Sl 0:15 /home/turnip/.rbenv/versions/1.9.3-p194/bin/ruby -
|
156
|
-
9088 pts/6 Sl 0:01 /home/turnip/.rbenv/versions/1.9.3-p194/bin/ruby -
|
157
|
+
8692 pts/6 Sl 0:00 /home/turnip/.rbenv/versions/1.9.3-p194/bin/ruby -I ... -r spring/server -r bundler/setup -e Spring::Server.boot
|
158
|
+
8876 pts/6 Sl 0:15 /home/turnip/.rbenv/versions/1.9.3-p194/bin/ruby -I ... -r spring/server -r bundler/setup -e Spring::Server.boot
|
159
|
+
9088 pts/6 Sl 0:01 /home/turnip/.rbenv/versions/1.9.3-p194/bin/ruby -I ... -r spring/server -r bundler/setup -e Spring::Server.boot
|
157
160
|
```
|
158
161
|
|
159
162
|
Running rake is faster the second time:
|
data/lib/spring.rb
CHANGED
@@ -10,8 +10,9 @@ require "spring/commands"
|
|
10
10
|
class Spring
|
11
11
|
SERVER_COMMAND = [
|
12
12
|
File.join(*RbConfig::CONFIG.values_at('bindir', 'RUBY_INSTALL_NAME')),
|
13
|
-
"-
|
13
|
+
"-I", File.expand_path("../", __FILE__),
|
14
14
|
"-r", "spring/server",
|
15
|
+
"-r", "bundler/setup",
|
15
16
|
"-e", "Spring::Server.boot"
|
16
17
|
]
|
17
18
|
|
@@ -51,6 +52,32 @@ class Spring
|
|
51
52
|
end
|
52
53
|
|
53
54
|
def run(args)
|
55
|
+
if self.class.command_registered?(args.first)
|
56
|
+
run_command(args)
|
57
|
+
else
|
58
|
+
print_help
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
private
|
63
|
+
|
64
|
+
def print_help
|
65
|
+
puts <<-EOT
|
66
|
+
Usage: spring COMMAND [ARGS]
|
67
|
+
|
68
|
+
The most common spring commands are:
|
69
|
+
rake Run a rake task
|
70
|
+
console Start the Rails console
|
71
|
+
runner Execute a command with the Rails runner
|
72
|
+
generate Trigger a Rails generator
|
73
|
+
|
74
|
+
test Execute a Test::Unit test
|
75
|
+
rspec Execute an RSpec spec
|
76
|
+
EOT
|
77
|
+
false
|
78
|
+
end
|
79
|
+
|
80
|
+
def run_command(args)
|
54
81
|
boot_server unless server_running?
|
55
82
|
|
56
83
|
application, client = UNIXSocket.pair
|
@@ -91,8 +118,6 @@ class Spring
|
|
91
118
|
server.close if server
|
92
119
|
end
|
93
120
|
|
94
|
-
private
|
95
|
-
|
96
121
|
def rails_env_for(command_name)
|
97
122
|
command = Spring.command(command_name)
|
98
123
|
|
data/lib/spring/commands.rb
CHANGED
@@ -5,8 +5,16 @@ class Spring
|
|
5
5
|
attr_reader :commands
|
6
6
|
end
|
7
7
|
|
8
|
-
def self.register_command(name, klass)
|
9
|
-
commands[name] = klass
|
8
|
+
def self.register_command(name, klass, options = {})
|
9
|
+
commands[name] = klass
|
10
|
+
|
11
|
+
if options[:alias]
|
12
|
+
commands[options[:alias]] = klass
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.command_registered?(name)
|
17
|
+
commands.has_key?(name)
|
10
18
|
end
|
11
19
|
|
12
20
|
def self.command(name)
|
@@ -35,7 +43,7 @@ class Spring
|
|
35
43
|
require File.expand_path(args.first)
|
36
44
|
end
|
37
45
|
end
|
38
|
-
Spring.register_command "test", Test
|
46
|
+
Spring.register_command "test", Test.new
|
39
47
|
|
40
48
|
class RSpec
|
41
49
|
def env
|
@@ -51,7 +59,7 @@ class Spring
|
|
51
59
|
::RSpec::Core::Runner.run(args)
|
52
60
|
end
|
53
61
|
end
|
54
|
-
Spring.register_command "rspec", RSpec
|
62
|
+
Spring.register_command "rspec", RSpec.new
|
55
63
|
|
56
64
|
class Rake
|
57
65
|
def setup
|
@@ -63,7 +71,7 @@ class Spring
|
|
63
71
|
::Rake.application.run
|
64
72
|
end
|
65
73
|
end
|
66
|
-
Spring.register_command "rake", Rake
|
74
|
+
Spring.register_command "rake", Rake.new
|
67
75
|
|
68
76
|
class Console
|
69
77
|
def setup
|
@@ -75,7 +83,7 @@ class Spring
|
|
75
83
|
::Rails::Console.start(::Rails.application)
|
76
84
|
end
|
77
85
|
end
|
78
|
-
Spring.register_command "console", Console
|
86
|
+
Spring.register_command "console", Console.new, alias: "c"
|
79
87
|
|
80
88
|
class Generate
|
81
89
|
def setup
|
@@ -87,7 +95,7 @@ class Spring
|
|
87
95
|
require "rails/commands/generate"
|
88
96
|
end
|
89
97
|
end
|
90
|
-
Spring.register_command "generate", Generate
|
98
|
+
Spring.register_command "generate", Generate.new, alias: "g"
|
91
99
|
|
92
100
|
class Runner
|
93
101
|
def call(args)
|
@@ -96,6 +104,6 @@ class Spring
|
|
96
104
|
require "rails/commands/runner"
|
97
105
|
end
|
98
106
|
end
|
99
|
-
Spring.register_command "runner", Runner
|
107
|
+
Spring.register_command "runner", Runner.new, alias: "r"
|
100
108
|
end
|
101
109
|
end
|
data/lib/spring/version.rb
CHANGED
data/spring.gemspec
CHANGED
@@ -17,6 +17,6 @@ Gem::Specification.new do |gem|
|
|
17
17
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
18
|
gem.require_paths = ["lib"]
|
19
19
|
|
20
|
-
gem.
|
20
|
+
gem.add_development_dependency 'activesupport'
|
21
21
|
gem.add_development_dependency 'rake'
|
22
22
|
end
|
data/test/acceptance/app_test.rb
CHANGED
@@ -122,6 +122,10 @@ class AppTest < ActiveSupport::TestCase
|
|
122
122
|
assert_speedup
|
123
123
|
end
|
124
124
|
|
125
|
+
test "help message when called without arguments" do
|
126
|
+
assert_stdout BINFILE, 'Usage: spring COMMAND [ARGS]'
|
127
|
+
end
|
128
|
+
|
125
129
|
test "test changes are picked up" do
|
126
130
|
assert_successful_run test_command
|
127
131
|
|
@@ -208,4 +212,8 @@ class AppTest < ActiveSupport::TestCase
|
|
208
212
|
test "custom commands" do
|
209
213
|
assert_stdout "#{BINFILE} custom", "omg"
|
210
214
|
end
|
215
|
+
|
216
|
+
test "runner alias" do
|
217
|
+
assert_stdout "#{BINFILE} r 'puts 1'", "1"
|
218
|
+
end
|
211
219
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spring
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-01-
|
12
|
+
date: 2013-01-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
@@ -19,7 +19,7 @@ dependencies:
|
|
19
19
|
- - ! '>='
|
20
20
|
- !ruby/object:Gem::Version
|
21
21
|
version: '0'
|
22
|
-
type: :
|
22
|
+
type: :development
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
none: false
|