Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 什么是Camping::Server.start在/bin/Camping中调用?_Ruby_Camping - Fatal编程技术网

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
上的方法。我一直在寻找错误的方法