module Spring
### WHY SPRING VENDORS A JSON
LIBRARY ###
Spring
is designed to be able to run outside of bundler. Ruby has a built-in “json” library, which we could use. However if we require that, and somebody has a different (perhaps newer) version of the json gem in their Gemfile, it will never get used since we already required the older version of the json library from the stdlib. Therefore, we are vendoring a json library for our own use in order to not interfere.
Some parts adapted from golang.org/src/pkg/json/decode.go and golang.org/src/pkg/utf8/utf8.go
Constants
- IGNORE_SIGNALS
- ORIGINAL_ENV
- STOP_TIMEOUT
- VERSION
Attributes
Public Class Methods
Source
# File lib/spring/configuration.rb, line 31 def after_fork(&block) after_fork_callbacks << block end
Source
# File lib/spring/configuration.rb, line 27 def after_fork_callbacks @after_fork_callbacks ||= [] end
Source
# File lib/spring/configuration.rb, line 39 def application_root_path @application_root_path ||= begin if application_root path = Pathname.new(File.expand_path(application_root)) else path = project_root_path end raise MissingApplication.new(path) unless path.join("config/application.rb").exist? path end end
Source
# File lib/spring/commands.rb, line 19 def self.command(name) commands.fetch name end
Source
# File lib/spring/commands.rb, line 15 def self.command?(name) commands.include? name end
Source
# File lib/spring/failsafe_thread.rb, line 5 def failsafe_thread Thread.new { begin yield rescue end } end
Source
# File lib/spring/configuration.rb, line 8 def gemfile require "bundler" if /\s1.9.[0-9]/ === Bundler.ruby_scope.gsub(/[\/\s]+/,'') Pathname.new(ENV["BUNDLE_GEMFILE"] || "Gemfile").expand_path else Bundler.default_gemfile end end
Source
# File lib/spring/configuration.rb, line 18 def gemfile_lock case gemfile.to_s when /\bgems\.rb\z/ gemfile.sub_ext('.locked') else gemfile.sub_ext('.lock') end end
Source
# File lib/spring/configuration.rb, line 52 def project_root_path @project_root_path ||= find_project_root(Pathname.new(File.expand_path(Dir.pwd))) end
Source
# File lib/spring/configuration.rb, line 56 def quiet @quiet || ENV.key?('SPRING_QUIET') end
Source
# File lib/spring/commands.rb, line 11 def self.register_command(name, command = nil) commands[name] = CommandWrapper.new(name, command) end
Source
# File lib/spring/configuration.rb, line 35 def verify_environment application_root_path end
Source
# File lib/spring/watcher.rb, line 27 def self.watch(*items) watcher.add(*items) end
Source
# File lib/spring/watcher.rb, line 11 def self.watch_method=(method) if method.is_a?(Class) @watch_method = method else require "spring/watcher/#{method}" @watch_method = Watcher.const_get(method.to_s.gsub(/(^.|_.)/) { $1[-1].upcase }) end end
Source
# File lib/spring/watcher.rb, line 23 def self.watcher @watcher ||= watch_method.new(Spring.application_root_path, watch_interval) end
Private Class Methods
Source
# File lib/spring/configuration.rb, line 62 def find_project_root(current_dir) if current_dir.join(gemfile).exist? current_dir elsif current_dir.root? raise UnknownProject.new(Dir.pwd) else find_project_root(current_dir.parent) end end