[#400858] Support for multiple Inheritance by classes — Ross Konsolebox <lists@...>

Will Ruby ever support multiple inheritance through classes instead of

23 messages 2012/11/03
[#400859] Re: Support for multiple Inheritance by classes — Arlen Cuss <ar@...> 2012/11/03

I think I can say "no" with a fair amount of confidence.

[#400902] Re: Support for multiple Inheritance by classes — Ross Konsolebox <lists@...> 2012/11/04

Arlen Cuss wrote in post #1082618:

[#400904] Re: Support for multiple Inheritance by classes — Peter Hickman <peterhickman386@...> 2012/11/04

Even though other languages handle multiple inheritance without any

[#400865] why does UnboundMethod need to remember the class it was retrieved from (not merely owner)? — "Mean L." <lists@...>

class Base; def foo; end end

17 messages 2012/11/03

[#400914] login web page using mechanize — john smith <lists@...>

new to ruby, love the language. read programmatic programmers guide to

25 messages 2012/11/04

[#400985] How to merge two or more hashes in to one? — "Jermaine O." <lists@...>

Hi everyone.

14 messages 2012/11/06

[#401026] Site down watir-webdriver — ajay paswan <lists@...>

Whenever a site is down it keeps on looking for it for sometime and

14 messages 2012/11/07

[#401027] Closing popups watir-webdriver — ajay paswan <lists@...>

Sometimes popup comes when a link is clicked, sometimes popup comes when

14 messages 2012/11/07

[#401125] Complete newbie — "Carlos A." <lists@...>

Hey guys!

14 messages 2012/11/10

[#401161] Convert date to string — Ferdous ara <lists@...>

Hi

12 messages 2012/11/11

[#401173] question on watir — Raj pal <lists@...>

I am automating Idit application using Ruby, at one screen I can't feed

233 messages 2012/11/12

[#401191] Extending Array instances — Charles Hixson <charleshixsn@...>

I'm trying to figure out a good way to extend an Array, when the items

17 messages 2012/11/12
[#401195] Re: Extending Array instances — Brian Candler <lists@...> 2012/11/12

Charles Hixson wrote in post #1084111:

[#401200] Efficient way for comparing records between 2 large files (16 million records) — Ruby Student <ruby.student@...>

Team,

9 messages 2012/11/12

[#401274] following along with "Beginning Ruby." — Al Baker <lists@...>

I'm having trouble following along with some of the examples in this

15 messages 2012/11/15

[#401279] Question on exceptions — Justin Gamble <lists@...>

Hello! I have a simple bank program where I have to have an exception

16 messages 2012/11/15
[#401281] Re: Question on exceptions — Justin Gamble <lists@...> 2012/11/15

What is the reason of doing the .new(...)in

[#401295] Re: Question on exceptions — Brian Candler <lists@...> 2012/11/16

Justin Gamble wrote in post #1084635:

[#401296] Re: Question on exceptions — tamouse mailing lists <tamouse.lists@...> 2012/11/16

On Fri, Nov 16, 2012 at 1:43 AM, Brian Candler <lists@ruby-forum.com> wrote:

[#401301] Alternatives to methods for large number of nested "ifs" — Philip Rhoades <phil@...>

People,

11 messages 2012/11/16

[#401336] Advice for simple client/server application — Panagiotis Atmatzidis <atma@...>

Hello,

12 messages 2012/11/17

[#401364] Metaprogramming — "Aurimas N." <lists@...>

Hello,

12 messages 2012/11/19

[#401404] "undefined method `synchronize' for #<Mutex:0xa0f5adc>" from embedded Ruby program — Graham Menhennitt <graham@...>

I'm writing a C++ program (on Centos 5 Linux) that embeds a Ruby 1.9.3

9 messages 2012/11/21

[#401422] how to increase variable inside the while loop — Ferdous ara <lists@...>

Hi, my question might be confusing as its hard for me to make it clear,

12 messages 2012/11/21

[#401451] Arrays with records as objects — Steve Tucknott <lists@...>

I am completely new to Ruby.

11 messages 2012/11/22

[#401458] working with mysql in ruby — john smith <lists@...>

i have been trying to successfully connect ruby with mysql. there are a

17 messages 2012/11/22

[#401567] click on link not working with ie #watir-webdriver — ajay paswan <lists@...>

Greetings,

12 messages 2012/11/26

[#401578] atomic statements in multithreading — ajay paswan <lists@...>

suppose I am working in multiple thread each thread runs following

10 messages 2012/11/26

[#401607] Novice: Understanding instance 'variables' and methods — Steve Tucknott <lists@...>

A question - or comment - on instance variables.

10 messages 2012/11/26

[#401644] Getting the smallest Items of an Array — "Ismail M." <lists@...>

Hello guys,

14 messages 2012/11/27

[#401655] gem problems(sigh) — Al Baker <lists@...>

i tried to make a gem and tried to build the spec file and this is what

10 messages 2012/11/28

[#401688] sorting data from a file — "Ismail M." <lists@...>

Hey guys,

16 messages 2012/11/28

[#401706] Newbie question: (free) on-line courses? — Ken D'Ambrosio <ken@...>

Hello, all. There's a bunch of free on-line training for Javascript,

11 messages 2012/11/28

Re: Advice for simple client/server application

From: "Carlo E. Prelz" <fluido@...>
Date: 2012-11-18 08:04:28 UTC
List: ruby-talk #401345
	Subject: Advice for simple client/server application
	Date: Sun 18 Nov 12 06:09:42AM +0900

Quoting Panagiotis Atmatzidis (atma@convalesco.org):

> I need to write a client/server application and I'd like to some
> advice from more experienced users.  
> 
> There will be multiple clients and one server. Every client should
> automatically identify to the server and give some details
> (client_id, date, time, etc). The identification needs to be at very
> basic level, just to avoid *strange things* from happening, since
> the server is going to listen on the internet (firewall rules will
> be applied, but some clients may have dynamic ip's, so some subnets
> might be able to connect).  
> 
> The server will dig for data from a database, at each client's
> request will send an array (list of words) to the client. Then the
> server will receive a hash with detailed info from the client about
> the each element of the array and will dump the results into the
> database. These arrays will be formed only when requested by
> clients. The server will make sure clients don't get the same arrays
> and make a check to the given results and that's about it. 
> 
> It's a fairly simple application. I was thinking of using sinatra +
> routes, to create the list in 'txt' format to the client but I'm not
> sure how to send the results back to the sinatra server yet. 
> 
> So I'd like to ask more advanced users if there's any protocol, gem
> and/or framework that would make this task easier since I've never
> done anything similar before. I know there's a variety of protocols
> which can be used. I'd like to keep things simple & clean as much as
> possible. 

You do not specify if the clients are also written in Ruby. When I
have to do inter-process communications, on the same machine or
between remote machines, I use DRb (Distributed Ruby), which is
included in MRI. I certainly had to pour some sweat to gain confidence
with it, but it was worth the effort. You can even set it up to use
SSL, so the traffic will be encrypted.

Let's say you have a server based on this scaffold (engine.rb):

--8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<--
require 'drb/drb'
require 'drb/ssl'

class Engine
  HOST='yourhost.xxx'
  PORT=21212
  URI="drbssl://#{HOST}:#{PORT}"
  CERTNAME=[['C',HOST.split('.')[-1]],['O',HOST],['CN',self.to_s]]

  def initialize
    config={:verbose=>false,:SSLCertName=>CERTNAME}
    @srv=DRb::start_service(URI,self,config)

    #
    # Your inits
    #

    @para1=rand(1000)
    @para2=rand(1000)
  end

  def runme
    DRb::thread.join()
  end

  #
  # Remote-callable methdos
  #
  
  def method1(a)
    "#{@para1} #{@para2} method 1 returns #{a.to_s}"
  end

  def method2(a)
    "#{@para1} #{@para2} method 2 returns #{a.to_s} #{a.to_s}"
  end

  def Engine::remote
    config={:verbose=>false}
    
    DRb.start_service(nil,nil,config)
    DRbObject.new(nil,URI)
  end
end

if($0==__FILE__)
  Engine::new.runme
end
--8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<--

Your client may be something like this:

--8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<--
require 'engine.rb'

class Client
  def initialize
    @engine=Engine::remote
  end

  def runme
    puts @engine.method1(rand(1000))
    puts @engine.method1('test')
    puts @engine.method2(rand(1000))
    puts @engine.method2('test')
  end
end

Client::new.runme
--8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<--

Your engine can provide an identify method (you may have a hash of
user ids/passwords associated to one or more address, for
example). Then, you would have a 'dig' method that would provide the
desired list of words.

For me, DRb has cut the cake several times (you can also base it on
Unix sockets, for intra-machine communications). 

There are some snags. The biggest is that methods of the DRb-exported
objects are executed remotely, but if your client receives remote
objects, it will receive LOCAL COPIES of them. Let's say your engine
has object @ob, which has method meth. If your engine has this method

def m
  @ob.meth
end	

meth is executed remotely, by the engine process. But if your
methods just returns @ob:

def m
  @ob
end	

and in your client you have

ob=@engine.m
ob.meth

meth is executed in the client's thread (and thus, for example, it
won't be able to access the database opened by the remote engine).

I hope this is of help.

Carlo

-- 
  *         Se la Strada e la sua Virtu' non fossero state messe da parte,
* K * Carlo E. Prelz - fluido@fluido.as             che bisogno ci sarebbe
  *               di parlare tanto di amore e di rettitudine? (Chuang-Tzu)

In This Thread