spring 1.1.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a2357648d0fc0f884098f352ab693e66556de6df
4
- data.tar.gz: df070385ccdf9fbbb6d48770f21886dbab93516e
3
+ metadata.gz: e8e020e7dc1eb3f27faa79634ad8c9ff4e9c1ddb
4
+ data.tar.gz: 5bd55b0c1e659701f4cd61afaba2b854070bc482
5
5
  SHA512:
6
- metadata.gz: cc65ad0c92b3a134505805c9b8ed999029b49030ab0ca8e46473c47c18a6ff17804de47897a7493e28765dc3fa6dc18df2de5beb4be7b8f6bdf04bd979d2a7da
7
- data.tar.gz: 1b408b559590cf9a1b13da2d390d191964809107edc00c4b67e6c54384d05df1a5f9673fcc796318e1962c1f3c4e9fd49141596a3692c80b831d9cc933dd67c5
6
+ metadata.gz: ebecedcb2e4a616615dc33a752e54a380f685e9d43227f67a5c3a0f29ae8c500df20ab75705778e13f2efa5c52d51f4ed682472eda7b12006e3720a762232dd9
7
+ data.tar.gz: 349a6b90ba96409a80e90a14e5bc39d7057970d3a6a81eb8fe7e6c6b7cd48aebc7465d687ffd08b704a3977cc0c3405a72cc93521b022fd54ef7a13a154ba3e8
@@ -1,3 +1,12 @@
1
+ ## 1.1.1
2
+
3
+ * Fix `$0` so that it is no longer prefixed with "spring ", as doing
4
+ this cause issues with rspec when running just `rspec` with no
5
+ arguments.
6
+ * Ensure we're always connected to a tty when preloading the
7
+ application in the background, in order to avoid loading issues
8
+ with readline + libedit which affected pry-rails.
9
+
1
10
  ## 1.1.0
2
11
 
3
12
  * A `bin/spring` binstub is now generated. This allows us to load spring
@@ -0,0 +1,32 @@
1
+ # Contributing guide
2
+
3
+ ## Getting set up
4
+
5
+ Check out the code and run `bundle install` as usual.
6
+
7
+ ## Running tests
8
+
9
+ Running `rake` will run all tests. There are both unit tests and
10
+ acceptance tests. You can run them individually with `rake test:unit` or
11
+ `rake test:acceptance`.
12
+
13
+ If one doesn't already exist, the acceptance tests will generate a dummy
14
+ Rails app in `test/apps/`. On each test run, the dummy app is copied to
15
+ `test/apps/tmp/` so that any changes won't affect the pre-generated app
16
+ (this saves us having to regenerate the app on each run).
17
+
18
+ If tests are failing and you don't know why, it might be that the
19
+ pre-generated app has become inconsistent in some way. In that case the
20
+ best solution is to purge it with `rm -rf test/apps/*` and then run the
21
+ acceptance tests again, which will generate a new app.
22
+
23
+ ## Testing different Rails versions
24
+
25
+ You can set the `RAILS_VERSION` environment variable:
26
+
27
+ ```
28
+ $ RAILS_VERSION="~> 3.2.0" rake test:acceptance
29
+ ```
30
+
31
+ The apps in `test/apps` will be named based on the rails version and the
32
+ spring version.
data/README.md CHANGED
@@ -7,6 +7,8 @@ Spring is a Rails application preloader. It speeds up development by
7
7
  keeping your application running in the background so you don't need to
8
8
  boot it every time you run a test, rake task or migration.
9
9
 
10
+ **Upgrading to 1.1? It's recommended to run `bundle exec spring binstub --all` to regenerate your binstubs.**
11
+
10
12
  ## Features
11
13
 
12
14
  * Totally automatic; no need to explicitly start and stop the background process
@@ -1,5 +1,6 @@
1
1
  require "spring/boot"
2
2
  require "set"
3
+ require "pty"
3
4
 
4
5
  module Spring
5
6
  class Application
@@ -102,12 +103,16 @@ module Spring
102
103
  watcher.add loaded_application_features
103
104
  watcher.add Spring.gemfile, "#{Spring.gemfile}.lock"
104
105
 
105
- if defined?(Rails)
106
+ if defined?(Rails) && Rails.application
106
107
  watcher.add Rails.application.paths["config/initializers"]
107
108
  watcher.add Rails.application.paths["config/database"]
108
109
  end
109
110
  end
110
111
 
