Sha256: f8fc8ff25d714ed50f5f4f7d2cc91e4c02a8710d1fc7e7eda36bcfc251de05ce

Contents?: true

Size: 993 Bytes

Versions: 34

Compression:

Stored size: 993 Bytes

Contents

begin
  # If rubygems is present, keep it out of the way when loading fiddle,
  # otherwise if fiddle is not installed then rubygems will load all
  # gemspecs in its (futile) search for fiddle, which is slow.
  if respond_to?(:gem_original_require, true)
    gem_original_require 'fiddle'
  else
    require 'fiddle'
  end
rescue LoadError
end

module Spring
  module SID
    def self.fiddle_func
      @fiddle_func ||= Fiddle::Function.new(
        DL::Handle::DEFAULT['getsid'],
        [Fiddle::TYPE_INT],
        Fiddle::TYPE_INT
      )
    end

    def self.sid
      @sid ||= begin
        if Process.respond_to?(:getsid)
          # Ruby 2
          Process.getsid
        elsif defined?(Fiddle) and defined?(DL)
          # Ruby 1.9.3 compiled with libffi support
          fiddle_func.call(0)
        else
          # last resort: shell out
          `ps -p #{Process.pid} -o sess=`.to_i
        end
      end
    end

    def self.pgid
      Process.getpgid(sid)
    end
  end
end

Version data entries

34 entries across 34 versions & 4 rubygems

Version Path
spring-3.0.0 lib/spring/sid.rb
nrispring-2.1.3 lib/spring/sid.rb
nrispring-2.1.2 lib/spring/sid.rb
nrispring-2.1.1 lib/spring/sid.rb
spring-2.1.1 lib/spring/sid.rb
chatops-rpc-0.0.2 fixtures/chatops-controller-example/vendor/bundle/ruby/2.5.0/gems/spring-2.1.0/lib/spring/sid.rb
chatops-rpc-0.0.1 fixtures/chatops-controller-example/vendor/bundle/ruby/2.5.0/gems/spring-2.1.0/lib/spring/sid.rb
spring-2.1.0 lib/spring/sid.rb
spring-2.0.2 lib/spring/sid.rb
spring-2.0.1 lib/spring/sid.rb
spring-2.0.0 lib/spring/sid.rb
spring-1.7.2 lib/spring/sid.rb
spring-1.7.1 lib/spring/sid.rb
spring-1.7.0 lib/spring/sid.rb
spring-1.6.4 lib/spring/sid.rb
spring-1.6.3 lib/spring/sid.rb
spring-1.6.2 lib/spring/sid.rb
spring-1.6.1 lib/spring/sid.rb
spring-1.6.0 lib/spring/sid.rb
spring-1.5.0 lib/spring/sid.rb