Ruby PUMA 错误:"无法加载应用程序:名称错误:未初始化的常量服务::解析"



Using Windows 10E Ruby 2.3.3P222 (2016-11-21 修订版 56859) [i386-mingw32] 彪马 v 2.13.4

我是一个巨大的美洲狮菜鸟,所以请原谅我。我知道代码(python,php,只是不是rails,ruby)

所以,我试图恢复我的朋友倾倒给我的一个旧项目。我已经为此工作了 12+ 小时,我已经走了很长一段路,但我无法克服这个错误......我担心这个决议会超出我的范围,但我会试一试:

当我尝试启动应用程序时,出现此错误:

C:\inetpub\wwwroot\Plex-Board>sh runserver.sh* SIGUSR2未实现,基于信号的重启不可用! *SIGUSR1未实现,基于信号的重启不可用! SIGHUP 未实施,基于信号的日志重新打开不可用! 彪马以单模式开始...

版本2.13.4(红宝石2.3.3-p222),代号:仲夏密码之梦 最小线程数: 0, 最大线程数: 16 环境:生产 !无法加载应用程序: 名称错误: 未初始化的常量 服务::解析 C:/inetpub/wwwroot/Plex-Board/app/models/service.rb:14:in class:Service': uninitialized constant Service::Resolv (NameError) from C:/inetpub/wwwroot/Plex-Board/app/models/service.rb:1:in' 来自 C:/Ruby23/lib/ruby/gems/2.3.0/gems/railties-4.2.5/lib/rails/engine.rb:472:in 块(2 个级别)在 eager_load!' 来自 C:/Ruby23/lib/ruby/gems/2.3.0/gems/railties-4.2.5/lib/rails/engine.rb:471:ineach' 来自 C:/Ruby23/lib/ruby/gems/2.3.0/gems/railties-4.2.5/lib/rails/engine.rb:471:in block in eager_load!' from C:/Ruby23/lib/ruby/gems/2.3.0/gems/railties-4.2.5/lib/rails/engine.rb:469:ineach' 来自 C:/Ruby23/lib/ruby/gems/2.3.0/gems/railties-4.2.5/lib/rails/engine.rb:469:in eager_load!' 来自 C:ineager_load!' 来自 C:/Ruby23/lib/ruby/gems/2.3.0/gems/railties-4.2.5/lib/rails/application/finisher.rb:56:in each ' from C:/Ruby23/lib/ruby/gems/2.3.0/gems/railties-4.2.5/lib/rails/application/finisher.rb:56:inblock in module:Finisher' 来自 C:/Ruby23/lib/ruby/gems/2.3.0/gems/railties-4.2.5/lib/rails/initializable.rb:30:in instance_exec' 来自 C:/Ruby23/lib/ruby/gems/2.3.0/gems/railties-4.2.5/lib/rails/initializable.rb:30:inrun' 来自 C:/Ruby23/lib/ruby/gems/2.3.0/gems/railties-4.2.5/lib/rails/initializable.rb:55:in block in run_initializers' from C:/Ruby23/lib/ruby/2.3.0/tsort.rb:228:inblock in tsort_each' 从 C:/Ruby23/lib/ruby/2.3.0/tsort.rb:350:in 块(2 个级别)在 each_strongly_connected_component' 从 C:/Ruby23/lib/ruby/2.3.0/tsort.rb:431:ineach_strongly_connected_component_from' from C:/Ruby23/lib/ruby/2.3.0/tsort.rb:349:in block in each_strongly_connected_component' from C:/Ruby23/lib/ruby/2.3.0/tsort.rb:347:ineach' from C:/Ruby23/lib/ruby/2.3.0/tsort.rb:347:in call' from C:/Ruby23/lib/ruby/2.3.0/tsort.rb:347:ineach_strongly_connected_component' from C:/Ruby23/lib/ruby/2.3.0/tsort.rb:226:in tsort_each' from C:/Ruby23/lib/ruby/2.3.0/tsort.rb:205:intsort_each' 来自 C:/Ruby23/lib/ruby/gems/2.3.0/gems/railties-4.2.5/lib/rails/initializable.rb:54:in run_initializers' from C:/Ruby23/lib/ruby/gems/2.3.0/gems/railties-4.2.5/lib/rails/application.rb:352:ininitialize!' from C:/inetpub/wwwroot/Plex-Board/config/environment.rb:5:in ' from C:/Ruby23/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:inrequire' from C:/Ruby23/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in require' from config.ru:3:inblock in ' 从 C:/Ruby23/lib/ruby/gems/2.3.0/gems/puma-2.13.4/lib/puma/rack/builder.rb:184:in instance_eval' 从 C:/Ruby23/lib/ruby/gems/2.3.0/gems/puma-2.13.4/lib/puma/rack/builder.rb:184:ininitialize' From config.ru:in new' from config.ru:in' 来自 C:/Ruby23/lib/ruby/gems/2.3.0/gems/puma-2.13.4/lib/puma/rack/builder.rb:170:in eval' 来自 C:/Ruby23/lib/ruby/gems/2.3.0/gems/puma-2.13.4/lib/puma/rack/builder.rb:170:innew_from_string' 来自 C:/Ruby23/lib/ruby/gems/2.3.0/gems/puma-2.13.4/lib/puma/rack/builder.rb:161:in parse_file' 来自 C:/Ruby23/lib/ruby/gems/2.3.0/gems/puma-2.13.4/lib/puma/configuration.rb:129:inload_rackup' 来自 C:/Ruby23/lib/ruby/gems/2.3.0/gems/puma-2.13.4/lib/puma/configuration.rb:96:in app' 来自 C:/Ruby23/lib/ruby/gems/2.3.0/gems/puma-2.13.4/lib/puma/runner.rb:113:inload_and_bind' 来自 C:/Ruby23/lib/ruby/gems/2.3.0/gems/puma-2.13.4/lib/puma/single.rb:79:in run' from C:/Ruby23/lib/ruby/gems/2.3.0/gems/puma-2.13.4/lib/puma/cli.rb:215:inrun' 从 C:/Ruby23/lib/ruby/gems/2.3.0/gems/puma-2.13.4/bin/puma:10:in ' 从 C:/Ruby23/bin/puma:22:inload' 从 C:/Ruby23/bin/puma:22:in ''

