User: Password:
Subscribe / Log in / New account

Fedora Weekly News 271

From:  Pascal Calarco <>
To:  "" <>, "" <>
Subject:  Fedora Weekly News 271
Date:  Sat, 16 Apr 2011 11:13:19 -0400
Message-ID:  <>
Cc:  "" <>, "" <>, "" <>
Archive-link:  Article

    * 1 Fedora Weekly News Issue 271
          o 1.1 Announcements
                + 1.1.1 Fedora Announcement News
                      # FUDCon EMEA 2011 will be held in Milan, Italy
                      # Results of Fedora 16 Release Name Voting
                            * Results:
                + 1.1.2 Fedora Development News
                      # Fedora 15 Beta Go/No-Go Meeting Wednesday, April 13, 2011 @ 21:00
                      # Fedora 15 Beta is hereby declared GOLD!
                            * Meeting summary
                            * Action Items, by person
                            * People Present (lines said)
                + 1.1.3 Fedora Events
                      # Upcoming Events (March - May 2011)
                      # Past Events
                      # Additional information
          o 1.2 Fedora In the News
                + 1.2.1 7.5 Reasons to Look Forward to Fedora 15 (
                + 1.2.2 Fedora 16 will not be a Beefy Miracle (
                + 1.2.3 Fedora 16 Will Be Verne, Not A Beefy Miracle (
                + 1.2.4 No Beefy Miracle for Fedora (Network World)
                + 1.2.5 GNOME 3 set free (
                + 1.2.6 First Firefox 6 build next week, Firefox 7 by May, and aurora channel
                + 1.2.7 Interview: Charles H. Schulz on LibreOffice and The Document Foundation
                + 1.2.8 New GNOME Cuts the Clutter (PC World)
                + 1.2.9 Yahoo: The Linux Company (ZDNet)
                + 1.2.10 Focusing on what's important, not sensational (
                + 1.2.11 Quick look at Fedora-inspired Fusion Linux 14 - Mini Review
          o 1.3 QualityAssurance
                + 1.3.1 Test Days
                + 1.3.2 Fedora 15 Beta preparation
                + 1.3.3 Systemd and GNOME Shell documentation
                + 1.3.4 Release criteria revisions
                + 1.3.5 Slow login investigation
          o 1.4 Security Advisories
                + 1.4.1 Fedora 15 Security Advisories
                + 1.4.2 Fedora 14 Security Advisories
                + 1.4.3 Fedora 13 Security Advisories
          o 1.5 LATAM Fedora!
                + 1.5.1 Ruby Capítulo 3 : Métodos
                      # Parámetros
                      # Métodos con y sin bloques asociados
                      # Invocando los métodos
                      # Expandiendo arreglos en las llamadas
                      # Argumentos opcionales
                      # Simulando argumentos por nombres: hash

-Fedora Weekly News Issue 271-

Welcome to Fedora Weekly News Issue 271[1] for the week ending April 13, 2011. What follows are
some highlights from this issue.

In Announcements, details on the next FUDCon EMEA, to be held in Milan, Italy, results of voting
for the next Fedora 16 release name, and details on Fedora 15 reaching beta gold status. Fedora In
the News this week reports on a whopping eleven articles in the trade press and blogosphere on
Fedora 16, Gnome 3, LibreOffice and use of Linux at Yahoo. QA team news this week provides details
on the latest Test Day on ABRT and this week's Test Day on virtualization, Fedora 15 beta readiness
and further work on systemd and Gnome shell documentation. In Security Advisories this week, we're
brought current with the latest security-related packages for Fedora 13, 14 and 15. Finally, this
week we bring the third installment on Ruby in Fedora LATAM, for our Spanish-language readers.

An audio version of some issues of FWN - FAWN - are available! You can listen to existing issues[2]
on the Internet Archive. If anyone is interested in helping spread the load of FAWN production,
please contact us!

If you are interested in contributing to Fedora Weekly News, please see our 'join' page[3]. We
welcome reader feedback:

FWN Editorial Team: Pascal Calarco, Adam Williamson

   1. ?

   2. ?

   3. ?


In this section, we cover announcements from the Fedora Project, including general
announcements[1], development announcements[2] and Events[3].

Contributing Writer: Rashadul Islam

   1. ?

   2. ?

   3. ?

---Fedora Announcement News---

The announcement list is always exclusive for the Fedora Community. Please, visit the past
announcements at[1]

   1. ?

----FUDCon EMEA 2011 will be held in Milan, Italy----

Jared K. Smith on Mon Apr 11 21:50:49 UTC 2011 announced[1],

"I am pleased to announce that the FUDCon conference in the EMEA region in 2011 will be in Milan,
Italy. We had four excellent bids for the EMEA FUDCon this year (Milan, Budapest, Dublin, and
Zurich) and all four proposals were well done. The Milan bid has several potential dates, so I will
be working together with the Milan bid team and FAmSCo and our community of European ambassadors to
choose a date that works well for all involved."

   1. ?

----Results of Fedora 16 Release Name Voting----

Jared K. Smith on Tue Apr 12 13:29:14 UTC 2011 announced[1],

"The voting has concluded for the Fedora 16 release name, and the results are in! Thank you to the
Fedora community members who made name suggestions and participated in the voting.

The Fedora 16 release name is: Verne

Voting period: Tuesday 2011-04-05 00:00:00 to Monday 2011-04-11 23:59:59 Number of valid ballots
cast: 421

Using the range voting method, each candidate could attain a maximum of (421*9) = 3789 votes.


Votes :: Name

    * 2204 :: Verne
    * 1662 :: Beefy Miracle
    * 1522 :: Omoto
    * 1241 :: Nepia
    * 1207 :: Bonnet
    * 1157 :: Barona
    * 908 :: Llullaillaco
    * 845 :: Legation
    * 607 :: Mt. Orne"

   1. ?

---Fedora Development News---

The Development Announcement[1] list is intended to be a LOW TRAFFIC announce-only list for Fedora

Acceptable Types of Announcements

    * Policy or process changes that affect developers.
    * Infrastructure changes that affect developers.
    * Tools changes that affect developers.
    * Schedule changes
    * Freeze reminders

Unacceptable Types of Announcements

    * Periodic automated reports (violates the INFREQUENT rule)
    * Discussion
    * Anything else not mentioned above

   1. ?

----Fedora 15 Beta Go/No-Go Meeting Wednesday, April 13, 2011 @ 21:00 UTC----

Robyn Bergeron on Mon Apr 11 20:40:14 UTC 2011 announced[1],

"Join us on #fedora-meeting for this important meeting.

Wednesday, April 13, 2011 @ 21:00 UTC (17:00 EDT/14:00 PDT)

"Before each public release Development, QA, and Release Engineering meet to determine if the
release criteria are met for a particular release. This meeting is called the: Go/No-Go Meeting."

"Verifying that the Release criteria are met is the responsibility of the QA Team."

For more details about this meeting see: [2]

In the meantime keep an eye on the Fedora 15 Beta Blocker list and help us get the testing matrix
completed by testing.

[3] (One approved blocker left, currently in VERIFIED - woohoo!) [4]"

   1. ?
   2. ?

   3. ?

   4. ?

----Fedora 15 Beta is hereby declared GOLD!----

Robyn Bergeron on Wed Apr 13 21:41:00 UTC 2011 announced[1],

"At the Fedora 15 Beta Go/No-Go meeting today, the F15 Beta was declared GOLD and ready for release
on April 19, 2011.

Thanks to everyone, as always, for their hard work and participation in getting this out the door.

Meeting minutes are below. -Robyn

   1. fedora-meeting: Fedora 15 Beta Go/No-Go Meeting

Meeting started by rbergeron at 21:00:30 UTC. The full logs are available at .

-----Meeting summary-----

    * Roll Call! (rbergeron, 21:00:54)
    * Need representatoin from QA, Rel-eng, fesco. (rbergeron, 21:01:54)

    * Why we're here: (rbergeron, 21:05:06)
    * LINK: [2]

(rbergeron, 21:05:17)

    * In a nutshell: we are gathered today to determine if release criteria have been met and if
the release can be considered GOLD.

(rbergeron, 21:05:56)

    * review of release criteria and so forth (rbergeron, 21:06:19)
    * AGREED: - remaining blocker, bz 657618, is in verified, only hitting one person, fix is in
RC2 already, should not block the release.

(rbergeron, 21:11:16)

    * LINK:

[3] (adamw, 21:11:45)

    * LINK:

[4] (adamw, 21:11:50)

    * [5] (adamw, 21:16:45)
    * AGREED: No unresolved blocker bugs and all release criteria being met, Fedora 15 Beta is
hereby declared GOLD. (rbergeron, 21:30:52)

    * Open discussion (rbergeron, 21:31:01)

Meeting ended at 21:33:49 UTC.

-----Action Items, by person-----

    * **UNASSIGNED**
    * (none)

-----People Present (lines said)-----

    * rbergeron (66)
    * adamw (59)
    * jlaska (21)
    * dgilmore (14)
    * nirik (8)
    * nb (6)
    * zodbot (5)
    * jsmith (5)
    * fenrus02 (3)
    * cwickert (3)
    * red_alert (1)

Generated by `MeetBot`_ 0.1.4"

   1. ?
   2. ?
   3. ?
   4. ?
   5. ?

---Fedora Events---

The purpose of event is to build a global Fedora events calendar, and to identify responsible
Ambassadors for each event. The event page is laid out by quarter and by region. Please maintain
the layout, as it is crucial for budget planning. Events can be added to this page whether or not
they have an Ambassador owner. Events without an owner are not eligible for funding, but being
listed allows any Ambassador to take ownership of the event and make it eligible for funding. In
plain words, Fedora events are the exclusive and source of marketing, learning and meeting all the
fellow community people around you. So, please mark your agenda with the following events to
consider attending or volunteering near you!

----Upcoming Events (March - May 2011)----

    * North America (NA)[1]
    * Central & South America (LATAM): [2]
    * Europe, Middle East, and Africa (EMEA)[3]
    * India, Asia, Australia (India/APJ)[4]

   1. ?
   2. ?
   3. ?
   4. ?

----Past Events----

Archive of Past Fedora Events[1]

   1. ?

----Additional information----

    * Reimbursements -- reimbursement guidelines.
    * Budget -- budget for the current quarter (as distributed by FAMSCo).
    * Sponsorship -- how decisions are made to subsidize travel by community members.
    * Organization -- event organization, budget information, and regional responsibility.
    * Event reports -- guidelines and suggestions.
    * LinuxEvents -- a collection of calendars of Linux events.

---Fedora In the News---

In this section, we cover news from the trade press and elsewhere that is re-posted to the Fedora
Marketing list[1].

Contributing Writer: Pascal Calarco

   1. ?

---7.5 Reasons to Look Forward to Fedora 15 (

Rahul Sundaram forwarded[1] a posting on anticipated features in Fedora 15:

"One of the reasons I watch Fedora closely is that it's a precursor for enterprise Linux. Not just
Red Hat Enterprise Linux (RHEL), though that's certainly true. But advancements in Fedora usually
make their way into other major distributions, and Fedora is often the first distro to ship cutting
(sometimes bleeding) edge software. That's not to say that the other community distros never do
this, but Fedora makes a habit of pushing the envelope.

Fedora 15 is no exception ? it has quite a few major new features, as well as a few enhancements
that will likely influence the entire Linux landscape in the near future"

The full article is available[2].

   1. ?
   2. ?

---Fedora 16 will not be a Beefy Miracle (

Rahul Sundaram forwarded[1] a report on the results of the Fedora 16 naming:

"I personally had thought that, Beefy Miracle would win, but that name only ended up with 1,662
votes. Beefy Miracle had been making a name for itself with an active Twitter feed that I have
enjoyed following. There is also a project page supporting the campaign for Beefy Miracle. I've
never seen so much effort and marketing going behind a potential name. It's a real shame that it
didn't win."

The full article is available[2].

   1. ?
   2. ?

---Fedora 16 Will Be Verne, Not A Beefy Miracle (

Rahul Sundaram forwarded[1] another posting about the naming contest results for Fedora 16:

"The Fedora 16 name voting has ended. One of the leading proposals for the Fedora 16 codename was
to call it a Beefy Miracle, but that will not happen. The Fedora 15 successor will be called

There was quite a campaign by Beefy Miracle proponents to the point that there was even a web-site all campaigning for this Fedora name."

The full article is available[2].

   1. ?
   2. ?

---No Beefy Miracle for Fedora (Network World)---

Rahul Sundaram forwarded[1] another despondent writer over the loss of 'Beefy Miracle':

"In a surprise upset, the Fedora Project has chosen "Verne" for Fedora 16's release name, beating
out Beefy Miracle ? despite strong support from former Fedora Project Leaders Paul Frields and Max

Despite Spevack's promise to organize a weiner roast at Southeast LinuxFest 2011 and wear a hotdog
hat, the vote came in with Verne ahead of Beefy Miracle by 542 votes. (Fedora uses range voting,
rather than a simple majority voting system for release names.)"

The full post is available[2].

   1. ?
   2. ?

---GNOME 3 set free (

Rahul Sundaram forwarded[1] an article on Gnome 3 in upcoming distros, including Fedora 15:

"GNOME 3.0 is a fairly radical departure from previous GNOME versions, offering a stripped-down
GNOME Shell interface that enables Linux users to "focus on tasks while minimizing distractions
such as notifications, extra workspaces, and background windows," says the GNOME project.

Linux distros that have already placed GNOME 3.0 front and center include Fedora Linux 15, now
available in an alpha version, while many more will follow suit in the months to come."

The full post is available[2].

   1. ?
   2. ?

---First Firefox 6 build next week, Firefox 7 by May, and aurora channel introduced---

Rahul Sundaram forwarded[1] an article detailing upcoming Mozilla Firefox development:

"Mozilla's Engineering Project Manager, Christian Legnitto, has detailed the release schedule for
Firefox 5, 6 and 7. If all goes to plan, Firefox 6.0a1 will be released next week, April 12, and
Firefox 7.0a1 in the middle of May. The final build of Firefox 5 should be released on June 21,
exactly three months after the release of Firefox 4."

The full post is available[2].

   1. ?
   2. ?

---Interview: Charles H. Schulz on LibreOffice and The Document Foundation---

Rahul Sundaram forwarded[1] an interview with Charles H. Schulz:

"The tipping point is an interesting question: you?re the first one to ask it! Given that the
Document Foundation is made of many people with a diverse background and history with, I would say that there were in fact several different tipping points depending of
the persons. For me, the tipping point was reached when I stopped feeling that I had any sort of
value in the eyes of the new steward. I felt I was somewhere an expense on a sheet, and given that
I was contributing to that project for free, it made me think really fast about all this. I think
there was hope for some time that Oracle would be a good steward."

The full interview is available[2].

   1. ?
   2. ?

---New GNOME Cuts the Clutter (PC World)---

Rahul Sundaram forwarded[1] another review of GNOME 3:

"Five years in the making, the newly released version 3 of the GNOME Linux desktop interface has
been radically redesigned.

The development team endeavored to develop a simpler interface for the shell, noted Jon McCann, one
of GNOME Shell's designers, in a Thursday announcement.

Fedora will include GNOME 3 as the default interface for its upcoming Fedora 15 release, due in
May. GNOME 3.0 is also available in downloadable trial versions that can be loaded onto a thumb

The full article is available[2].

   1. ?
   2. ?

---Yahoo: The Linux Company (ZDNet)---

Rahul Sundaram forwarded[1] an interesting article on Yahoo and its use of Linux:

"Today, at the Linux Foundation Collaboration Summit, Sven Dummer, Director of Linux engineering at
Yahoo!, explained that 75% of Yahoo?s Web sites and services run on Linux. The rest? It runs on

"So what does Yahoo use? Well, Dummer explained, ?Yahoo has its own Linux distribution, YLinux,
targeted for out specific needs. It?s based on Red Hat?s Red Hat Enterprise Linux (RHEL). Yes,
that?s right Yahoo is another Red Hat customer helping Red Hat become a billion dollar company.

Yahoo does, however, support its own supporting software package system. That?s a relic, Dummer
said, of its FreeBSD ancestry. This system is used to package up new software and patches for both
RHEL and FreeBSD. At the same time, Yahoo does use the RPM Package Manager (RPM, yes it?s a
recursive acronym) for a lot of its internal software deployment."

The full article is available[2].

   1. ?
   2. ?

---Focusing on what's important, not sensational (

Rahul Sundaram forwarded[1] an opinion piece on GNOME 3 and negative press:

"What really cranks my brain is the clumsy and obvious attempts by some of us in the media to
somehow use GNOME 3 as a way to re-kindle the desktop wars. It's GNOME vs. KDE all over again, they
shout in text, when really, it's no such thing. Anyone who tell you otherwise is just trying to
drum up headlines for their publication. KDE and GNOME are different, thank you very much, but they
are not out to kill each other off."

The full article is available[2].

   1. ?
   2. ?

---Quick look at Fedora-inspired Fusion Linux 14 - Mini Review---

Rahul Sundaram forwarded[1] a short blog review of Fedora 14:

"Round-up: Fusion Linux is slightly buggy, but a good choice for home users who want everything out
of the box and do not want the hassle of adding extra repositories to get codecs and then install
them. If Windows gaming on Linux is your thing, this distribution could work for you. If you're not
fussy about disk space and the mix of libraries thrown your way in Fusion, or you are already using
Mint and are looking to move or just try out a Fedora base, this could also be interesting. And for
advanced users, don't forget, you can customize the kickstart file from the start as it is
available on their website. And it's an installable live medium and runs well from DVD too."

The full posting is available[2].

   1. ?
   2. ?

--Quality Assurance--

In this section, we cover the activities of the QA team[1]. For more information on the work of the
QA team and how you can get involved, see the Joining page[2].

Contributing Writer: Adam Williamson

   1. ?

   2. ?

---Test Days---

Thursday 2011-03-31 was ABRT Test Day[1]. As well as checking that ABRT (Fedora's automated crash
report tool) is working as expected for Fedora 15, we tested out a big new feature, the retrace
server[2]. This allows you to submit crash reports to a remote server which will generate the
backtrace - avoiding the need for you to download and install often large debuginfo packages in
order to submit reports. Michal Nowak posted a recap[3] of the event, noting that there had been
eight testers and seventeen bugs filed overall.

This Thursday, 2011-04-14, will be virtualization Test Day[4], where our awesome virtualization
team, starring Justin Forbes[5], will be our guides as we test the various virtualization features
of Fedora 15, including shiny SPICE support in virt-manager[6]. Virtualization is a key component
of any distribution nowadays, and the virtualization team always put on a smoothly run event, so
please come along and help us test!

   1. ?
   2. ?

   3. ?
   4. ?
   5. ?

   6. ?

---Fedora 15 Beta preparation---

Preparation for the Fedora 15 Beta release moved into high gear over the last couple of weeks, with
two more blocker review meetings[1] [2] and the TC1[3], RC1[4] and RC2[5] releases. Many testers
made valuable contributions to the desktop and installation validation testing processes for each
of these releases, and we were able to achieve comprehensive test coverage, and identify several
blocker issues for the development team to fix. The group was able to catch SELinux issues caused
by the introduction of the /run directory[6] very early and ensure the change did not land in the
'stable' Fedora 15 repository until this was resolved, and did not affect the Beta release.

   1. ?
   2. ?
   3. ?
   4. ?
   5. ?
   6. ?

---Systemd and GNOME Shell documentation---

Rahul Sundaram posted some documentation on Systemd[1] and GNOME Shell[2]. Both posts led to some
lively discussion and suggested improvements.

   1. ?
   2. ?

---Release criteria revisions---

Adam Williamson announced his intention to push various recently discussed release criteria
revisions into production[1], and later announced that he had done so[2]. In the meantime, a
discussion developed on how to capture the fact that some desktops can block the release and some
cannot in a clear yet future-proof way, with another proposal from Adam[3] and some well-considered
reservations[4] from Jóhann Guemundsson.

Bruno Wolff suggested criteria for image sizes[5], to ensure that images at each release point are
of an appropriate size for convenient testing. Adam provided a proposed wording[6]. Dennis Gilmore
pointed out that the sources DVD should probably be exempt from the criterion[7], at least until
final release time.

   1. ?
   2. ?
   3. ?
   4. ?
   5. ?
   6. ?
   7. ?

---Slow login investigation---

Joachim Backes reported that he was seeing slow logins in Fedora 15[1], and Panu Matilainen
confirmed the issue[2]. Panu was able to pinpoint the issue as a bug in at-spi2-core[3] and help
the desktop team to produce a fix. Great work!

   1. ?
   2. ?
   3. ?

--Security Advisories--

In this section, we cover Security Advisories from fedora-package-announce from the past week.

Contributing Writer: Pascal Calarco

---Fedora 15 Security Advisories---


---Fedora 14 Security Advisories---

    * dhcp-4.2.0-21.P2.fc14 -
    * exim-4.72-2.fc14 -
    * libvirt-0.8.3-9.fc14 -
    * logrotate-3.7.9-2.fc14 -
    * quagga-0.99.18-1.fc14 -
    * nss-3.12.9-9.fc14 -
    * libtiff-3.9.4-4.fc14 -
    * rsync-3.0.8-1.fc14 -

---Fedora 13 Security Advisories---

    * dbus-1.2.24-2.fc13 -
    * libtiff-3.9.4-4.fc13 -
    * quagga-0.99.18-1.fc13 -
    * rsync-3.0.8-1.fc13 -

--LATAM Fedora!--

LATAM Fedora is a regular column of Spanish language contributions around open source software. It
is our first expansion into incorporating foreign language content into FWN.

This week's contribution is from Guillermo Gómez, a third installment on Ruby. Enjoy!

---Ruby Capítulo 3 : Métodos---

Como ya hemos venido desarrollando en nuestra previas entregas, los métodos sabemos se definen por
medio de la palabra clave def. Los nombres de métodos deben comenzar con una letra minúscula. Los
métodos que funcionan como consultas suelen ser llamados con el sufijo "?", tal como instance_of?
Los métodos peligrosos o que modifican el objeto mismo suelen también llamarse con un el sufijo
"!". Por ejemplo String tiene el método chop y chop!. El primero devuelve un string modificado, el
segundo modifica el objeto mismo.

El cuerpo de un método contiene expresiones Ruby normales, excepto que no se puede definir un
método de instancia, clase o modulo dentro de un método, si lo intenta obtendrá un error como el

1 SyntaxError: compile error
2 (irb):2: class definition in method body
3     from (irb):7

El valor devuelto por los métodos es el valor de la última expresión ejecutada, o el resultado
explícito de una expresión return.

1 >> def resultado
2 >> "Uno"
3 >> end
4 >> p resultado
5 "Uno"
7 >> def resultado
8 >> "Uno"
9 >> return true
10 >> end
11 => nil
12 >> p resultado
13 true


Ya que sabe definir un método con su nombre, ahora seguramente se encontrará con la necesidad de
invocar el método pasando parámetros.

1 def miMetodo(arg1, arg2, arg3)
2   # su codigo
3 end
5 def miOtroMetodo
6   # sin argumentos
7   # su codigo
8 end

Ruby le permite definir valores por omisión a los argumentos de lo métodos que son obviados durante
la invocación.

1 def trampa(arg1="boba", arg2="tnt", arg3="30s")
2   "#{arg1}, #{arg2}, #{arg3}"
3 end

1 ?> trampa
2 => "boba, tnt, 30s"
3 >> trampa("lisa")
4 => "lisa, tnt, 30s"
5 >> trampa("lisa","h2o")
6 => "lisa, h2o, 30s"
7 >> trampa("lisa","h2o", "45h")
8 => "lisa, h2o, 45h"

Si desea pasar una cantidad variable de argumentos, o desea capturar múltiples argumentos en un
único parámetro, el colocar un asterisco (*) antes del nombre del último argumento hace justo

1 def varargs(arg1, *resto)
2   "Recibi #{arg1} y #{resto.join(', ')}"
3 end

1 >> varargs("uno")
2 => "Recibi uno + "
3 >> varargs("uno","dos")
4 => "Recibi uno + dos"
5 >> varargs("uno","dos","tres")
6 => "Recibi uno + dos, tres"
7 >> varargs("uno","dos","tres", "cuatro")
8 => "Recibi uno + dos, tres, cuatro"

El resto de argumentos se apilan en un Array y se pone a disposición del método bajo el nombre

---Métodos con y sin bloques asociados---

Una técnica poderosa con Ruby es la posibilidad de asociar bloques de código a los métodos, veamos
un ejemplo simple para ilustrar la técnica.

1 >> def con_y_sin_bloque(p1)
2 >>   if block_given?
3 >>     yield(p1)
4 >>   else
5 ?>     p1
6 >>   end
7 >> end
8 => nil
9 >> con_y_sin_bloque(10) { |p1| (1..5).each { |m| p m + p1 } }
10 11
11 12
12 13
13 14
14 15
15 => 1..5
16 >> con_y_sin_bloque(10)
17 => 10

Para determinar la presencia del bloque hemos usado el método block_given? para condicionar el
procesamiento en la ejecución del método. Luego yield permite ejecutar dicho bloque de código ruby
con el argumento que deseemos, en este caso p1.

Si en la definición de método, el último parámetro es precedido por un ampersand "&", cualquier
bloque asociado a la llamada es convertido a un objeto Proc y dicho objeto es asignado a dicho
parámetro, veamos un ejemplo para visualizar su uso.

1 class CalculadoraDeVentas
2   def initialize(nombre, &bloque)
3     @nombre, @bloque = nombre, bloque
4   end
6   def precio_de_venta(costo)
8   end
9 end

1 >> cpd ="Distribuidor1") { |costo| p "Precio de venta
#{(1.5*costo).to_s} BsF." }
2 => #<CalculadoraDeVentas:0xb735ccc8 @nombre="Distribuidor1",
3 >> cpm ="Minorista1") { |costo| p "Precio de venta #{(1.8*costo).to_s}
BsF." }
4 => #<CalculadoraDeVentas:0xb7347008 @nombre="Minorista1", @bloque=#<Proc:0xb7347058@(irb):77>
6 >> cpd.precio_de_venta(100)
7 "Precio de venta 150.0 BsF."
8 => nil
9 >> cpm.precio_de_venta(100)
10 "Precio de venta 180.0 BsF."
11 => nil

En el ejemplo hemos introducido el uso del método call de Proc para invocar la ejecución
correspondiente y con los argumentos necesarios. Tendremos más que decir acerca de Proc en futuras

Por supuesto que esta funcionalidad puede implementarse de otras maneras, muchas otras maneras, el
ejemplo lo que demuestra sutilmente es que también es posible reusar bloques de código por medio
del uso de los bloques asociados a las llamadas de los métodos, es decir, puede por ejemplo
compartir un bloque de código con más de una definición de método en su aplicación de hecho
reduciendo y reusando el código por medio de funcionalidad común no representaba en clases o
módulos. Esto igualmente puede hacerse en tiempo de ejecución, es decir, código que genera código y
que lo pasa otro código para que lo ejecute. Si está confundido es porque está comenzando a
experimentar el fuerte componente de dinamismo que tiene Ruby, no se asuste y abrace el poder que
de esto se deriva.
--Invocando los métodos

Usted puede invocar o "llamar" un método especificando un "receptor" (objeto), el nombre del
método, y opcionalmente algunos parámetros y un bloque asociado. Para el caso de los métodos de
clase y módulo, el receptor sería el nombre de clase o módulo.

1 File.size("archivo_grande.mpeg") 2 Math.sin(Math::PI/3)

Si se omite el receptor, se usa self, el objeto actual:

1 >> self.class
2 => Object
3 >> self.hash
4 => -608576338
5 >> hash
6 => -608576338
7 >> self.object_id
8 => -608576338
9 >> object_id
10 => -608576338

Note que he evitado intencionalmente llamar a class omitiendo el receptor, y ello es porque provoca
un error, class es ambiguo, es una palabra clave (keyword) y Ruby cree que usted está tratando de
definir una clase, no intenta self.class. En estos casos, use self.class, en general es mejor
explicitar el receptor, es más legible y potencialmente evitará estas ambigüedades difíciles de

También observe con cuidado que no es igual Object.hash a self.hash ya que self es una instancia de
Object en el ejemplo y Object.hash es un método de clase, referencian a hash diferentes, uno a la
instancia (self), y el otro a la clase Object.

1 >> self.class
2 => Object
3 >> self.object_id
4 => -608576338
5 >> Object.object_id
6 => -608573798

Los paréntesis en la llamada al método para listar los argumentos son opcionales, sin embargo para
evitar ambigüedades, le recomendamos fuertemente que siempre use los paréntesis, tal vez sólo en
los casos más simples puede evitarse.

---Expandiendo arreglos en las llamadas---

De forma similar a la invocación con asterisco, en reversa, al invocar un método es posible
"expandir" un arreglo para que cada elemento sea tomado como elemento individual.

1   def cinco(a,b,c,d,e)
2     "Argumentos #{a} #{b} #{c} #{d} #{e}"
3   end

1 >> cinco("un", *["dos", "tres" , "cuatro", "cinco"])
2 => "Argumentos un dos tres cuatro cinco"
3 >> cinco(*["un", "dos", "tres" , "cuatro", "cinco"])
4 => "Argumentos un dos tres cuatro cinco"
5 >> cinco("un", *["dos", "tres" , "cuatro", "cinco"])
6 => "Argumentos un dos tres cuatro cinco"
7 >> cinco("un", *["dos", "tres"] , "cuatro", "cinco")     # Debe ser el último argumento
8 SyntaxError: compile error

---Argumentos opcionales ---

Usando el mismo ejemplo de arriba, intente pasar menos de cinco argumentos:

1 >> cinco
2 ArgumentError: wrong number of arguments (0 for 5)

Los cinco argumentos son obligatorios, una forma de convertirlos en opcionales es asignarles un
valor por omisión nil.

1   def cinco(a=nil,b=nil,c=nil,d=nil,e=nil)
2     "Argumentos #{a} #{b} #{c} #{d} #{e}"
3   end

1 >> cinco
2 => "Argumentos     "
3 >> cinco("uno")
4 => "Argumentos uno    "

Sin embargo note que no puede especificar el tercer argumento sin especificar el segundo, debe
respetar la secuencialidad en la definición de los argumentos. Veamos la siguiente versión revisada
para visualizar los argumentos pasados al método.

1   def cinco(a=nil,b=nil,c=nil,d=nil,e=nil)
2     "Argumentos 1:#{a} 2:#{b} 3:#{c} 4:#{d} 5:#{e}"
3   end

Use nil para saltar al próximo argumento en la lista cuanda haga la invocación del método.

1 >> cinco
2 => "Argumentos 1: 2: 3: 4: 5:"
3 >> cinco("A",nil,nil,"D")
4 => "Argumentos 1:A 2: 3: 4:D 5:"

---Simulando argumentos por nombres: hash---

Si bien Ruby no tiene un verdadero soporte para "keyword arguments", es decir, pasar argumentos con
su nombre y valor, nada nos impide simular dicho comportamiento usando un hash. Ruby incluso tiene
un peque?o atajo que nos evita la sintáxis Hash {} para evitarnos confundir con un bloque asociado.
El hash debe estar especificado de último en la lista de argumentos.

1 def hash_params(params)
2   p "ID: #{params[:id]}"
3   p "Clave: #{params[:clave]}"
4 end

code class="ruby">
>> hash_params(:id => "XXX" , :clave => "Z A Z Z")
"Clave: Z A Z Z"
=> nil
>> hash_params(:clave => "1 2 3 4", :id => "007")
"ID: 007"
"Clave: 1 2 3 4"
=> nil
>> hash_params({:clave => "1 2 3 4", :id => "007"})   # Sintaxis estricta con las {}
"ID: 007"
"Clave: 1 2 3 4"

Powered by Redmine Poder_fedora Poder_ruby Haproxy Powered_by_apache


- end FWN 271 -
announce mailing list

(Log in to post comments)

Copyright © 2011, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds