[#376274] Best Linux Distro for Ruby? — Nick Hird <boondox@...>

What are some of the better linux distro's for ruby development? I know

15 messages 2011/01/02

[#376329] Is singleton class of an object already created? — Samnang Chhun <samnang.chhun@...>

I would like to know is there any ways to check is singleton class of an

12 messages 2011/01/04

[#376333] Threading in ruby — "Vishnu I." <pathsny@...>

Hi

13 messages 2011/01/04
[#376335] Re: Threading in ruby — Robert Klemme <shortcutter@...> 2011/01/04

On Tue, Jan 4, 2011 at 8:41 AM, Vishnu I. <pathsny@gmail.com> wrote:

[#376339] ripl - an irb alternative - 0.3.0 released — ghorner <gabriel.horner@...>

ripl, a light modular alternative to irb, has reached 0.3.0. ripl

32 messages 2011/01/04

[#376382] Class Initialization? — Kedar Mhaswade <kedar.mhaswade@...>

I have a class and two class methods: self.encode and self.decode. The

14 messages 2011/01/05
[#376385] Re: Class Initialization? — Andrew Wagner <wagner.andrew@...> 2011/01/05

On Wed, Jan 5, 2011 at 9:33 AM, Kedar Mhaswade <kedar.mhaswade@gmail.com>wrote:

[#376388] Petition to add Metasploit Project as Ruby success story — Christian Kirsch <Christian_Kirsch@...7.com>

I noticed the Ruby success stories on the Ruby website. I would like to mak=

10 messages 2011/01/05

[#376453] Block variable - How is it read in English? — SW Engineer <abder.rahman.ali@...>

Following the "Ruby on Rails Tutorial", and under section "6.1.1

16 messages 2011/01/06

[#376574] Best way for Array#find+transform ? — "Jonas Pfenniger (zimbatm)" <jonas@...>

There is a pattern that I'm using quite regularly, but I'm not

17 messages 2011/01/08
[#376575] Re: Best way for Array#find+transform ? — Anurag Priyam <anurag08priyam@...> 2011/01/08

> I know I can come up with a new method on Array that would shorten this t=

[#376576] Re: Best way for Array#find+transform ? — Anurag Priyam <anurag08priyam@...> 2011/01/08

> paths.map{|path| File.join(path, filename)}.select{|name| File.exist?(path)}

[#376577] Re: Best way for Array#find+transform ? — "Jonas Pfenniger (zimbatm)" <jonas@...> 2011/01/09

2011/1/8 Anurag Priyam <anurag08priyam@gmail.com>:

[#376579] Re: Best way for Array#find+transform ? — David J. Hamilton <groups@...> 2011/01/09

Excerpts from Jonas Pfenniger (zimbatm)'s message of Sat Jan 08 16:05:05 -0800 2011:

[#376586] Re: Best way for Array#find+transform ? — "Jonas Pfenniger (zimbatm)" <jonas@...> 2011/01/09

2011/1/9 David J. Hamilton <groups@hjdivad.com>:

[#376606] Re: Best way for Array#find+transform ? — David J. Hamilton <groups@...> 2011/01/10

Excerpts from Jonas Pfenniger (zimbatm)'s message of Sun Jan 09 04:08:10 -0800 2011:

[#376680] Parallel Assignments and Elegance/Complexity Ratio. — Kedar Mhaswade <kedar.mhaswade@...>

In SICP, I read that "Programs should be written for people to read, and

15 messages 2011/01/11
[#376697] Re: Parallel Assignments and Elegance/Complexity Ratio. — Josh Cheek <josh.cheek@...> 2011/01/11

On Tue, Jan 11, 2011 at 8:29 AM, Kedar Mhaswade <kedar.mhaswade@gmail.com>wrote:

[#376682] JRuby 1.6.0.RC1 released — Thomas E Enebo <tom.enebo@...>

The JRuby community is pleased to announce the release of JRuby 1.6.0.RC1.

14 messages 2011/01/11

[#376744] Case statements - Just beautification — flebber <flebber.crue@...>

I just want to clarify case statements the name after the word case is

10 messages 2011/01/12

[#376792] Ruby is interpreted and scripting language? — Sai Babu <sateesh.mca09@...>

I am ruby fresher.

16 messages 2011/01/13

[#376855] Retrieving and copying element from array — Simon Harrison <simon@...>

If I have an array like this:

11 messages 2011/01/13

[#376898] What are your ruby rough cuts ? — "Jonas Pfenniger (zimbatm)" <jonas@...>

Hi rubyists,

32 messages 2011/01/14
[#376930] Re: [poll] What are your ruby rough cuts ? — David Masover <ninja@...> 2011/01/15

On Friday, January 14, 2011 07:34:04 am Jonas Pfenniger (zimbatm) wrote:

[#376937] Re: What are your ruby rough cuts ? — Joseph Lenton <jl235@...> 2011/01/15

David Masover wrote in post #975080:

[#376959] Why Quby? (was Re: What are your ruby rough cuts ?) — David Masover <ninja@...> 2011/01/15

On Saturday, January 15, 2011 04:42:58 am Joseph Lenton wrote:

[#377020] Obscure syntax error — Rolf Timmermans <molfie@...>

Hi all,

16 messages 2011/01/17

[#377052] Calling by Reference - Two Questions — Mike Stephens <rubfor@...>

I know I'm not the first person to get stumped by how to get Ruby to

15 messages 2011/01/18

[#377072] The most recommended way of naming methods in Ruby — Edmond Kachale <edmond.kachale@...>

Rubists,

14 messages 2011/01/18
[#377082] Re: The most recommended way of naming methods in Ruby — Phillip Gawlowski <cmdjackryan@...> 2011/01/18

On Tue, Jan 18, 2011 at 9:16 AM, Edmond Kachale

[#377121] Improving performance of hash math — dblock <dblockdotorg@...>

I am trying to improve performance of Euclidian distance between two

13 messages 2011/01/19

[#377226] Totally lost in learning Ruby — Hilary Bailey <my77elephants@...>

This is my second attempt to understand Ruby. I completely read 1)

61 messages 2011/01/21
[#378239] Re: Totally lost in learning Ruby — Hilary Bailey <my77elephants@...> 2011/02/08

Hi everybody,

[#378246] Re: Totally lost in learning Ruby — Robert Klemme <shortcutter@...> 2011/02/08

On Tue, Feb 8, 2011 at 3:16 AM, Hilary Bailey <my77elephants@gmail.com> wro=

[#377236] using gems installed via 'sudo gem install' — "Piotr S." <thisredoned@...>

I've installed ruby-opengl through sudo gem install because there were

15 messages 2011/01/21

[#377362] pg gem 0.10.1 wth Ruby 1.9.2 does not work with method @pg_conn.exec_prepared(stmt_name, parameters) — Zeno Davatz <zdavatz@...>

Hi

9 messages 2011/01/24

[#377388] The finer points of postfix conditionals. — Jon Leighton <j@...>

Hi,

13 messages 2011/01/24

[#377411] Obtain data from .csv — Kamarulnizam Rahim <niezam54@...>

Sample of .csv file:

19 messages 2011/01/25

[#377609] why is overloading invalid in ruby. — Ted Flethuseo <flethuseo@...>

I don't understand why when I try to overload I get an error. Can I

36 messages 2011/01/27

[#377645] If you had the choice between Ruby & Groovy — Noah Cutler <sit1way@...>

Hey All.

15 messages 2011/01/28

[#377650] IDE? — <johan.tempelman@...>

Hi,

13 messages 2011/01/28

[#377703] Zlib::GzipReader and multiple compressed blobs in a single stream — Jos Backus <jos@...>

Hi,

11 messages 2011/01/28

[#377761] New to programming AND new to Ruby — "Cassandra K." <cassandra.k@...>

Hello. I am trying to teach myself Ruby. I have no background in

13 messages 2011/01/31

[#377785] 2011: Which Ruby books have you read? And which would you recommend? — "Aston J." <azzzz@...>

I know there are a lot of threads about books, but some of them are as

16 messages 2011/01/31

[#377800] How to know the exit status within at_exit() block? — Iñaki Baz Castillo <ibc@...>

Hi, my program invokes "exit true" or "exit false" and I want to catch

17 messages 2011/01/31

Re: edit xml file.

From: Josh Cheek <josh.cheek@...>
Date: 2011-01-20 03:17:18 UTC
List: ruby-talk #377165
On Wed, Jan 19, 2011 at 6:54 PM, Dan Thomas <danthom1000@gmail.com> wrote:

> I actually got it all working, except that I am modifying the xml
> explicitly (in a post block), using REXML like this:
>
>
Good job! I know that can be frustrating to try to figure out :) Though, you
should know that Nokogiri is widely considered the best Ruby XML library
there is, it is fastest, most reliable, most consistent, and has a pretty
nice interface. Even Martin Fowler uses it for his own site. So, if you wind
up refactoring that code, you might consider using Nokogiri over REXML.


> newSound = params[:newsound]
>
> # open the xml
> File.open("public/script2.xml", "r") do |aFile|
>  config = REXML::Document.new(aFile)
>  rootVar = config.root.elements['object']
>
>
> #drill down to the sound node, assign the new value to it
>
> rootVar.elements['property[2]'].elements['array'].elements['object'].elements['property[2]'].elements['array'].elements['object'].elements['property[2]'].attributes["value"]
> = newSound
>

This looks fragile to me. I don't understand xpaths, I always use CSS
selectors, but it looks like you are telling it what to set, based on its
position within the document. You'll want to be careful to check if an
element is added or removed, or if the order is changed, will that break
this query? It seems like a Law of Demeter violation. You might put an id on
the sound node so you don't have to drill down to it, but can just say to
get the one with the given id, and edit it that way. Then it would probably
be more robust, easier to read, and faster.


>
> # reopen the file for writing, which will erase it, and copy all the
> data into it
>   formatter = REXML::Formatters::Default.new
>    File.open('public/script2.xml', 'w') do |result|
>
>      formatter.write(config, result)
>    end
> end
> # re-read in the xml file, and then load index again
> $script_post = File.read("public/script2.xml")
> @xml = Nokogiri::XML($script_post)
> erb:index
>
>
I guess I typically store my data in a database, but if the XML file is
working, then that seems like a fine solution. Sounds like its in the spirit
of YAGNI, so I suppose the XPers would be proud :)


>
> The part I need to fix for my boss is: the part where I'm drilling down
> to assign the new value should be somehow connected to index.erb, which
> is doing all kinds of looping and variable assignments related to the
> xml. I don't know what it is called or where to start.  Hell I don't
> even know how to explain it.  Sorry for the long post, any help, search
> words to look-up, or examples greatly appreciated.
>
>
Hmm, sorry, its not very clear to me what you want to do differently. I
don't think it is a good idea to modify your template (the erb file). I got
the impression you were storing your data in an XML file on your file
system, which seems fine, and seems like your solution is congruent with.

I'm a little confused by the use of global variables (the ones that begin
with the dollar signs), I was kind of thinking maybe the guy before you read
in the xml to there, then stored that in memory. And then you could just
edit the Nokogiri document, and save that to a file without having to do
lots of writing and reading and redoing the same work. But since its inside
the root get request, I'm less sure. I suppose I'd need to see more code,
that seems nonstandard.

Regarding the looping and variable assignments, you are right, that probably
shouldn't be in the template, it could probably be refactored to use helpers
(methods that handle responsibilities, you call them from your template so
the template doesn't have to do the work right there inside it) and partials
(other erb templates that you can render into the one you are working on),
If you decide you want to do that, the Sinatra code below should talk about
both of those.


I think the best I can do is give you links to where you can find more info
on some of the tools you are using.

* It looks like you are using the Sinatra web framework
http://www.sinatrarb.com/
  Very simple and elegant, you could probably learn enough about it to
understand everything in your script with just a few hours
  There is a Sinatra book, which is comprehensive
http://sinatra-book.gittr.com/
  I personally got a lot out of the Sinatra Peepcode
http://peepcode.com/products/sinatra though it goes beyond what you are
using it for

* For XML, you have Nokogiri http://nokogiri.org/
  Check out the tutorials section to see how to use it to modify your xml

* For templating, you are using ERB
http://ruby-doc.org/stdlib/libdoc/erb/rdoc/classes/ERB.html
  It's really straightforward, anything with <%= ... %> will treat the
inside as Ruby, convert it to a string, and stick it in the document
  Anything with <% ... %> will treat the inside as Ruby, but won't have
output (ie a control structure like a loop)
  Here are a couple of simple examples
https://github.com/JoshCheek/JoshsRubyKickstart/blob/master/cheatsheets/erb-embedded_ruby.rb

* I also see you are using andand http://andand.rubyforge.org/
  It can be summarized as:
  a.andand(b)

  is equivalent to
  a && a.b

  which doesn't seem that impressive, until you realize a could be anything,
including a really long or expensive method call, where you would otherwise
have to store the result in a temporary variable.

  There is also a fascinating, though probably not particularly relevant for
you video by the author of andand, about how it works, and how he perceives
Ruby vs purely functional languages, what he sees as issues, and why he
wrote andand http://www.infoq.com/presentations/braithwaite-rewrite-ruby

In This Thread