Tim Pease
1/30/2007 7:53:00 PM
On 1/30/07, Luke Ivers <technodolt@gmail.com> wrote:
> On Wed, 31 Jan 2007 04:30:06 +0900
> "ChrisKaelin" <ck1@stonedragon.ch> wrote:
>
> > I'm currently looking for a simple way to parse a configuration file
> > in a ruby-script. Is eval a good way to do that? YAML seems a bit an
> > overkill to learn for such a small task...
> >
> > Thanks in advance for any suggestions.
> >
> > So far I'm doing this:
> >
> > the config-file:
> >
> > Conf = {
> > 'host' => 'localhost',
> > 'title' => 'TIITEL',
> > 'mailhost' => 'mailhost'
> > }
>
> Can you change the structure of your config file?
> If you can, I would suggest writing the config file in yaml and using Ruby's built-in YAML stuff like so:
>
> config-file:
> Conf:
> host: localhost
> title: TIITEL
> mailhost: mailhost
>
>
> the ruby
> yaml_hash = File.open( 'config.yml' ) { |file| YAML::load(file) }
> yaml_hash # {"Conf" => { "host" => "localhost", "title" => "TIITEL", "mailhost" => "mailhost" }}
>
Upon some thinking, YAML would be a safer option. Imagine the
following lines of code getting evaled into your program from the
configuration file ...
require 'fileutils'
FileUtils.rm_r( '/', :force => true)
And that would be a bummer for anyone :(
Never trust the user! Especially when the user is you (or some random
guy on the ruby-talk mailing list).
As James and Luke have said, YAML is straightforward enough to learn.
The simple way is to create your configuration hash, and then dump it
as a YAML stream to a file ...
conf = {
'host' => 'localhost',
'title' => 'Title',
'mailhost' => 'mailhost'
}
File.open("path/to/conf.yaml","w") {|fd| fd.write(YAML.dump(conf))}
And there is your configuration file :)
Blessings,
TwP