有问题的文件(C:/inetpub/wwwroot/Plex-Board/app/models/service.rb)中有这样一行:


类 服务

attr_accessor :timeout
strip_attributes only: [:ip, :url, :dns_name], collapse_spaces: true
validates_associated :service_flavor
validates :name, presence: true, uniqueness: true, allow_blank: false
validates :url, presence: true, uniqueness: true, allow_blank: false
validates_inclusion_of :port, in: 1..65535
validates :ip, length: { minimum: 7, maximum: 45 },
format: { with: Resolv::IPv4::Regex },
uniqueness: { scope: :port }, allow_blank: true
validates :dns_name, length: { minimum: 2, maximum: 127 },
uniqueness: { scope: :port }, allow_blank: true
validates :ip, presence: true, if: (:ip_and_dns_name_dont_exist)
validates :dns_name, presence: true, if: (:ip_and_dns_name_dont_exist)
def init
@timeout ||= 5
self.online_status ||= false
end
def ip_and_dns_name_dont_exist
if (ip.blank? || ip.to_s.empty?) && (dns_name.blank? || dns_name.to_s.empty?)
self.errors.add(:base, 'IP Address or DNS Name must exist')
true
else
false
end
end

德平 ping_destination = connect_method 开始 Timeout.timeout(@timeout) dos = TCPSocket.new(ping_destination, self.port) S.关闭 self.update(online_status:true,last_seen:Time.now) 返回真值 结束 救援错误::ECONNDENY self.update(online_status:true,last_seen:Time.now) 返回真值 rescue Timeout::Error, Errno::ENETUNREACH, Errno::EHOSTUNREACH, SocketError 自我更新(online_status:假) 返回假 结束 结束

定义connect_method 如果!self.dns_name.空白? self.dns_name 还 自我.IP 结束 结束 结束


我可以猜到这段代码的作用,但我不确定如何修复它,甚至不确定是否可以修复。

那么,有什么想法吗?

在 rails 控制台中尝试,以检查此类是否已加载

Resolv::IPv4::Regex.

如果没有,那么您应该需要添加

gem 'rubysl-resolv'

在您的 Gemfile 中,然后捆绑安装

最新更新