如何解析和转储Ruby配置文件



在这篇博文中,他给出了一个Ruby配置文件的例子。

config do
 allow ['server.com', `hostname`.strip]
 vhost 'api.server.com' do
   path ‘/usr/local/api’
 end
 vhost 'www.server.com' do
   path '/usr/local/web'
 end
 %w{wiki blog support}.each do |host|
   vhost "#{host}.server.com" do
     path "/usr/local/#{host}"
   end
 end
end

我认为在配置文件加载后的散列,但也许这不是这种类型的配置的目的…

如果我执行它,我得到

$ ruby config.rb 
config.rb:2:in `<main>': undefined method `config' for main:Object (NoMethodError)

需要什么Ruby代码来解析和转储这个配置文件的内容?

这个配置示例不是直接可加载的,如果我对博客文章作者的理解正确的话,它不是这样的,所以没有简单的方法来加载/解析这个示例。

关键部分是在他的博客文章中,他说"构建简单的dsl来设计语义上健壮的配置文件,而不让底层ruby的引人注目"(我的重点)。我认为"底层ruby"是指支持DSL元素的代码,如"config"one_answers"vhost"。

你最初的问题是,然而,什么代码需要加载配置-下面是一个例子的东西将工作,完全实现取决于你,虽然我很确定有更干净,"更好"的方式做同样的。

    class AppConfig
        attr_accessor :hosts
        def allow(hosts)
            @hosts = hosts
        end
        def vhost(hostname)
        end
        def process_config(&block)
            instance_eval(&block)
        end
    end
    def config(&block)
        config = AppConfig.new
        config.process_config &block
        puts "Hosts are: #{config.hosts}"
    end

    load 'config.rb'

相关内容

  • 没有找到相关文章

最新更新