Hi,

I don't really know whether it's appropriate to re-post a message. But I
think I asked my question in a proper way, and would like to re-post to
eliminate the chance of missing the right people for this question.

Here is the original message:


-----
Onur Gungor wrote:

Hi,

I am developing a web based game in which people try to guess the
concealed word in a collaborative manner.

As you already take for granted, I use ruby on rails on the server side.

But I have a problem, I synchronize the method which arranges games and
informs the users using a Mutex. Though I didn't tested heavily, it
seemed to work on the development server. But when I deployed the
project onto the production server, it seems that it's not functioning
(or there may be some other problem)

On the development, I use a mongrel server, which I start on the command
line (script/server -b bla bla -p 3000)

On the production server,  I use Passenger with the default settings.

First I suspected that this problem is originating because Passenger was
spawning processes and they are not sharing the mutex. But I checked the
documentation but couldn't find a mention of it. And in this link
(http://m.onkey.org/2008/10/23/thread-safety-for-your-rails) it says
that it's OK to use Mutexes (though not mentioning the multiprocess
passenger).

What do you think the problem is about? I am posting a code snippet
which exemplifies my usage of Mutexes.

Here is the relevant versions:

Production:

Passenger: 2.2.2
Apache: 2.2.8-1ubuntu0.9

About your application's environment
Ruby version              1.8.6 (x86_64-linux)
RubyGems version          1.3.1
Rack version              1.0 bundled
Rails version             2.3.2
Active Record version     2.3.2
Action Pack version       2.3.2
Active Resource version   2.3.2
Action Mailer version     2.3.2
Active Support version    2.3.2
Edge Rails revision       unknown
Application root          XXXX
Environment               development
Database adapter          mysql

Development:

About your application's environment
Ruby version              1.8.7 (i486-linux)
RubyGems version          1.3.1
Rack version              1.0 bundled
Rails version             2.3.2
Active Record version     2.3.2
Action Pack version       2.3.2
Active Resource version   2.3.2
Action Mailer version     2.3.2
Active Support version    2.3.2
Edge Rails revision       unknown
Application root          XXXX
Environment               development
Database adapter          mysql
Database schema version   20090701025248

Here is the code:

def GameControl

@@semaphore = Mutex.new

def GameControl.start_game(user, singlegame = false)

  @@semaphore.synchronize {

    do the stuff here which I want to be processed by only one at a
time.

  }

  end

end
-- 
Posted via http://www.ruby-forum.com/.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to