Ruby 什么是Camping::Server.start在/bin/Camping中调用?
我现在正在研究Ruby 什么是Camping::Server.start在/bin/Camping中调用?,ruby,camping,Ruby,Camping,我现在正在研究Campingweb框架是如何工作的,我不明白Camping::Server.start在/bin/Camping中的第10行 我希望它调用/lib/camping/server.rb中的start方法,因此我在该方法的开头放了一个简单的语句,希望在运行/bin/camping时调用该语句。然而,我从未见过我的puts语句被调用,所以我只能假设不是start方法被调用 我觉得我错过了一些明显的东西。以下是指向github页面和相关代码部分的链接: Github: 从/bin/cam
Camping
web框架是如何工作的,我不明白Camping::Server.start
在/bin/Camping
中的第10行
我希望它调用/lib/camping/server.rb
中的start
方法,因此我在该方法的开头放了一个简单的语句,希望在运行/bin/camping
时调用该语句。然而,我从未见过我的puts语句被调用,所以我只能假设不是start
方法被调用
我觉得我错过了一些明显的东西。以下是指向github页面和相关代码部分的链接:
Github:
从/bin/camping
:
#!/usr/bin/env ruby
$:.unshift File.dirname(__FILE__) + "/../lib"
require 'camping'
require 'camping/server'
begin
Camping::Server.start
rescue OptionParser::ParseError => ex
puts "did it error"
STDERR.puts "!! #{ex.message}"
puts "** use `#{File.basename($0)} --help` for more details..."
exit 1
end
从/lib/server.rb
:
def start
if options[:server] == "console"
puts "** Starting console"
@reloader.reload!
r = @reloader
eval("self", TOPLEVEL_BINDING).meta_def(:reload!) { r.reload!; nil }
ARGV.clear
IRB.start
exit
else
name = server.name[/\w+$/]
puts "** Starting #{name} on #{options[:Host]}:#{options[:Port]}"
super
end
end
我的将“hello”
放在Camping::Server上。没有调用start
,因为我不了解ruby中如何定义静态方法
start
是静态调用的,现在我意识到我在代码段中看到的start
方法不是静态方法,这意味着调用了另一个start
方法。我查看了Camping::Server
,发现它继承了Rack::Server
,它有以下方法:
def self.start(options = nil)
new(options).start
end
这是被调用的方法,而不是/lib/camping/server.rb
上的方法。我一直在寻找错误的方法