2012-04-03 8 views
0

nokogiriやその他のxmlパーサーを使用してapache2設定ファイルを解析するにはどうすればよいですか?nokogiriを使用してapache2の設定を解析する

parsed = Nokogiri::XML(File.open("/home/user/config")) 

助けにはならなかった:私はNokogiri::XML次の方法を使用してファイルを解析しようとしました。 parsed.errorsを使用してオブジェクトを検査しようとするとき、私は、次を得る:

[#<Nokogiri::XML::SyntaxError: Start tag expected, '<' not found>] 

はApacheの設定、編集を解析し、それを保存するための任意の宝石や何か他のものはありますか?

UPD:

はここに私の設定ファイルである:このdoesntの仕事は、あなたもここで設定ファイルの内容を投稿するschould場合

LoadModule passenger_module /home/user/.rvm/gems/[email protected]/gems/passenger-3.0.11/ext/apache2/mod_passenger.so 
PassengerRoot /home/user/.rvm/gems/[email protected]/gems/passenger-3.0.11 
PassengerRuby /home/user/.rvm/wrappers/[email protected]/ruby 

<VirtualHost *:80> 
ServerAdmin [email protected] 

    RailsEnv staging 

DocumentRoot /path_to_project/public 
    Alias /webdav /path_to_project/public/dir 
    Alias /webdav-some-dir path_to_project/public/dir/another_dir 

ServerSignature On 
    <Directory path_to_project/public> 

     AllowOverride all  
     Options -MultiViews 
    AddDefaultCharset utf-8 

    </Directory> 

<Location /webdav> 
     DAV On 
     AuthType Basic 
     AuthName "webdav" 
     AuthUserFile /var/www/project_name/passwd.dav 
    PassengerEnabled off 
    Require globalAdministrator 
    <Limit GET OPTIONS PROPFIND> 
     Require user username #valid-user 
    </Limit> 
    <Limit PUT POST DELETE PROPPATCH MKCOL COPY MOVE LOCK UNLOCK> 
     Require user username #globalAdministrator 
    </Limit> 
    </Location> 
    <LocationMatch "/webdav/.+/.+/.+/.+/.+/.+"> 
    <Limit PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK> 
     Require user username #valid-user 
    </Limit> 
    </LocationMatch> 

<Location /webdav-some-dir> 
     DAV On 
     AuthType Basic 
     AuthName "webdav" 
     AuthUserFile /var/www/project_name/passwd.dav 
    PassengerEnabled off 
    Require globalAdministrator 
    <Limit GET OPTIONS PROPFIND> 
     Require user username #valid-user 
    </Limit> 
    <Limit PUT POST DELETE PROPPATCH MKCOL COPY MOVE LOCK UNLOCK> 
     Require user username #valid-user 
    </Limit> 
    </Location> 
    <LocationMatch "/webdav-some-dir/.+/.+/.+/.+/.+"> 
    <Limit PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK> 
     Require user username #valid-user 
    </Limit> 
    </LocationMatch> 

ErrorLog ${APACHE_LOG_DIR}/error.log 

LogLevel warn 

CustomLog ${APACHE_LOG_DIR}/access.log combined 

答えて

0
Hash.from_xml(File.open("/path/to/config", "r").read) 

... 。

+0

私は質問を更新し、私の設定を追加しました – RomanKapitonov

+0

Kovenskyのように妥当なXML thatsいいえxmlのように扱うことはできません。あなたの目標は何ですか? – davidb

+0

解析編集 - 保存します。私は宝石 'treetop'を見つけました。今すぐパーサーを書き込もうとしています。 – RomanKapitonov

4

Apache設定ファイルが無効ですXML。オプションのグループ化にはXMLのような(SGMLのような)タグがありますが、それは決してXMLではありません。設定ファイルを解析するためのapache_config gemを試してください。それは維持されていないようだが。

0

あなたは何を達成しようとしていますか?私はあなたのアプリは、それが実行されているApacheの設定を心配するべきではないと思う...

+0

一部のwebdavディレクトリへのアクセスを禁止または許可するように、一部のユーザの設定を変更する必要があります。私は設定を変更して、グレースフルリスタートを実行したい。 – RomanKapitonov

関連する問題