spring 2.1.1 → 3.0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 90758ca717a756e672dfeaaf8295f17fcfa38f3ea3bc8bd27093a4354d45b82f
4
- data.tar.gz: 82533f3a3e3f5dc53c3f89d3b2734557bfefcf06b5cbe714238dba64160d56a3
3
+ metadata.gz: b33b73bbbedd5ed08ff1c6de6d040faaf347cfae0b6cc41c5378a834f0cefc87
4
+ data.tar.gz: 6e9c1f79634653bbf9875e6786a5e5d1df38d13d2f0b47fff129ff7a804a663c
5
5
  SHA512:
6
- metadata.gz: 80d8a7138fa74ad857a43671e54234da3a9b6265727f170c21905694397ebe5ec9b1102dbce3098835157e49e808cbbc52d74e1894a228ab0b25e521987cc4ca
7
- data.tar.gz: 4366760559dfa2bae19ce7478302b35ca050cd431e39241427dfb5666de3a4eb704039ccdc4b02634556041aba71cebe22a053f4553e63db9d7ecdfbb980bf66
6
+ metadata.gz: 1e7c861899e73bec7b1dd623d0c486b66efdb257bc388caf10034dd11095f2feffa2695e09008d1669931f4e1c8d805c70ca7e403ea76431315f583d43664e37
7
+ data.tar.gz: 49587a245923eee35343818174edf141d2b687fb4b09cd9eeefe31c867848b03400cee41e98f2d5b35130d1b313c3f9b3433a557bfb5c5a20fc6fe4ae0822f7a
data/README.md CHANGED
@@ -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
@@ -65,6 +65,16 @@ automatically add `./bin` to your `PATH` when you `cd` into your application.
65
65
  Simply create an `.envrc` file with the command `PATH_add bin` in your
66
66
  Rails directory.
67
67
 
68
+ ### Enable reloading
69
+
70
+ Spring reloads application code, and therefore needs the application to have
71
+ reloading enabled.
72
+
73
+ Please, make sure `config.cache_classes` is `false` in the environments that
74
+ Spring manages. That setting is typically configured in
75
+ `config/environments/*.rb`. In particular, make sure it is `false` for the
76
+ `test` environment.
77
+
68
78
  ### Usage
69
79
 
70
80
  For this walkthrough I've generated a new Rails application, and run
@@ -257,12 +267,10 @@ run through Spring, set the `DISABLE_SPRING` environment variable.
257
267
 
258
268
  ## Class reloading
259
269
 
260
- Spring uses Rails' class reloading mechanism
261
- (`ActiveSupport::Dependencies`) to keep your code up to date between
262
- test runs. This is the same mechanism which allows you to see changes
263
- during development when you refresh the page. However, you may never
264
- have used this mechanism with your `test` environment before, and this
265
- can cause problems.
270
+ Spring uses Rails' class reloading mechanism to keep your code up to date
271
+ between test runs. This is the same mechanism which allows you to see changes
272
+ during development when you refresh the page. However, you may never have used
273
+ this mechanism with your `test` environment before, and this can cause problems.
266
274
 
267
275
  It's important to realise that code reloading means that the constants
268
276
  in your application are *different objects* after files have changed:
@@ -91,23 +91,21 @@ module Spring
91
91
 
92
92
  require Spring.application_root_path.join("config", "application")
93
93
 
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"
94
+ unless Rails.respond_to?(:gem_version) && Rails.gem_version >= Gem::Version.new('5.2.0')
95
+ raise "Spring only supports Rails >= 5.2.0"
96
96
  end
97
97
 
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
98
+ Rails::Application.initializer :ensure_reloading_is_enabled, group: :all do
99
+ if Rails.application.config.cache_classes
100
+ raise <<-MSG.strip_heredoc
101
+ Spring reloads, and therefore needs the application to have reloading enabled.
102
+ Please, set config.cache_classes to false in config/environments/#{Rails.env}.rb.
103
+ MSG
104
+ end
104
105
  end
