Skip to content

Releases: rails/spring

4.7.0

Choose a tag to compare

@rafaelfranca rafaelfranca released this 23 Jun 19:37
v4.7.0
b7f3fd0

What's Changed

  • Make client smarter about Spring server state by @Korri in #756

Full Changelog: v4.6.0...v4.7.0

4.6.0

Choose a tag to compare

@rafaelfranca rafaelfranca released this 26 May 21:44
v4.6.0
b7f7970
  • Add Spring.dangerously_allow_disabling_reloading opt-in to skip the :ensure_reloading_is_enabled initializer check, so projects that want to run with config.cache_classes = true / config.enable_reloading = false can.
    The default behavior (refuse to boot) is unchanged, as using this option requires a Rails application that uses
    lazy-loader for everything (most importantly, routes & i18n translations).

What's Changed

  • Add Spring.allow_reloading_disabled opt-in by @Korri in #755

Full Changelog: v4.5.0...v4.6.0

4.5.0

Choose a tag to compare

@rafaelfranca rafaelfranca released this 01 May 21:27
v4.5.0
4e2bc90
  • Skip spring without error if spring is not in installed bundler groups.

  • Adds a Spring.after_environment_load hook that runs immediately after the Rails application environment is
    loaded in the Spring server process, but before GC.compact/Process.warmup and before the server enters its
    wait loop. This hook enables applications to preload expensive test infrastructure (e.g. test helpers, fixture
    caches, datastore connections) into the Spring server so that forked test workers inherit that work via
    copy-on-write instead of paying it on every invocation.

  • Fixed crashes when a client disconnects mid-handshake (e.g. on connect timeout). Previously, Errno::EPIPE
    raised in Spring::Server#serve or Spring::Application#serve would propagate up through the accept loop and
    kill the process, leaving a stale socket that broke every subsequent client. Both crash sites are now rescued,
    including writes that happen inside the rescue Exception handler in Application#serve while reporting an earlier failure to the gone client.

  • Eagerly autoload framework base classes (ActionMailer::Base, ActionController::Base,
    ActionController::API) at the end of preload so their ActiveSupport.on_load hooks fire in the parent
    process. Without this, the reloader probe in #serve materializes Rails internals (notably Action View's
    CacheExpiry::ViewReloader) in a half-initialized state and triggers an expensive FileUpdateChecker rebuild
    on every prepend_view_path inside each fork. See rails/rails#51308 for the lazy-init contract this aligns
    with.

What's Changed

  • Add Spring.after_environment_load hook for post-Rails preloading by @jahfer in #754
  • Don't crash on client disconnect (Server and Application) by @Korri in #751
  • Eagerly preload framework base classes by @Korri in #752
  • Do not load configuration options from .railsrc when generating dummy app by @sebroeder in #543
  • Run without error if spring is in uninstalled group by @mkllnk in #684

New Contributors

Full Changelog: v4.4.2...v4.5.0

4.4.2

Choose a tag to compare

@rafaelfranca rafaelfranca released this 03 Feb 22:38
v4.4.2
0242d4d

What's Changed

New Contributors

Full Changelog: v4.4.1...v4.4.2

4.4.1

Choose a tag to compare

@rafaelfranca rafaelfranca released this 09 Jan 00:21
v4.4.1
13ba7d3

What's Changed

  • Uses subclasses instead of descendants to support Rails < 7.1
  • Pass signaled exit code properly to the client by @rafaelfranca in #744

Full Changelog: v4.4.0...v4.4.1

4.4.0

Choose a tag to compare

@rafaelfranca rafaelfranca released this 07 Aug 18:11
v4.4.0
ebfa6fb
  • Revert the removal of UTF-8 force encoding in JSON loading.
  • Shush the backtrace_locations too.
  • Recommend setting enable_reloading on newer Rails version.
  • Drop support to end-of-life Ruby versions.
  • Fixed a bug that would crash the server if sending IO to the child failed.

What's Changed

New Contributors

Full Changelog: v4.3.0...v4.4.0

4.3.0

Choose a tag to compare

@rafaelfranca rafaelfranca released this 01 Aug 21:21
  • Fix reloading issue in Ruby 3.3.
  • Fixed compatibility with --enable-frozen-string-literal.
  • Add embeded engines to default reload matcher.

What's Changed

  • Fix reloading issue in Ruby 3.3.
  • Fixed compatibility with --enable-frozen-string-literal.
  • Add embeded engines to default reload matcher.

New Contributors

Full Changelog: v4.2.1...v4.3.0

4.2.1

Choose a tag to compare

@rafaelfranca rafaelfranca released this 01 Aug 21:21
  • Added Spring.connect_timeout and Spring.boot_timeout to allow to increase timeout for larger apps.
  • Spring.connect_timeout now default to 5 seconds instead of 1.

What's Changed

  • Added Spring.connect_timeout and Spring.boot_timeout to allow to increase timeout for larger apps.
  • Spring.connect_timeout now default to 5 seconds instead of 1.

Full Changelog: v4.2.0...v4.2.1

4.2.0

Choose a tag to compare

@rafaelfranca rafaelfranca released this 01 Aug 21:21
  • Added Spring.reset_on_env to define environment variables which should cause spring to reload when they change.
  • Added Spring.spawn_on_env to define environment variables that should cause spring to start a distinct server.
  • Better handle a case where the server could hang.

What's Changed

  • Added Spring.reset_on_env to define environment variables which should cause spring to reload when they change.
  • Added Spring.spawn_on_env to define environment variables that should cause spring to start a distinct server.
  • Better handle a case where the server could hang.

New Contributors

Full Changelog: v4.1.3...v4.2.0

4.1.3

Choose a tag to compare

@rafaelfranca rafaelfranca released this 01 Aug 21:20
  • Bring back Spring::Watcher::Abstract#synchronize method to fix compatibility with spring-watcher-listen.

What's Changed

  • Bring back Spring::Watcher::Abstract#synchronize method to fix compatibility with spring-watcher-listen.

Full Changelog: v4.1.2...v4.1.3