Рубин прикручивает меня, кажется. Это или RubyMine. Итак, я создал класс под названием NetworkDaemon
и связанную с ним спецификацию в NetworkDaemonSpecification
. Довольно просто.Не может «потребовать()« определенные пакеты ядра?
Однако проблема заключается в том, что я не могу использовать require 'tcp_server'
от network_daemon.rb
, но могу от network_daemon_specification.rb
.
Если я пробую и ссылку tcp_server
из network_daemon.rb
(который протестирован в network_daemon_specification.rb
, я получаю следующее StackTrace
E:/Ruby200/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:53:in `require': cannot load such file -- tcp_server (LoadError)
from E:/Ruby200/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:53:in `require'
from E:/Ruby/RubyCraft/network/network_daemon.rb:1:in `<top (required)>'
from E:/Ruby200/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:53:in `require'
from E:/Ruby200/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:53:in `require'
from E:/Ruby/RubyCraft/specification/network_daemon_specification.rb:1:in `<top (required)>'
from -e:1:in `load'
from -e:1:in `<main>'
Однако, я могу сослаться tcp_server
в network_daemon_specification
просто отлично, что происходит на D:.?
network_daemon.rb
require 'tcp_server'
module RubyCraft
module Network
# The network daemon controls the listening and responses
class NetworkDaemon
attr_reader :port
# Creates the NetworkDaemon from the given port
# @param [Fixnum] port
def initialize port
@port = port
@sock = TCPServer.new @port
end
# Closes the NetworkDaemon
def close
@sock.close
end
end
end
end
network_daemon_specification.rb
# Unit tests for the Network Daemon that will be used to listen for connections
module RubyCraft
module Specifications
class NetworkDaemonSpecification < Test::Unit::TestCase
def setup
@port = 9999
@daemon = NetworkDaemon.new @port
end
def test_port_should_equal_injected_port
assert_equal @daemon.port, @port
end
def teardown
@daemon.close
end
end
end
end
RubyMine вводит меня в заблуждение. ._. –
Как вы знаете, что вы можете потребовать его из файла спецификации? Используете ли вы этот файл или загружаете его при загрузке приложения? Если нет, то требование в файле спецификации никогда не будет запущено, и вы никогда не увидите ошибку. –
Потому что я загрузил его в файл спецификации и ввел экземпляр TCPServer просто в мой конструктор NetworkDaemon. –