112
+ def eager_preload
113
+ with_pty { preload }
114
+ end
115
+
111
116
  def run
112
117
  state :running
113
118
  manager.puts
@@ -128,7 +133,7 @@ module Spring
128
133
  manager.puts
129
134
 
130
135
  stdout, stderr, stdin = streams = 3.times.map { client.recv_io }
131
- [STDOUT, STDERR].zip([stdout, stderr]).each { |a, b| a.reopen(b) }
136
+ [STDOUT, STDERR, STDIN].zip(streams).each { |a, b| a.reopen(b) }
132
137
 
133
138
  preload unless preloaded?
134
139
 
@@ -144,8 +149,6 @@ module Spring
144
149
  end
145
150
 
146
151
  pid = fork {
147
- Process.setsid
148
- STDIN.reopen(stdin)
149
152
  IGNORE_SIGNALS.each { |sig| trap(sig, "DEFAULT") }
150
153
  trap("TERM", "DEFAULT")
151
154
 
@@ -172,7 +175,7 @@ module Spring
172
175
  }
173
176
 
174
177
  disconnect_database
175
- [STDOUT, STDERR].each { |stream| stream.reopen(spring_env.log_file) }
178
+ reset_streams
176
179
 
177
180
  log "forked #{pid}"
178
181
  manager.puts pid
@@ -273,5 +276,18 @@ module Spring
273
276
  stream.puts("#{first}: #{error} (#{error.class})")
274
277
  rest.each { |line| stream.puts("\tfrom #{line}") }
275
278
  end
279
+
280
+ def with_pty
281
+ PTY.open do |master, slave|
282
+ [STDOUT, STDERR, STDIN].each { |s| s.reopen slave }
283
+ yield
284
+ reset_streams
285
+ end
286
+ end
287
+
288
+ def reset_streams
289
+ [STDOUT, STDERR].each { |stream| stream.reopen(spring_env.log_file) }
290
+ STDIN.reopen("/dev/null")
291
+ end
276
292
  end
277
293
  end
@@ -1,3 +1,6 @@
1
+ # This is necessary for the terminal to work correctly when we reopen stdin.
2
+ Process.setsid
3
+
1
4
  require "spring/application"
2
5
 
3
6
  app = Spring::Application.new(
@@ -6,11 +9,10 @@ app = Spring::Application.new(
6
9
  )
7
10
 
8
11
  Signal.trap("TERM") { app.terminate }
9
- Signal.trap("TTOU", "IGNORE")
10
12
 
11
13
  Spring::ProcessTitleUpdater.run { |distance|
12
14
  "spring app | #{app.app_name} | started #{distance} ago | #{app.app_env} mode"
13
15
  }
14
16
 
15
- app.preload if ENV.delete("SPRING_PRELOAD") == "1"
17
+ app.eager_preload if ENV.delete("SPRING_PRELOAD") == "1"
16
18
  app.run
@@ -42,7 +42,7 @@ module Spring
42
42
  end
43
43
 
44
44
  def process_title
45
- ["spring", name, *ARGV].join(" ")
45
+ [name, *ARGV].join(" ")
46
46
  end
47
47
 
48
48
  def gem_name
@@ -1,3 +1,3 @@
1
1
  module Spring
2
- VERSION = "1.1.0"
2
+ VERSION = "1.1.1"
3
3
  end
@@ -267,8 +267,8 @@ module Spring
267
267
  # Sporadic SSL errors keep causing test failures so there are anti-SSL workarounds here
268
268
  def generate
269
269
  Bundler.with_clean_env do
270
- system("(gem list rails --installed --version '#{version_constraint}' || " \
271
- "gem install rails --clear-sources --source http://rubygems.org --version '#{version_constraint}')")
270
+ system("gem list rails --installed --version '#{version_constraint}' || " \
271
+ "gem install rails --clear-sources --source http://rubygems.org --version '#{version_constraint}'")
272
272
 
273
273
  skips = %w(--skip-bundle --skip-javascript --skip-sprockets)
274
274
  skips << "--skip-spring" if version.bundles_spring?
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spring
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jon Leighton
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-17 00:00:00.000000000 Z
11
+ date: 2014-02-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -49,6 +49,7 @@ files:
49
49
  - .gitignore
50
50
  - .travis.yml
51
51
  - CHANGELOG.md
52
+ - CONTRIBUTING.md
52
53
  - Gemfile
53
54
  - LICENSE.txt
54
55
  - README.md