105
106
 
106
107
  require Spring.application_root_path.join("config", "environment")
107
108
 
108
- @original_cache_classes = Rails.application.config.cache_classes
109
- Rails.application.config.cache_classes = false
110
-
111
109
  disconnect_database
112
110
 
113
111
  @preloaded = :success
@@ -163,20 +161,9 @@ module Spring
163
161
  setup command
164
162
 
165
163
  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
164
+ Rails.application.reloader.reload!
173
165
  end
174
166
 
175
- # Ensure we boot the process in the directory the command was called from,
176
- # not from the directory Spring started in
177
- original_dir = Dir.pwd
178
- Dir.chdir(env['PWD'] || original_dir)
179
-
180
167
  pid = fork {
181
168
  Process.setsid
182
169
  IGNORE_SIGNALS.each { |sig| trap(sig, "DEFAULT") }
@@ -203,14 +190,6 @@ module Spring
203
190
  # Load in the current env vars, except those which *were* changed when Spring started
204
191
  env.each { |k, v| ENV[k] ||= v }
205
192
 
206
- # requiring is faster, so if config.cache_classes was true in
207
- # the environment's config file, then we can respect that from
208
- # here on as we no longer need constant reloading.
209
- if @original_cache_classes
210
- ActiveSupport::Dependencies.mechanism = :require
211
- Rails.application.config.cache_classes = true
212
- end
213
-
214
193
  connect_database
215
194
  srand
216
195
 
@@ -242,7 +221,6 @@ module Spring
242
221
  # (i.e. to prevent `spring rake -T | grep db` from hanging forever),
243
222
  # even when exception is raised before forking (i.e. preloading).
244
223
  reset_streams
245
- Dir.chdir(original_dir)
246
224
  end
247
225
 
248
226
  def terminate
data/lib/spring/env.rb CHANGED
@@ -1,7 +1,5 @@
1
1
  require "pathname"
2
- require "fileutils"
3
2
  require "digest/md5"
4
- require "tmpdir"
5
3
 
6
4
  require "spring/version"
7
5
  require "spring/sid"
@@ -33,10 +31,12 @@ module Spring
33
31
  end
34
32
 
35
33
  def tmp_path
34
+ require "tmpdir"
36
35
  path = Pathname.new(
37
36
  ENV["SPRING_TMP_PATH"] ||
38
37
  File.join(ENV['XDG_RUNTIME_DIR'] || Dir.tmpdir, "spring-#{Process.uid}")
39
38
  )
39
+ require "fileutils"
40
40
  FileUtils.mkdir_p(path) unless path.exist?
41
41
  path
42
42
  end
@@ -1,3 +1,3 @@
1
1
  module Spring
2
- VERSION = "2.1.1"
2
+ VERSION = "3.0.0"
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.1
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jon Leighton
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-08-25 00:00:00.000000000 Z
11
+ date: 2021-09-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -99,7 +99,7 @@ homepage: https://github.com/rails/spring
99
99
  licenses:
100
100
  - MIT
101
101
  metadata: {}
102
- post_install_message:
102
+ post_install_message:
103
103
  rdoc_options: []
104
104
  require_paths:
105
105
  - lib
@@ -107,15 +107,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - ">="
109
109
  - !ruby/object:Gem::Version
110
- version: 2.4.0
110
+ version: 2.5.0
111
111
  required_rubygems_version: !ruby/object:Gem::Requirement
112
112
  requirements:
113
113
  - - ">="
114
114
  - !ruby/object:Gem::Version
115
115
  version: '0'
116
116
  requirements: []
117
- rubygems_version: 3.0.3
118
- signing_key:
117
+ rubygems_version: 3.2.22
118
+ signing_key:
119
119
  specification_version: 4
120
120
  summary: Rails application preloader
121
121
  test_files: []