1

我无法从 Ruby 脚本创建 EXE 文件。

require 'socket'

class Server
  def initialize(ip, port)
    @server = TCPServer.open(ip, port)
    @clients = Array.new
    run
  end

  def run
    loop {
      Thread.start(@server.accept) do |client|
        @clients << client
        client.puts 'Connection established'
        listen_user_messages(client)
      end
    }.join
  end

  def listen_user_messages(client)
    loop {
      msg = client.gets.chomp
      @clients.each do |other_client|
        if other_client != client
          other_client.puts "#{msg}"
        end
      end
    }
  end
end

Server.new('localhost', 19937)

我正在尝试运行以下命令:

ocra server.rb

但它冻结在消息上

=== 加载脚本以检查依赖项

我也尝试过使用 exerb:

ruby exerb server.rb

它构建了一个 exe 文件,但我无法使用它:

server.rb:1:in `require': No such file to load -- socket (LoadError) from server.rb:1

4

1 回答 1

3
require 'socket'
require 'rubygems'
exit if Object.const_defined?(:Ocra) #allow ocra to create an exe without executing the entire script

将以上内容添加到您的脚本中,这应该允许它生成。如果您不包含“rubygems”,Ocra 有时无法看到 ruby​​ gem 和其他文件

于 2014-09-03T21:19:14.980 回答