[#394281] Can someone throw me a bone — Bob Baird <lists@...>

Hi all,

14 messages 2012/04/02

[#394311] using hash as database? Secure databases with ruby? — ruby rocks <lists@...>

I am new to programming and am learning ruby as my first language. I

16 messages 2012/04/03
[#394315] Re: using hash as database? Secure databases with ruby? — Hassan Schroeder <hassan.schroeder@...> 2012/04/03

On Tue, Apr 3, 2012 at 10:30 AM, ruby rocks <lists@ruby-forum.com> wrote:

[#394318] Re: using hash as database? Secure databases with ruby? — ruby rocks <lists@...> 2012/04/03

Hassan Schroeder wrote in post #1054862:

[#394320] Re: using hash as database? Secure databases with ruby? — Florian Gilcher <flo@...> 2012/04/03

[#394321] Re: using hash as database? Secure databases with ruby? — ruby rocks <lists@...> 2012/04/03

Florian Gilcher wrote in post #1054875:

[#394375] Call for comments - Structure — Hal Fulton <rubyhacker@...>

Greetings, fellow Rubyists...

14 messages 2012/04/04

[#394390] Design pattern question — James French <James.French@...>

Hi group,

15 messages 2012/04/05

[#394471] How to pull out specific part of a variable and set to another variable? — "Charlie B." <lists@...>

I have a variable that is a long string. The variable looks like this:

9 messages 2012/04/09

[#394492] New to Ruby, tutorial gives wrong example. — Roger McDonald <lists@...>

I am just starting with Ruby with intention to learn and perhaps use it

11 messages 2012/04/10

[#394533] A Beginner's Question about Metaprogramming — Phil Stone <lists@...>

Hey guys, have a question about Ruby programming and found this forum

20 messages 2012/04/10

[#394616] How to test if array element exists? — Soul Surf <lists@...>

I'm new to Ruby and just want to test if an array element exists. Here's

11 messages 2012/04/13

[#394642] how to avoid escaping special chars after backslah in string — Lucky Nl <lists@...>

Hi friends,

13 messages 2012/04/13
[#394645] Re: how to avoid escaping special chars after backslah in string — Roger Pack <lists@...> 2012/04/13

so what's your ideal syntax here?

[#394658] Why doesn't Fixnum#to_d exist? — Mark Campbell <nitrodist@...>

http://stdlib.rubyonrails.org/libdoc/bigdecimal/rdoc/index.html

15 messages 2012/04/13
[#394660] Re: Why doesn't Fixnum#to_d exist? — Bartosz Dziewoński <matma.rex@...> 2012/04/13

It does exist, but it's in a separate file - bigdecimal/util or utils,

[#394663] Re: Why doesn't Fixnum#to_d exist? — Mark Campbell <nitrodist@...> 2012/04/13

Yes, that file has the String#to_d, Float#to_d and Rational#to_d.

[#394675] Operator overloading of the subscript operator — Ralph Shnelvar <ralphs@...32.com>

I understand that operators (e.g. +, -, *, []) are nothing more than method names so that

16 messages 2012/04/14
[#394677] Re: Operator overloading of the subscript operator — "Jan E." <lists@...> 2012/04/14

Hi,

[#394678] Re: Operator overloading of the subscript operator — Ralph Shnelvar <ralphs@...32.com> 2012/04/14

Jan,

[#394767] Capital Cyrillic letter in Ruby class name (UTF-8) — Vladimir Kerimov <lists@...>

Hi matz,

22 messages 2012/04/17

[#394803] Why must I know whether I extend a class or a module? — Marc Heiler <lists@...>

Hi.

18 messages 2012/04/18
[#394843] Re: Why must I know whether I extend a class or a module? — Intransition <transfire@...> 2012/04/19

On Wednesday, April 18, 2012 1:13:17 PM UTC-4, Marc Heiler wrote:

[#394853] How can i make the colorful font with black background for puts? — gmspro gmspro <lists@...>

puts 'Hello World."

10 messages 2012/04/19

[#394865] finding duplicates in an array and its index number — newto ruby <lists@...>

Hi,

11 messages 2012/04/19

[#394964] To developers of Ruby: Feeble documentation - weakness of Ruby and the Ruby on Rails (2nd edition) — Sergey Ezhov <lists@...>

RGlyZWN0bHkgSSBhcG9sb2dpemUgZm9yIG15IEVuZ2xpc2ggLSBJIHVzZWQg

13 messages 2012/04/23
[#394971] Re: To developers of Ruby: Feeble documentation - weakness of Ruby and the Ruby on Rails (2nd editio — Brian Candler <lists@...> 2012/04/23

I think you are a bit confused.

[#394969] gem-packed script with DATA section does not work — Wybo Dekker <wybo@...4all.nl>

The attached minimal gem contains a script that reads "Hello World!"

20 messages 2012/04/23
[#394970] Re: gem-packed script with DATA section does not work — Xavier Noria <fxn@...> 2012/04/23

DATA points to the contents after the __END__ directive of the executable

[#394973] Re: gem-packed script with DATA section does not work — Wybo Dekker <wybo@...4all.nl> 2012/04/23

On 2012-04-23 11:39, Xavier Noria wrote:

[#394988] Re: gem-packed script with DATA section does not work — Ryan Davis <ryand-ruby@...> 2012/04/23

[#394997] Re: gem-packed script with DATA section does not work — Peter Zotov <whitequark@...> 2012/04/23

Ryan Davis писал 23.04.2012 22:58:

[#395024] -BEGINNERS- Where do I Start? — "Thought M." <lists@...>

Hello World....... I am very new to code but have been glancing at it

13 messages 2012/04/25

[#395035] if if if statment — fox foxmaster <lists@...>

Hi all,

19 messages 2012/04/25

[#395085] Wrappng up my Text Game! Need Help! — Jared Hobbs <lists@...>

Hi, everyone. This is my first post!

18 messages 2012/04/26

[#395099] ruby/shoes GUI - sqlite, how to isert a variable key in table? — "Danilo L." <lists@...>

Hello, I am struggling to insert a variable into a table, for example:

17 messages 2012/04/27
[#395104] Re: ruby/shoes GUI - sqlite, how to isert a variable key in table? — Zachary Scott <zachary@...> 2012/04/27

Hi Danilo, How are you enjoying shoooes?

[#395105] Re: ruby/shoes GUI - sqlite, how to isert a variable key in table? — Michel <michel.revesche@...> 2012/04/27

[#395113] why does this return 255 bits instead of 256 (and general bit byte hex string array crypt mayhem :P) — instance_variable ok <lists@...>

So I am doing something that requires me to manipulate things on the bit

14 messages 2012/04/27

[#395193] delete character from array — Ok Ok <lists@...>

Here is my question...

17 messages 2012/04/30
[#395196] Re: delete character from array — Ok Ok <lists@...> 2012/04/30

Yes that was exactly it. I have one more question maybe you can help me

Re: Design pattern question

From: James French <James.French@...>
Date: 2012-04-05 16:16:09 UTC
List: ruby-talk #394404

-----Original Message-----
From: Robert Klemme [mailto:shortcutter@googlemail.com]=20
Sent: 05 April 2012 16:08
To: ruby-talk ML
Subject: Re: Design pattern question

On Thu, Apr 5, 2012 at 4:25 PM, James French <James.French@naturalmotion.co=
m> wrote:

> Using =A0the Jay Fields link and slightly modifying I've got something=20
> I'm happy with. Thanks for the help Robert, as always :)
>
> module SourceControl
> =A0def self.init(subject)
> =A0 =A0subject.public_methods(false).each do |meth|
> =A0 =A0 =A0(class << self; self; end).class_eval do
> =A0 =A0 =A0 =A0define_method meth do |*args|
> =A0 =A0 =A0 =A0 =A0subject.send meth, *args
> =A0 =A0 =A0 =A0end
> =A0 =A0 =A0end
> =A0 =A0end
> =A0end
> end

That's just a mechanism to generate delegation.  And you redefine methods a=
ll the time.  I don't think meta programming is necessary at all here.

> class SourceControlAPI
>
> =A0def checkout(repository, dest, options=3D{})
> =A0end
>
> =A0def update(path, options=3D{})
> =A0end

Those are not really needed.  And if you want to have them then I'd make th=
em either contain a default implementation if there exists one or throw an =
exception which explains that this method must be implemented for the class=
.


True, but I want to document the API somewhere central. I raise exceptions =
saying the method must be implement.

> end
>
> class SVN < SourceControlAPI
>
> =A0def checkout(repository, dest, options=3D{})
> =A0 =A0puts "Checking out from SVN"
> =A0end
>
> =A0def update(path, options=3D{})
> =A0end
>
> end
>
> SourceControl.init(SVN.new)
> SourceControl.checkout('foo', 'bar')

You are hiding specific state in a constant.  I don't like that because it =
will prevent accessing multiple different source control systems in the sam=
e program or from multiple threads.  I find that requirement to be able to =
invoke all the methods through the constant leads to a situation where you =
severely cripple modularity and reusability without really gaining somethin=
g.


Also true, if I wanted to do that, but I don't. I just need to initialise i=
t at startup and use the source control system that was automatically deter=
mined from then on, without knowing which one it is. I think this API is wo=
rking really well for me... I also just like the API of SourceControl.check=
out etc.


Kind regards

robert

--
remember.guy do |as, often| as.you_can - without end http://blog.rubybestpr=
actices.com/


In This Thread