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

时间:2015-07-23 11:44:41

标签: ruby parsing configuration config

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

<?php
session_start(); //Not required if your form action is on same page, else required  //Rest code 

$_SESSION['subTitleRadio'] = $_GET['subTitleRadio'] // OR $_POST['subTitleRadio']; // Rest code 
?>

在配置文件加载后我想到了一个哈希,但也许这不是这种类型的配置的意图......

更新

如果我执行它,我会

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代码?

1 个答案:

答案 0 :(得分:2)

该配置示例不能直接加载,如果我理解博客文章的作者是正确的,那么它并不意味着要么加载/解析该示例也不容易。

关键部分在博客文章中,他指出&#34;构建简单的DSL来设计语义上健壮的配置文件,而底层的ruby显眼&#34; (我的重点)。潜在的红宝石&#39;我的意思是代码,它可以启用您所看到的DSL元素,例如&#39; config&#39;和&#39; vhost&#39;。

然而,您的原始问题是加载该配置需要什么代码 - 下面是一些可行的示例,完整的实现取决于您并且我非常确定有更清洁,&#34 ;更好&#34;做同样的方法。

    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'