spring 2.1.0 → 3.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
  SHA256:
3
- metadata.gz: 239b79db86842dc2c1d0e6a82ac63a28425da6bdb199a09be37e3e6dfcb47fed
4
- data.tar.gz: f1e458e7a273425bd93d12f7ab023b91164777b9051eb1da5be13d188d048399
3
+ metadata.gz: 1f2e2dd87b67447e8ec1404be4f904fe1339e536dabddde397662313a7bb116d
4
+ data.tar.gz: 467c115d0fff87ded2aa4a7d761419f74ce9b45798f12568e21d97e1b261599f
5
5
  SHA512:
6
- metadata.gz: d79805cb44ca16a90556ffeb726b05323d719db51165b2279d269f0fc43292c9ae6510c766e02f7f86d509b3556bdfaa36985c363d64827ad092091923299a43
7
- data.tar.gz: b8acb6feab70ddd8dbb337b9d8540e01a4f285fecee7ebeb15ce4fb43f666ce35376cad6286c1d91723f7f1c6e60055ce9c3bbac04174e8322452a120b894418
6
+ metadata.gz: 3cc3b61d71972b7150fdbf7331ce1e55d447fabecbc4ba55914ce2621a9221fbb913efa31b715f80f77ff807dba06b3f89e26454ef623d8d2bc26af6b6f442a3
7
+ data.tar.gz: b459527ad5f9301dd75b1e2f5c9d6e6418e7c019c3a0073a4c6e905b9118db5193bcad051bba88fd5f55cbf124037332ed6a940cd857e4c59d67127d02dbb951
data/LICENSE.txt CHANGED
@@ -1,3 +1,4 @@
1
+ Copyright (c) 2017-2021 Rafael Mendonça França
1
2
  Copyright (c) 2012-2017 Jon Leighton
2
3
 
3
4
  MIT License
data/README.md CHANGED
@@ -1,10 +1,10 @@
1
1
  # Spring
2
2
 
