Невозможно создать EXE-файл из сценария Ruby

Я не могу создать файл EXE из сценария Ruby.

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

Он создает исполняемый файл, но я не могу его использовать:

server.rb:1: в `require': нет такого файла для загрузки - сокет (LoadError) из server.rb:1

1 ответ

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

Добавьте вышеперечисленное в ваш скрипт, это должно позволить его сгенерировать. Ocra иногда не может видеть рубиновые самоцветы и другие файлы, если вы не включили 'rubygems'

Другие вопросы по тегам