English 中文(简体)
Porting shell scripts to ruby erb templates, suggestions and advice?
原标题:

I am using Puppet for automating configuration management across hosts.

It can use erb templates to set up configuration files of various services like apache, postfix etc. across different hosts

Till now we were using shell scripts full of sed, awk, grep filters and such, and now I need to port that code to ruby erb templates.

Let s get to the coding part:

<%# domain gets its value from Facter, lets assume it to be abc.def.com
x,y,z=<%= domain.split(".").join(",")%>

<%# x,y and z get the values abc,def,com respectively, right ?

So, now I need to know about a bunch of things. First, how can I refer to x, y and z in the rest of the template ?

 <%# these don t work:
    major = <%= x %>
    minor= <%= y %>
    major = #{x}
    minor=$x

Secondly, how do I append a string like "dc=" before each of the split values returned ?

<%# I need something like this (yup, guessed it right, I am trying to generate slapd.conf      
dc=abc,dc=def,dc=com

Alright, so I am not looking for exact answers here, but if someone could tell me at least where to begin learning about these things, that would be great. Thing is, I need to get this done soon, so that work with Puppet isn t stalled at office. Having said that though, of course, I am ready to give time to learning this, just need to know the exact resources (books/tutorials etc) to start with. Cheers.

最佳回答

Just remember that the <% gets your straight into Ruby. So the code would not be major = <%=x%> within a <% but just major = x.

As for the dc code, this wouldn t be the tightest code, but I don t play code golf:

  "a.b.c".split( . ).collect {|thing| "dc=#{thing}" }.join( , )

irb is your friend. Also I recommend reading at least these -- http://ruby-doc.org/core/classes/Array.html, http://ruby-doc.org/core/classes/Hash.html -- which are a lot more fun than reading the API docs in any other language I ve seen.

问题回答

The answer above seemed too complex, I would have simply done this in the erb template:

dc=<%= domain.split( . ).join( ,dc= ) %>




相关问题
Ruby parser in Java

The project I m doing is written in Java and parsers source code files. (Java src up to now). Now I d like to enable parsing Ruby code as well. Therefore I am looking for a parser in Java that parses ...

rails collection_select vs. select

collection_select and select Rails helpers: Which one should I use? I can t see a difference in both ways. Both helpers take a collection and generates options tags inside a select tag. Is there a ...

RubyCAS-Client question: Rails

I ve installed RubyCAS-Client version 2.1.0 as a plugin within a rails app. It s working, but I d like to remove the ?ticket= in the url. Is this possible?

Ordering a hash to xml: Rails

I m building an xml document from a hash. The xml attributes need to be in order. How can this be accomplished? hash.to_xml

multiple ruby extension modules under one directory

Can sources for discrete ruby extension modules live in the same directory, controlled by the same extconf.rb script? Background: I ve a project with two extension modules, foo.so and bar.so which ...

Text Editor for Ruby-on-Rails

guys which text editor is good for Rubyonrails? i m using Windows and i was using E-Texteditor but its not free n its expired now can anyone plese tell me any free texteditor? n which one is best an ...

热门标签