3
- [![Build Status](https://travis-ci.org/rails/spring.svg?branch=master)](https://travis-ci.org/rails/spring)
4
- [![Gem Version](https://badge.fury.io/rb/spring.svg)](http://badge.fury.io/rb/spring)
3
+ [![Build Status](https://github.com/rails/spring/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/rails/spring/actions/workflows/ci.yml?branch=main)
4
+ [![Gem Version](https://badge.fury.io/rb/spring.svg)](https://badge.fury.io/rb/spring)
5
5
 
6
6
  Spring is a Rails application preloader. It speeds up development by
7
- keeping your application running in the background so you don't need to
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
10
  ## Features
@@ -16,8 +16,8 @@ boot it every time you run a test, rake task or migration.
16
16
 
17
17
  ## Compatibility
18
18
 
19
- * Ruby versions: MRI 2.4, MRI 2.5, MRI 2.6
20
- * Rails versions: 4.2, 5.0, 5.1, 5.2, 6.0 (Spring is installed by default when you do
19
+ * Ruby versions: MRI 2.5, MRI 2.6
20
+ * Rails versions: 5.2, 6.0 (Spring is installed by default when you do
21
21
  `rails new` to generate your application)
22
22
 
23
23
  Spring makes extensive use of `Process.fork`, so won't be able to
@@ -50,13 +50,14 @@ code into relevant existing executables. The snippet looks like this:
50
50
  ``` ruby
51
51
  begin
52
52
  load File.expand_path('../spring', __FILE__)
53
- rescue LoadError
53
+ rescue LoadError => e
54
+ raise unless e.message.include?('spring')
54
55
  end
55
56
  ```
56
57
 
57
58
  On platforms where Spring is installed and supported, this snippet
58
59
  hooks Spring into the execution of commands. In other cases, the snippet
59
- will just be silently ignored and the lines after it will be executed as
60
+ will just be silently ignored, and the lines after it will be executed as
60
61
  normal.
61
62
 
62
63
  If you don't want to prefix every command you type with `bin/`, you
@@ -65,6 +66,16 @@ automatically add `./bin` to your `PATH` when you `cd` into your application.
65
66
  Simply create an `.envrc` file with the command `PATH_add bin` in your
66
67
  Rails directory.
67
68
 
69
+ ### Enable reloading
70
+
71
+ Spring reloads application code, and therefore needs the application to have
72
+ reloading enabled.
73
+
74
+ Please, make sure `config.cache_classes` is `false` in the environments that
75
+ Spring manages. That setting is typically configured in
76
+ `config/environments/*.rb`. In particular, make sure it is `false` for the
77
+ `test` environment.
78
+
68
79
  ### Usage
69
80
 
70
81
  For this walkthrough I've generated a new Rails application, and run
@@ -168,7 +179,7 @@ Spring is running:
168
179
  ```
169
180
 
170
181
  There's no need to "shut down" Spring. This will happen automatically
171
- when you close your terminal. However if you do want to do a manual shut
182
+ when you close your terminal. However, if you do want to do a manual shut
172
183
  down, use the `stop` command:
173
184
 
174
185
  ```
@@ -188,12 +199,13 @@ To remove Spring:
188
199
  ### Deployment
189
200
 
190
201
  You must not install Spring on your production environment. To prevent it from
191
- being installed, provide the `--without development test` argument to the
202
+ being installed, run the `bundle config set without 'development test'` before
192
203
  `bundle install` command which is used to install gems on your production
193
204
  machines:
194
205
 
195
206
  ```
196
- $ bundle install --without development test
207
+ $ bundle config set without 'development test'
208
+ $ bundle install
197
209
  ```
198
210
 
199
211
  ## Commands
@@ -232,11 +244,13 @@ You can add these to your Gemfile for additional commands:
232
244
  * [spring-commands-testunit](https://github.com/jonleighton/spring-commands-testunit) - useful for
233
245
  running `Test::Unit` tests on Rails 3, since only Rails 4 allows you
234
246
  to use `rake test path/to/test` to run a particular test/directory.
247
+ * [spring-commands-parallel-tests](https://github.com/DocSpring/spring-commands-parallel-tests) - Adds the `parallel_*` commands from [`parallel_tests`](https://github.com/grosser/parallel_tests).
235
248
  * [spring-commands-teaspoon](https://github.com/alejandrobabio/spring-commands-teaspoon.git)
236
249
  * [spring-commands-m](https://github.com/gabrieljoelc/spring-commands-m.git)
237
250
  * [spring-commands-rubocop](https://github.com/p0deje/spring-commands-rubocop)
238
251
  * [spring-commands-rackup](https://github.com/wintersolutions/spring-commands-rackup)
239
252
  * [spring-commands-rack-console](https://github.com/wintersolutions/spring-commands-rack-console)
253
+ * [spring-commands-standard](https://github.com/lakim/spring-commands-standard)
240
254
 
241
255
  ## Use without adding to bundle
242
256
 
@@ -256,12 +270,10 @@ run through Spring, set the `DISABLE_SPRING` environment variable.
256
270
 
257
271
  ## Class reloading
258
272
 
259
- Spring uses Rails' class reloading mechanism
260
- (`ActiveSupport::Dependencies`) to keep your code up to date between
261
- test runs. This is the same mechanism which allows you to see changes
262
- during development when you refresh the page. However, you may never
263
- have used this mechanism with your `test` environment before, and this
264
- can cause problems.
273
+ Spring uses Rails' class reloading mechanism to keep your code up to date
274
+ between test runs. This is the same mechanism which allows you to see changes
275
+ during development when you refresh the page. However, you may never have used
276
+ this mechanism with your `test` environment before, and this can cause problems.
265
277
 
266
278
  It's important to realise that code reloading means that the constants
267
279
  in your application are *different objects* after files have changed:
@@ -361,7 +373,7 @@ application restart, you can specify them with `Spring.watch`:
361
373
  Spring.watch "config/some_config_file.yml"
362
374
  ```
363
375
 
364
- By default Spring polls the filesystem for changes once every 0.2 seconds. This
376
+ By default, Spring polls the filesystem for changes once every 0.2 seconds. This
365
377
  method requires zero configuration, but if you find that it's using too
366
378
  much CPU, then you can use event-based file system listening by
367
379
  installing the
@@ -381,24 +393,24 @@ Spring.quiet = true
381
393
 
382
394
  The following environment variables are used by Spring:
383
395
 
384
- * `DISABLE_SPRING` - If set, Spring will be bypassed and your
396
+ * `DISABLE_SPRING` - If set, Spring will be bypassed, and your
385
397
  application will boot in a foreground process
386
398
  * `SPRING_LOG` - The path to a file which Spring will write log messages
387
399
  to.
388
400
  * `SPRING_TMP_PATH` - The directory where Spring should write its temporary
389
- files (a pidfile and a socket). By default we use the
401
+ files (a pidfile and a socket). By default, we use the
390
402
  `XDG_RUNTIME_DIR` environment variable, or else `Dir.tmpdir`, and then
391
403
  create a directory in that named `spring-$UID`. We don't use your
392
404
  Rails application's `tmp/` directory because that may be on a
393
405
  filesystem which doesn't support UNIX sockets.
394
406
  * `SPRING_APPLICATION_ID` - Used to identify distinct Rails
395
- applications. By default it is an MD5 hash of the current
407
+ applications. By default, it is an MD5 hash of the current
396
408
  `RUBY_VERSION`, and the path to your Rails project root.
397
409
  * `SPRING_SOCKET` - The path which should be used for the UNIX socket
398
410
  which Spring uses to communicate with the long-running Spring server
399
- process. By default this is `SPRING_TMP_PATH/SPRING_APPLICATION_ID`.
411
+ process. By default, this is `SPRING_TMP_PATH/SPRING_APPLICATION_ID`.
400
412
  * `SPRING_PIDFILE` - The path which should be used to store the pid of
401
- the long-running Spring server process. By default this is related to
413
+ the long-running Spring server process. By default, this is related to
402
414
  the socket path; if the socket path is `/foo/bar/spring.sock` the
403
415
  pidfile will be `/foo/bar/spring.pid`.
404
416
  * `SPRING_SERVER_COMMAND` - The command to run to start up the Spring
@@ -12,6 +12,7 @@ module Spring
12
12
  @spring_env = spring_env
13
13
  @mutex = Mutex.new
14
14
  @waiting = Set.new
15
+ @clients = Set.new
15
16
  @preloaded = false
16
17
  @state = :initialized
17
18
  @interrupt = IO.pipe
@@ -91,23 +92,21 @@ module Spring
91
92
 
92
93
  require Spring.application_root_path.join("config", "application")
93
94
 
94
- unless Rails.respond_to?(:gem_version) && Rails.gem_version >= Gem::Version.new('4.2.0')
95
- raise "Spring only supports Rails >= 4.2.0"
95
+ unless Rails.respond_to?(:gem_version) && Rails.gem_version >= Gem::Version.new('5.2.0')
96
+ raise "Spring only supports Rails >= 5.2.0"
96
97
  end
97
98
 
98
- # config/environments/test.rb will have config.cache_classes = true. However
99
- # we want it to be false so that we can reload files. This is a hack to
100
- # override the effect of config.cache_classes = true. We can then actually
101
- # set config.cache_classes = false after loading the environment.
102
- Rails::Application.initializer :initialize_dependency_mechanism, group: :all do
103
- ActiveSupport::Dependencies.mechanism = :load
99
+ Rails::Application.initializer :ensure_reloading_is_enabled, group: :all do
100
+ if Rails.application.config.cache_classes
101
+ raise <<-MSG.strip_heredoc
102
+ Spring reloads, and therefore needs the application to have reloading enabled.
103
+ Please, set config.cache_classes to false in config/environments/#{Rails.env}.rb.
104
+ MSG
105
+ end
104
106
  end
105
107
 
106
108
  require Spring.application_root_path.join("config", "environment")
107
109
 
108
- @original_cache_classes = Rails.application.config.cache_classes
109
- Rails.application.config.cache_classes = false
110
-
111
110
  disconnect_database
112
111
 
113
112
  @preloaded = :success
@@ -117,7 +116,7 @@ module Spring
117
116
  raise e unless initialized?
118
117
  ensure
119
118
  watcher.add loaded_application_features
120
- watcher.add Spring.gemfile, "#{Spring.gemfile}.lock"
119
+ watcher.add Spring.gemfile, Spring.gemfile_lock
121
120
 
122
121
  if defined?(Rails) && Rails.application
123
122
  watcher.add Rails.application.paths["config/initializers"]
@@ -151,10 +150,23 @@ module Spring
151
150
  log "got client"
152
151
  manager.puts
153
152
 
153
+ @clients << client
154
+
154
155
  _stdout, stderr, _stdin = streams = 3.times.map { client.recv_io }
155
156
  [STDOUT, STDERR, STDIN].zip(streams).each { |a, b| a.reopen(b) }
156
157
 
157
- preload unless preloaded?
158
+ if preloaded?
159
+ client.puts(0) # preload success
160
+ else
161
+ begin
162
+ preload
163
+ client.puts(0) # preload success
164
+ rescue Exception
165
+ log "preload failed"
166
+ client.puts(1) # preload failure
167
+ raise
168
+ end
169
+ end
158
170
 
159
171
  args, env = JSON.load(client.read(client.gets.to_i)).values_at("args", "env")
160
172
  command = Spring.command(args.shift)
@@ -163,16 +175,14 @@ module Spring
163
175
  setup command
164
176
 
165
177
  if Rails.application.reloaders.any?(&:updated?)
166
- # Rails 5.1 forward-compat. AD::R is deprecated to AS::R in Rails 5.
167
- if defined? ActiveSupport::Reloader
168
- Rails.application.reloader.reload!
169
- else
170
- ActionDispatch::Reloader.cleanup!
171
- ActionDispatch::Reloader.prepare!
172
- end
178
+ Rails.application.reloader.reload!
173
179
  end
174
180
 
175
181
  pid = fork {
182
+ # Make sure to close other clients otherwise their graceful termination
183
+ # will be impossible due to reference from this fork.
184
+ @clients.select { |c| c != client }.each(&:close)
185
+
176
186
  Process.setsid
177
187
  IGNORE_SIGNALS.each { |sig| trap(sig, "DEFAULT") }
178
188
  trap("TERM", "DEFAULT")
@@ -198,14 +208,6 @@ module Spring
198
208
  # Load in the current env vars, except those which *were* changed when Spring started
199
209
  env.each { |k, v| ENV[k] ||= v }
200
210
 
201
- # requiring is faster, so if config.cache_classes was true in
202
- # the environment's config file, then we can respect that from
203
- # here on as we no longer need constant reloading.
204
- if @original_cache_classes
205
- ActiveSupport::Dependencies.mechanism = :require
206
- Rails.application.config.cache_classes = true
207
- end
208
-
209
211
  connect_database
210
212
  srand
211
213
 
@@ -302,7 +304,7 @@ module Spring
302
304
  ensure
303
305
  if $!
304
306
  lib = File.expand_path("..", __FILE__)
305
- $!.backtrace.reject! { |line| line.start_with?(lib) }
307
+ $!.backtrace.reject! { |line| line.start_with?(lib) } unless $!.backtrace.frozen?
306
308
  end
307
309
  end
308
310
  end
@@ -94,6 +94,7 @@ module Spring
94
94
  @child, child_socket = UNIXSocket.pair
95
95
 
96
96
  Bundler.with_original_env do
97
+ bundler_dir = File.expand_path("../..", $LOADED_FEATURES.grep(/bundler\/setup\.rb$/).first)
97
98
  @pid = Process.spawn(
98
99
  {
99
100
  "RAILS_ENV" => app_env,
@@ -102,7 +103,7 @@ module Spring
102
103
  "SPRING_PRELOAD" => preload ? "1" : "0"
103
104
  },
104
105
  "ruby",
105
- "-I", File.expand_path("../..", $LOADED_FEATURES.grep(/bundler\/setup\.rb$/).first),
106
+ *(bundler_dir != RbConfig::CONFIG["rubylibdir"] ? ["-I", bundler_dir] : []),
106
107
  "-I", File.expand_path("../..", __FILE__),
107
108
  "-e", "require 'spring/application/boot'",
108
109
  3 => child_socket,
@@ -22,6 +22,8 @@ module Spring
22
22
 
23
23
  if COMMANDS.include?(command_name)
24
24
  Run.call(["rails_#{command_name}", *args.drop(2)])
25
+ elsif command_name.start_with?("db:")
26
+ Run.call(["rake", *args.drop(1)])
25
27
  else
26
28
  require "spring/configuration"
27
29
  ARGV.shift
@@ -142,12 +142,17 @@ module Spring
142
142
  end
143
143
 
144
144
  def run_command(client, application)
145
- log "sending command"
146
-
147
145
  application.send_io STDOUT
148
146
  application.send_io STDERR
149
147
  application.send_io STDIN
150
148
 
149
+ log "waiting for the application to be preloaded"
150
+ preload_status = application.gets
151
+ preload_status = preload_status.chomp if preload_status
152
+ log "app preload status: #{preload_status}"
153
+ exit 1 if preload_status == "1"
154
+
155
+ log "sending command"
151
156
  send_json application, "args" => args, "env" => ENV.to_hash
152
157
 
153
158
  pid = server.gets
@@ -5,7 +5,22 @@ module Spring
5
5
  attr_accessor :application_root, :quiet
6
6
 
7
7
  def gemfile
8
- ENV['BUNDLE_GEMFILE'] || "Gemfile"
8
+ require "bundler"
9
+
10
+ if /\s1.9.[0-9]/ === Bundler.ruby_scope.gsub(/[\/\s]+/,'')
11
+ Pathname.new(ENV["BUNDLE_GEMFILE"] || "Gemfile").expand_path
12
+ else
13
+ Bundler.default_gemfile
14
+ end
15
+ end
16
+
17
+ def gemfile_lock
18
+ case gemfile.to_s
19
+ when /\bgems\.rb\z/
20
+ gemfile.sub_ext('.locked')
21
+ else
22
+ gemfile.sub_ext('.lock')
23
+ end
9
24
  end
10
25
 
11
26
  def after_fork_callbacks
data/lib/spring/env.rb CHANGED
@@ -1,10 +1,7 @@
1
1
  require "pathname"
2
- require "fileutils"
3
2
  require "digest/md5"
4
- require "tmpdir"
5
3
 
6
4
  require "spring/version"
7
- require "spring/sid"
8
5
  require "spring/configuration"
9
6
 
10
7
  module Spring
@@ -33,10 +30,12 @@ module Spring
33
30
  end
34
31
 
35
32
  def tmp_path
33
+ require "tmpdir"
36
34
  path = Pathname.new(
37
35
  ENV["SPRING_TMP_PATH"] ||
38
36
  File.join(ENV['XDG_RUNTIME_DIR'] || Dir.tmpdir, "spring-#{Process.uid}")
39
37
  )
38
+ require "fileutils"
40
39
  FileUtils.mkdir_p(path) unless path.exist?
41
40
  path
42
41
  end
data/lib/spring/json.rb CHANGED
@@ -46,11 +46,9 @@ end
46
46
 
47
47
  # See https://github.com/kr/okjson for updates.
48
48
 
49
- require 'stringio'
50
-
51
49
  # Some parts adapted from
52
- # http://golang.org/src/pkg/json/decode.go and
53
- # http://golang.org/src/pkg/utf8/utf8.go
50
+ # https://golang.org/src/pkg/json/decode.go and
51
+ # https://golang.org/src/pkg/utf8/utf8.go
54
52
  module Spring
55
53
  module OkJson
56
54
  Upstream = '43'
@@ -468,19 +466,18 @@ private
468
466
 
469
467
 
470
468
  def strenc(s)
471
- t = StringIO.new
472
- t.putc(?")
469
+ t = '"'.b
473
470
  r = 0
474
471
 
475
472
  while r < s.length
476
473
  case s[r]
477
- when ?" then t.print('\\"')
478
- when ?\\ then t.print('\\\\')
479
- when ?\b then t.print('\\b')
480
- when ?\f then t.print('\\f')
481
- when ?\n then t.print('\\n')
482
- when ?\r then t.print('\\r')
483
- when ?\t then t.print('\\t')
474
+ when ?" then t << '\\"'
475
+ when ?\\ then t << '\\\\'
476
+ when ?\b then t << '\\b'
477
+ when ?\f then t << '\\f'
478
+ when ?\n then t << '\\n'
479
+ when ?\r then t << '\\r'
480
+ when ?\t then t << '\\t'
484
481
  else
485
482
  c = s[r]
486
483
  # In ruby >= 1.9, s[r] is a codepoint, not a byte.
@@ -490,14 +487,14 @@ private
490
487
  if c.ord < Spc.ord
491
488
  c = "\\u%04x" % [c.ord]
492
489
  end
493
- t.write(c)
490
+ t << c
494
491
  rescue
495
- t.write(Ustrerr)
492
+ t << Ustrerr
496
493
  end
497
494
  elsif c < Spc
498
- t.write("\\u%04x" % c)
495
+ t << "\\u%04x" % c
499
496
  elsif Spc <= c && c <= ?~
500
- t.putc(c)
497
+ t << c
501
498
  else
502
499
  n = ucharcopy(t, s, r) # ensure valid UTF-8 output
503
500
  r += n - 1 # r is incremented below
@@ -505,8 +502,8 @@ private
505
502
  end
506
503
  r += 1
507
504
  end
508
- t.putc(?")
509
- t.string
505
+ t << '"'
506
+ t
510
507
  end
511
508
 
512
509
 
@@ -531,7 +528,7 @@ private
531
528
 
532
529
  # 1-byte, 7-bit sequence?
533
530
  if c0 < Utagx
534
- t.putc(c0)
531
+ t << c0
535
532
  return 1
536
533
  end
537
534
 
@@ -544,8 +541,8 @@ private
544
541
  # 2-byte, 11-bit sequence?
545
542
  if c0 < Utag3
546
543
  raise Utf8Error if ((c0&Umask2)<<6 | (c1&Umaskx)) <= Uchar1max
547
- t.putc(c0)
548
- t.putc(c1)
544
+ t << c0
545
+ t << c1
549
546
  return 2
550
547
  end
551
548
 
@@ -559,9 +556,9 @@ private
559
556
  if c0 < Utag4
560
557
  u = (c0&Umask3)<<12 | (c1&Umaskx)<<6 | (c2&Umaskx)
561
558
  raise Utf8Error if u <= Uchar2max
562
- t.putc(c0)
563
- t.putc(c1)
564
- t.putc(c2)
559
+ t << c0
560
+ t << c1
561
+ t << c2
565
562
  return 3
566
563
  end
567
564
 
@@ -574,16 +571,16 @@ private
574
571
  if c0 < Utag5
575
572
  u = (c0&Umask4)<<18 | (c1&Umaskx)<<12 | (c2&Umaskx)<<6 | (c3&Umaskx)
576
573
  raise Utf8Error if u <= Uchar3max
577
- t.putc(c0)
578
- t.putc(c1)
579
- t.putc(c2)
580
- t.putc(c3)
574
+ t << c0
575
+ t << c1
576
+ t << c2
577
+ t << c3
581
578
  return 4
582
579
  end
583
580
 
584
581
  raise Utf8Error
585
582
  rescue Utf8Error
586
- t.write(Ustrerr)
583
+ t << Ustrerr
587
584
  return 1
588
585
  end
589
586
 
data/lib/spring/server.rb CHANGED
@@ -81,7 +81,8 @@ module Spring
81
81
  # This will cause it to be automatically killed once the session
82
82
  # ends (i.e. when the user closes their terminal).
83
83
  def set_pgid
84
- Process.setpgid(0, SID.pgid)
84
+ pgid = Process.getpgid(Process.getsid)
85
+ Process.setpgid(0, pgid)
85
86
  end
86
87
 
87
88
  # Ignore SIGINT and SIGQUIT otherwise the user typing ^C or ^\ on the command line
@@ -1,3 +1,3 @@
1
1
  module Spring
2
- VERSION = "2.1.0"
2
+ VERSION = "3.1.1"
3
3
  end
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: 2.1.0
4
+ version: 3.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: 2019-06-14 00:00:00.000000000 Z
11
+ date: 2021-11-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -90,7 +90,6 @@ files:
90
90
  - lib/spring/json.rb
91
91
  - lib/spring/process_title_updater.rb
92
92
  - lib/spring/server.rb
93
- - lib/spring/sid.rb
94
93
  - lib/spring/version.rb
95
94
  - lib/spring/watcher.rb
96
95
  - lib/spring/watcher/abstract.rb
@@ -107,14 +106,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
107
106
  requirements:
108
107
  - - ">="
109
108
  - !ruby/object:Gem::Version
110
- version: 2.4.0
109
+ version: 2.5.0
111
110
  required_rubygems_version: !ruby/object:Gem::Requirement
112
111
  requirements:
113
112
  - - ">="
114
113
  - !ruby/object:Gem::Version
115
114
  version: '0'
116
115
  requirements: []
117
- rubygems_version: 3.0.1
116
+ rubygems_version: 3.2.22
118
117
  signing_key:
119
118
  specification_version: 4
120
119
  summary: Rails application preloader
data/lib/spring/sid.rb DELETED
@@ -1,42 +0,0 @@
1
- begin
2
- # If rubygems is present, keep it out of the way when loading fiddle,
3
- # otherwise if fiddle is not installed then rubygems will load all
4
- # gemspecs in its (futile) search for fiddle, which is slow.
5
- if respond_to?(:gem_original_require, true)
6
- gem_original_require 'fiddle'
7
- else
8
- require 'fiddle'
9
- end
10
- rescue LoadError
11
- end
12
-
13
- module Spring
14
- module SID
15
- def self.fiddle_func
16
- @fiddle_func ||= Fiddle::Function.new(
17
- DL::Handle::DEFAULT['getsid'],
18
- [Fiddle::TYPE_INT],
19
- Fiddle::TYPE_INT
20
- )
21
- end
22
-
23
- def self.sid
24
- @sid ||= begin
25
- if Process.respond_to?(:getsid)
26
- # Ruby 2
27
- Process.getsid
28
- elsif defined?(Fiddle) and defined?(DL)
29
- # Ruby 1.9.3 compiled with libffi support
30
- fiddle_func.call(0)
31
- else
32
- # last resort: shell out
33
- `ps -p #{Process.pid} -o sess=`.to_i
34
- end
35
- end
36
- end
37
-
38
- def self.pgid
39
- Process.getpgid(sid)
40
- end
41
- end
42
- end