Rails 4.2 Ruby 2.2.1 Spring无法启动

时间:2015-03-11 05:01:24

标签: ruby-on-rails ruby rails-spring

我刚刚使用RailsInstaller Ruby 2.1

重新安装了rails

在我完成捆绑安装后,一切都成功了,我尝试启动spring并遇到以下错误:

    C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/spring-1.3.3/lib/spring/sid.rb:33:in ``': No such file or directory
 - ps -p 1108 -o sess= (Errno::ENOENT)
        from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/spring-1.3.3/lib/spring/sid.rb:33:in `sid'
        from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/spring-1.3.3/lib/spring/sid.rb:39:in `pgid'
        from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/spring-1.3.3/lib/spring/server.rb:78:in `set_pgid'
        from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/spring-1.3.3/lib/spring/server.rb:34:in `boot'
        from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/spring-1.3.3/lib/spring/server.rb:14:in `boot'
        from -e:1:in `<main>'

这是我的sid.rb文件的样子

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

我认为真正的错误是它无法在这里得到sid:

 if Process.respond_to?(:getsid)
      # Ruby 2
      Process.getsid

但我不知道该怎么做。我使用的是spring 1.3.3,这是最新版本。

谢谢,

1 个答案:

答案 0 :(得分:0)

啊,似乎Windows上不支持spring。只需重新阅读docs

即可
Spring makes extensive use of Process.fork, so won't be able to provide a speed up on platforms which don't support forking (Windows, JRuby).