[#293058] Hello, world? (#158) — Matthew D Moss <matthew.moss@...>

The three rules of Ruby Quiz 2:

41 messages 2008/03/01

[#293075] Scan HTML — Tom Arra <turtleman14789@...>

So I am new to Ruby scripting so I am not sure if this is possible or

16 messages 2008/03/01

[#293195] How do I get the server name? — "laredotornado@..." <laredotornado@...>

Hi,

13 messages 2008/03/02

[#293248] Split the string — Sijo Kg <sijo@...>

I have a string

17 messages 2008/03/03

[#293307] Normal For Loop — Cory Cory <cg821105@...>

I'm new to Ruby. Is there such thing as a C++ style (and most others)

16 messages 2008/03/03

[#293327] Class and inheritance — August0866 <august0866@...>

Hi All,

21 messages 2008/03/03

[#293399] Why is this not implemented in Ruby — Damjan Rems <d_rems@...>

16 messages 2008/03/03

[#293407] Question on the Ruby Programming Language Book — Bharat Ruparel <bruparel@...>

I have been reading The Ruby Programming Language book by David Flanagan

11 messages 2008/03/03

[#293445] Better performance than native unix commands? — Ma Sa <ntwrkd@...>

I have an issue with nfs and listing a large amount of files that I am

16 messages 2008/03/04

[#293484] jruby vs mri memory management — "Michal Suchanek" <hramrach@...>

Hello

12 messages 2008/03/04

[#293493] Re: The Ruby Programming Language - what are your thoughts? — coigner <coignerATgmail@...>

On Mon, 03 Mar 2008 22:04:55 -0500, Esmail wrote:

20 messages 2008/03/04
[#293944] Re: The Ruby Programming Language - what are your thoughts? — Clifford Heath <no@...> 2008/03/09

Esmail wrote:

[#293955] Re: The Ruby Programming Language - what are your thoughts? — Dave Thomas <dave@...> 2008/03/09

[#293982] Re: The Ruby Programming Language - what are your thoughts? — Clifford Heath <no@...> 2008/03/10

Dave Thomas wrote:

[#293994] Re: The Ruby Programming Language - what are your thoughts? — James Gray <james@...> 2008/03/10

On Mar 9, 2008, at 7:46 PM, Clifford Heath wrote:

[#293601] collect with index? — Tim Conner <plump4651@...>

simple question: how can I do a collect with index? This should be

13 messages 2008/03/05

[#293715] duplicating characters in a string — Adam Akhtar <adamtemporary@...>

If i have a string "abc" and want to make it like this "aabbcc", how do

30 messages 2008/03/06
[#293720] Re: duplicating characters in a string — Gary Wright <gwtmp01@...> 2008/03/06

[#293723] Re: duplicating characters in a string — Adam Akhtar <adamtemporary@...> 2008/03/06

[#293757] IO#Foreach -- Max line length — Tristin Davis <tristin.colby@...>

I'm trying to emulate the new feature in 1.9 that allows you to specify

13 messages 2008/03/06
[#293762] Re: IO#Foreach -- Max line length — 7stud -- <bbxx789_05ss@...> 2008/03/06

Tristin Davis wrote:

[#293809] Dynamic class thingies? (Okay, not sure how to title this one) — coigner <coignerATgmail@...>

Asking for ideas here but let me preface...

9 messages 2008/03/07

[#293927] Trac - Does it make sense to keep http://trac.edgewall.org/ticket/4315 open? — Ilias Lazaridis <ilias@...>

Response to message [1] on trac.devel (as I cannot write there, due to

13 messages 2008/03/09

[#293986] Offering to work directly for the Ruby community! — Gregory Brown <gregory.t.brown@...>

Hi folks,

21 messages 2008/03/10

[#293996] Re: Best practices for Ruby Meta-programming — John Carter <john.carter@...>

On Thu, 6 Mar 2008, harshal wrote:

10 messages 2008/03/10
[#294029] Re: Best practices for Ruby Meta-programming — "Robert Dober" <robert.dober@...> 2008/03/10

On Mon, Mar 10, 2008 at 4:06 AM, John Carter <john.carter@tait.co.nz> wrote:

[#293999] Reding unicode characters? — dare ruby <martin@...>

Hi friends,

13 messages 2008/03/10

[#294015] newbie question — Frantisek Psotka <frantisek.psotka@...>

is in ruby operator for:

15 messages 2008/03/10

[#294034] Getting files out of a .tar.gz archive — celldee <celldee@...>

Hi,

11 messages 2008/03/10

[#294059] Which is better -- method option or multiple methods? — Trans <transfire@...>

In the case of limited options, like the following example, which is

19 messages 2008/03/10

[#294081] Re: shortcut for x = [x] unless x.is_a?(Array) — Siep Korteling <s.korteling@...>

Aryk Grosz wrote:

11 messages 2008/03/10

[#294111] setting local variables via eval — ara howard <ara.t.howard@...>

16 messages 2008/03/11

[#294192] whats the error here? — Adam Akhtar <adamtemporary@...>

My IDE (aptana rails) seems to complain about syntax with this code

15 messages 2008/03/11
[#294197] Re: whats the error here? — Sebastian Hungerecker <sepp2k@...> 2008/03/11

Adam Akhtar wrote:

[#294210] Yet another Windows installer — Phillip Gawlowski <cmdjackryan@...>

Hello, list.

32 messages 2008/03/12
[#294421] Re: [ANN] Yet another Windows installer — James Tucker <jftucker@...> 2008/03/13

[#294231] sort array by some text — Ma Fe <frytaz@...>

Hi, i have array with file names

18 messages 2008/03/12
[#294233] Re: sort array by some text — "Todd Benson" <caduceass@...> 2008/03/12

On Wed, Mar 12, 2008 at 12:02 AM, Ma Fe <frytaz@gmail.com> wrote:

[#294234] Re: sort array by some text — Ma Fe <frytaz@...> 2008/03/12

well I dont know where in array i have .txt files but its sure that

[#294281] elsunless: Compiles but does not run. Standard? — Fred Talpiot <fredistic@...>

In Ruby:

10 messages 2008/03/12

[#294297] including general variables in modules — Mario Ruiz <mario@...>

I'm trying to create different scenarios so I thought to do something

14 messages 2008/03/12

[#294366] Parametric module or injecting code via class method? — Trans <transfire@...>

Which approach is better: parametric module or an injecting class

20 messages 2008/03/13
[#294474] Re: Parametric module or injecting code via class method? — ara howard <ara.t.howard@...> 2008/03/13

[#294486] Re: Parametric module or injecting code via class method? — Robert Klemme <shortcutter@...> 2008/03/13

On 13.03.2008 20:35, ara howard wrote:

[#294499] Re: Parametric module or injecting code via class method? — ara howard <ara.t.howard@...> 2008/03/13

[#294799] Re: Parametric module or injecting code via class method? — Robert Klemme <shortcutter@...> 2008/03/16

On 14.03.2008 00:42, ara howard wrote:

[#294808] Re: Parametric module or injecting code via class method? — "Sean O'Halpin" <sean.ohalpin@...> 2008/03/16

On Sun, Mar 16, 2008 at 9:30 PM, Robert Klemme

[#294481] use reqex to get the middle character and repeat it — Adam Akhtar <adamtemporary@...>

say i have the string "qxq" and i want to repeat the middle char 4 times

10 messages 2008/03/13

[#294506] What is Ruby's biggest strength ? — Tuan Minh <tanthuyhoang85@...>

I'm learning Ruby an Rails.

34 messages 2008/03/14
[#294592] Re: What is Ruby's biggest strength ? — Jeremy Henty <onepoint@...> 2008/03/14

On 2008-03-14, Avdi Grimm <avdi@avdi.org> wrote:

[#294632] Re: What is Ruby's biggest strength ? — Marc Heiler <shevegen@...> 2008/03/14

> What helps Ruby stronger than other programming languages

[#294634] Re: What is Ruby's biggest strength ? — 7stud -- <bbxx789_05ss@...> 2008/03/15

Marc Heiler wrote:

[#294522] Food Database (#159) — "Matthew Moss" <matthew.moss@...>

Note that because I am traveling tomorrow, I've posted this week's

15 messages 2008/03/14

[#294564] Robert's Ruby Riddle: Methodical Digits — "Robert Dober" <robert.dober@...>

Hi list

10 messages 2008/03/14

[#294573] How to Read Ruby API / Documentation — Chinna Karuppan <chinnakaruppan@...>

Hi,

13 messages 2008/03/14

[#294648] standard library documentation — Tom Cloyd <tomcloyd@...>

An example of a puzzle I've run into many times before -

18 messages 2008/03/15
[#294652] Re: standard library documentation — Tom Cloyd <tomcloyd@...> 2008/03/15

Tom Cloyd wrote:

[#294693] How to make net-ping thread safe? — Laurent Julliard <laurent@...>

Hi,

15 messages 2008/03/15

[#294711] WWW::Mechanize and basic_auth — "Todd A. Jacobs" <tjacobs-sndr-019fdb@...>

I'm trying to get basic authentication to work with Ruby 1.8 and

12 messages 2008/03/15

[#294746] argh! more undocumented mysteries: to_yaml — Tom Cloyd <tomcloyd@...>

Beginner woes, here, no doubt, but woes nevertheless.

29 messages 2008/03/16
[#294749] Re: argh! more undocumented mysteries: to_yaml — Stefano Crocco <stefano.crocco@...> 2008/03/16

On Sunday 16 March 2008, Tom Cloyd wrote:

[#294792] returning text between two markers without markers included — Adam Akhtar <adamtemporary@...>

12 messages 2008/03/16
[#294793] Re: returning text between two markers without markers included — Xavier Noria <fxn@...> 2008/03/16

On Mar 16, 2008, at 21:02 , Adam Akhtar wrote:

[#294794] Re: returning text between two markers without markers inclu — Adam Akhtar <adamtemporary@...> 2008/03/16

Thanks Xavier,

[#294828] For Comment: Gem Browser — "s.ross" <cwdinfo@...>

It occurred to me that the way I was finding Gems was by making notes

23 messages 2008/03/17

[#294849] Ruby "Speedup" hints? — Marc Heiler <shevegen@...>

Anyone of you has a few hints on how to speed up ruby code?

34 messages 2008/03/17
[#294888] Re: Ruby "Speedup" hints? — "Gerardo Santana Gez Garrido" <gerardo.santana@...> 2008/03/17

On Mon, Mar 17, 2008 at 12:42 PM, Marc Heiler <shevegen@linuxmail.org> wrote:

[#294894] Re: Ruby "Speedup" hints? — Paul Brannan <pbrannan@...> 2008/03/17

On Tue, Mar 18, 2008 at 02:17:22AM +0900, Gerardo Santana G?mez Garrido wrote:

[#294919] Re: Ruby "Speedup" hints? — "Gerardo Santana Gez Garrido" <gerardo.santana@...> 2008/03/18

On Mon, Mar 17, 2008 at 6:08 PM, Paul Brannan <pbrannan@atdesk.com> wrote:

[#294859] Test for Internet Connection — Cory Cory <cg821105@...>

Does anyone know a way to test to see if the computer is connected to

16 messages 2008/03/17
[#294872] Re: Test for Internet Connection — Roger Pack <rogerpack2005@...> 2008/03/17

I usually do something like this on my machine

[#295150] combine array(string) to string? — Pat Kiatchaipipat <hb.pat87@...>

str= "ABCDE"

11 messages 2008/03/20

[#295184] extending ruby with C++ — 7stud -- <bbxx789_05ss@...>

I'm using this old (2001) mini tutorial:

17 messages 2008/03/20

[#295212] including instance methods and setting an instance variable — Leon Bogaert <leon@...>

Hi all,

20 messages 2008/03/20
[#295234] Re: including instance methods and setting an instance variable — "David A. Black" <dblack@...> 2008/03/21

Hi --

[#295246] Re: including instance methods and setting an instance varia — Leon Bogaert <leon@...> 2008/03/21

Thanks for the clear explanation David!

[#295255] Re: including instance methods and setting an instance varia — Leon Bogaert <leon@...> 2008/03/21

Can I "connect" with the instance if it get's instanciated? Because I

[#295257] Re: including instance methods and setting an instance varia — Robert Klemme <shortcutter@...> 2008/03/21

On 21.03.2008 11:15, Leon Bogaert wrote:

[#295327] Re: including instance methods and setting an instance varia — Leon Bogaert <leon@...> 2008/03/21

Thanks Robert!

[#295328] Re: including instance methods and setting an instance varia — Leon Bogaert <leon@...> 2008/03/21

This guy: http://www.ruby-forum.com/topic/142444

[#295331] Re: including instance methods and setting an instance varia — "David A. Black" <dblack@...> 2008/03/21

Hi --

[#295358] Re: including instance methods and setting an instance varia — Leon Bogaert <leon@...> 2008/03/22

Ah thanks David.

[#295365] Re: including instance methods and setting an instance varia — Robert Klemme <shortcutter@...> 2008/03/22

On 22.03.2008 09:34, Leon Bogaert wrote:

[#295375] Re: including instance methods and setting an instance varia — "Robert Dober" <robert.dober@...> 2008/03/22

On Sat, Mar 22, 2008 at 11:34 AM, Robert Klemme

[#295376] Re: including instance methods and setting an instance varia — Robert Klemme <shortcutter@...> 2008/03/22

On 22.03.2008 13:43, Robert Dober wrote:

[#295288] dynamically defining a method on an instance that references vars in enclosing scope? — "Christopher J. Bottaro" <cjbottaro@...>

Hello. I want to do this.

9 messages 2008/03/21

[#295443] Sytem hook for instance names? — Jeff Patterson <jeff_patterson@...>

Is there a system hook that allows a method to get an instance's symbol

15 messages 2008/03/23

[#295468] Rich Graphic Interface with Ruby — Diego Bernardes <di3go.bernardes@...>

What is the best way to get a really nice gui in ruby?

11 messages 2008/03/24

[#295472] Bootstrapping Ruby with MinGW: selfhosted and test sandbox! — Luis Lavena <luislavena@...>

Hello List,

33 messages 2008/03/24

[#295476] functions, arguments and changing their value permantently — Adam Akhtar <adamtemporary@...>

Im coming over to Ruby from C++ after a long break from programming. One

9 messages 2008/03/24

[#295500] Beginner's question — Peter Johnsson <avokadoret@...>

This question may be a bit too "simple" for this forum which seems to

15 messages 2008/03/24

[#295591] generating unique random numbers — Jimmy Palmer <modernfossil@...>

I'm trying to generate 8 unique random numbers between 1 and 13.

15 messages 2008/03/25

[#295605] thread.rb — "Adam Bender" <abender@...>

I want to modify the Queue class in thread.rb, so I first searched for

12 messages 2008/03/25

[#295615] Why git instead of mercurial? — "John Wells" <lists@...>

It seems like the hot new thing these days in Ruby-land is to host

45 messages 2008/03/25
[#295623] Re: Why git instead of mercurial? — "Matt Todd" <chiology@...> 2008/03/25

I really don't think the internal implementation has that much

[#295736] Re: Why git instead of mercurial? — James Britt <james.britt@...> 2008/03/25

Matt Todd wrote:

[#295629] numbers of a record in an array — Bu Mihai <mihai.bulhac@...>

a have an array array=["a","b","c","a","b"]

17 messages 2008/03/25

[#295661] Pros and Cons of Ruby vs JRuby for GUI — "Victor Reyes" <victor.reyes@...>

Although I have been using Ruby for awhile, I am really a beginner as I use

11 messages 2008/03/25

[#295712] remove regex matched line question — Ikuta Lin <ikuta_lin@...>

I wrote the code to query a txt file, and tried remove matched line like

13 messages 2008/03/25

[#295714] Is possible Ruby to use CRLF instead of LF? — "Iñaki Baz Castillo" <ibc@...>

SGksIEFGQUlLIFJ1YnkgdXNlcyBMRiA9IFxuIHRvIGRldGVjdCBuZXdsaW5lLiBCdXQgbm93IEkn

11 messages 2008/03/25

[#295761] golf: tabs to bullets — "Martin DeMello" <martindemello@...>

Given:

18 messages 2008/03/25

[#295828] INTERPRETED LANGUAGE — Jitendra Rai <jitendra.vinsol@...>

IS IT NECESSARY FOR AN INTERPRETED LANGUAGE TO BE CASE SENSITIVE?

14 messages 2008/03/26

[#295854] The inject function — Shendelzare Silkwood <zerruellx@...>

I want to add together numbers in an array with the inject command. I

12 messages 2008/03/26

[#295876] "loop do IO.select([io], nil, nil)" eats 95% of CPU, any other way? — "Iñaki Baz Castillo" <ibc@...>

SGksIHdoaWNoIGlzIHRoZSBtb3N0IGVmZmljaWVudCB3YXkgb2YgcmVjZWl2aW5nIGFuZCBwcm9j

14 messages 2008/03/26

[#295881] Sun's Overview of Ruby and JRuby — Veloso <starlover@...>

A very good article

11 messages 2008/03/26

[#296063] Web-based games? — Hal Fulton <hal9000@...>

Who's interested in developing a few web-based games?

25 messages 2008/03/28
[#296090] Re: Web-based games? — "M. Edward (Ed) Borasky" <znmeb@...> 2008/03/28

Hal Fulton wrote:

[#296146] Re: Web-based games? — John Joyce <dangerwillrobinsondanger@...> 2008/03/29

[#296160] Re: Web-based games? — Marc Heiler <shevegen@...> 2008/03/29

> Be careful about intellectual property, especially trademarks,

[#296064] hrpicot - cant extract what i want from page — Adam Akhtar <adamtemporary@...>

Hi im starting to use hrpicot and im having problems extracting

9 messages 2008/03/28

[#296098] Why Ruby do not optimize code at all? — Heesob Park <phasis@...>

Hi,

29 messages 2008/03/28
[#296112] Re: Why Ruby do not optimize code at all? — "Park Heesob" <phasis68@...> 2008/03/28

SGksDQotLS0tLSBPcmlnaW5hbCBNZXNzYWdlIC0tLS0tIA0KRnJvbTogInRzIiA8ZGVjb3V4QG1v

[#296115] Re: Why Ruby do not optimize code at all? — ts <decoux@...> 2008/03/28

Park Heesob wrote:

[#296151] Is ruby is faster than all Object oriented Scripting langs — "bramu.ss@..." <bramu.ss@...>

Hello,

37 messages 2008/03/29

[#296173] Help on best way to gather/sort results [Array/Hash]? — Tony De <tonydema@...>

Greetings ruby fans,

18 messages 2008/03/29
[#296177] Re: Help on best way to gather/sort results [Array/Hash]? — "Todd Benson" <caduceass@...> 2008/03/29

On Sat, Mar 29, 2008 at 12:02 AM, Tony De <tonydema@gmail.com> wrote:

[#296179] Re: Help on best way to gather/sort results ? — Tony De <tonydema@...> 2008/03/29

Todd Benson wrote:

[#296180] Re: Help on best way to gather/sort results ? — Tony De <tonydema@...> 2008/03/29

Tony De wrote:

[#296182] Re: Help on best way to gather/sort results ? — Christian <chippersbox@...> 2008/03/29

Wouldn't you want something like @results.sort {|x, y| y[1] <=> x[1]}?

[#296200] rexml to slow — Bu Mihai <mihai.bulhac@...>

I have an xml file and sometimes i call the find_first_recursive method;

19 messages 2008/03/29
[#296325] Re: rexml to slow — Robert Klemme <shortcutter@...> 2008/03/30

On 29.03.2008 08:46, Bu Mihai wrote:

[#296364] Re: rexml to slow — Bu Mihai <mihai.bulhac@...> 2008/03/30

Robert Klemme wrote:

[#296371] Re: rexml to slow — Robert Klemme <shortcutter@...> 2008/03/30

On 30.03.2008 20:23, Bu Mihai wrote:

[#296379] Re: rexml to slow — Bu Mihai <mihai.bulhac@...> 2008/03/30

Robert Klemme wrote:

[#296205] RubyGems 1.1.0 — Eric Hodel <drbrain@...7.net>

= Announce: RubyGems Release 1.1.0

22 messages 2008/03/29

[#296306] inject's pathological case... — "Just Another Victim of the Ambient Morality" <ihatespam@...>

I'm not sure how I feel about inject's pathological case. What do you

28 messages 2008/03/30
[#296309] Re: inject's pathological case... — 7stud -- <bbxx789_05ss@...> 2008/03/30

Just Another Victim... wrote:

[#296311] Re: inject's pathological case... — 7stud -- <bbxx789_05ss@...> 2008/03/30

Oh, yeah:

[#296331] Re: inject's pathological case... — "Rick DeNatale" <rick.denatale@...> 2008/03/30

On 3/30/08, 7stud -- <bbxx789_05ss@yahoo.com> wrote:

[#296375] GC help — "Joey Marino" <joey.da3rd@...>

I am still running out of memory with my ruby application. For some reason,

15 messages 2008/03/30
[#296376] Re: GC help — Tim Hunter <TimHunter@...> 2008/03/30

Joey Marino wrote:

[#296477] Primes in P? — Charles Zheng <snarles2@...>

There is an algorithm that tests primes with a polynomial running time:

13 messages 2008/03/31

Re: Suggest alternatives for Facets paramix?

From: Trans <transfire@...>
Date: 2008-03-31 23:34:01 UTC
List: ruby-talk #296546

On Mar 31, 6:27 pm, "Jacob Burkhart" <igoti...@gmail.com> wrote:
> I Can't seem to find any documentation or explanation as to why paramix has
> been forcibly deprecated from facets:http://facets.rubyforge.org/doc/changes.html
>
> And apparently that lack of documentation means not too many other people
> were making use of this cool tool.
>
> You see a similar technique used a lot in rails.  For example, you'll add
> the make_resourceful plugin and now all of your controller have the class
> method make_resourceful. (And that takes some arguments) And when you call
> it ends up including some module from the plugin that adds things to your
> controller. great.
>
> But all of that takes a fair amount of up-front class_eval to add the
> make_resourceful class method to everything.
>
> For simple add-ons I like to use paramix.
>
> For example, I have a simple module called SqlSearch, and I do
>
> include SqlSearch, :on => ['name', 'content']
>
> paramix gives me access to those hash parameters in my self.included(base)
> call in the module.  So much simpler and cleaner than declaring class method
> everywhere, and there's a clear and definite association here.  You KNOW to
> look for a SqlSearch module to find out what's going on  I could instead
> have defined the sql_search class method on ActiveRecord::Base...  but then
> I have to have require 'sql_search', I can't just have the const_missing
> SqlSearch trigger the load needed.... messiness?
>
> Anybody get what I'm talking about?  Why get rid of such a useful thing?
>  What's a good alternative?
>
> I debate making my own such thing, something like:
>
> include_mod SqlSearch, :on => ['name', 'content']
>
> and then the callback is self.mod_included(base)... feels hackity
>
> Any thoughts?

Hi Jacob,

It was a bit premature of me to remove it. My apologies. I encountered
some conflicts between it and other libs and had to reconsider it. The
idea is great, no doubt. Unfortunately the implementation was invasive
--it overrode #include and #extend. Considering it further I felt it
would be better to deprecate it rather then continue to promote a non-
robust lib; and I've already started on a new version. I'm hoping to
manage a highly robust implementation with much the same interface,
except using captialize methods rather than overriding #include. Eg.

  class X
    include PMix(:parm=>"foo")
  end

I worked on it last night, but it's a tough nut. If you (or anyone
else) is interested in implementing this please take a whack.
Hopefully I can get it into next Facets release. (2.4.1 in a week or
so).

In the mean time I've include a copy of the old version below if you
need a (copy and paste) fix asap.

T.

---- Here's the old deprecated version of paramix.rb ----

# TITLE:
#
#   Parametric Mixins
#
# SUMMARY:
#
#   Parametric Mixins provides parameters for mixin modules.
#
# COPYRIGHT:
#
#   Copyright (c) 2005 Thomas Sawyer, George Moschovitis
#
# LICENSE:
#
#   Ruby License
#
#   This module is free software. You may use, modify, and/or
redistribute this
#   software under the same terms as Ruby.
#
#   This program is distributed in the hope that it will be useful,
but WITHOUT
#   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS
#   FOR A PARTICULAR PURPOSE.
#
# AUTHORS:
#
#   - Thomas Sawyer
#   - George Moschovitis

require 'facets/module/name' # for basename

# = Parametric Mixins
#
# Parametric Mixins provides parameters for mixin modules.
# Module parameters can be set at the time of inclusion or extension,
# then accessed via an instance method of the same name as the
included
# module.
#
# == Synopsis
#
#   module Mixin
#     def hello
#       puts "Hello from #{Mixin(:name)}"
#     end
#   end
#
#   class MyClass
#     include Mixin, :name => 'Ruby'
#   end
#
#   m = MyClass.new
#   m.hello -> 'Hello from Ruby'
#
# You can view the full set of parameters via the #mixin_parameters
# class method, which returns a hash keyed on the included modules.
#
#   MyClass.mixin_parameters         #=> {Mixin=>{:name=>'Ruby'}}
#   MyClass.mixin_parameters[Mixin]  #=> {:name=>'Ruby'}
#
# To create _dynamic mixins_ you can use the #included callback
# method along with mixin_parameters method like so:
#
#   module Mixin
#     def self.included( base )
#       parms = base.mixin_parameters[self]
#       base.class_eval {
#         def hello
#           puts "Hello from #{parms(:name)}"
#         end
#       }
#     end
#   end
#
# More conveniently a new callback has been added,
#included_with_parameters,
# which passes in the parameters in addition to the base class/module.
#
#   module Mixin
#     def self.included_with_parameters( base, parms )
#       base.class_eval {
#         def hello
#           puts "Hello from #{parms(:name)}"
#         end
#       }
#     end
#   end
#
# We would prefer to have passed the parameters through the #included
callback
# method itself, but implementation of such a feature is much more
complicated.
# If a reasonable solution presents itself in the future however, we
will fix.

class Module

  # Store for module parameters. This is local per module
  # and indexed on module/class included-into.
  def mixin_parameters ; @mixin_parameters ||= {} ; end

  alias_method :include_without_parameters, :include

  def include(*args)
    params = args.last.is_a?(Hash) ? args.pop : {}
    args.each do |mod|
      mixin_parameters[mod] = params
      if mod.basename
        define_method( mod.basename ) do |key|
          if params.key?(key)
            params[key]
          else
            super if defined?( super )
          end
        end
      end
    end
    r = include_without_parameters(*args)
    for mod in args
      if mod.respond_to?(:included_with_parameters)
        mod.included_with_parameters( self, params )
      end
    end
    r
  end

  alias_method :extend_without_parameters, :extend

  def extend(*args)
    params = args.last.is_a?(Hash) ? args.pop : {}
    args.each do |mod|
      (class << self; self; end).class_eval do
        mixin_parameters[mod] = params
        if mod.basename
          define_method( mod.basename ) do |key|
            if params.key?(key)
              params[key]
            else
              super if defined?( super )
            end
          end
        end
      end
    end
    r = extend_without_parameters(*args)
    for mod in args
      if mod.method_defined?(:extended_with_parameters)
        mod.extended_with_parameters( self, params )
      end
    end
    r
  end

end

In This Thread