Hi....
Here me looking for some help....
how to find web server's operating system ...
whether it is running under windows or linux...
Any helps
Thanks
···
--
Posted via http://www.ruby-forum.com/.
Hi....
Here me looking for some help....
how to find web server's operating system ...
whether it is running under windows or linux...
Any helps
Thanks
--
Posted via http://www.ruby-forum.com/.
Here me looking for some help....
how to find web server's operating system ...
Do you mean remotely?
whether it is running under windows or linux...
It depends what the server in question is willing to provide as information. You can try to look at HTTP response header "Server" and draw your conclusions (if it is IIS then the server must be some kind of Windows).
Kind regards
robert
On 08.04.2009 12:09, Newb Newb wrote:
You can reach into the ENV object for a whole load of information about your
current execution environment:
ENV.to_hash.each do |key, value|
puts("#{key} - #{value}")
end
On Wed, Apr 8, 2009 at 11:09 AM, Newb Newb <revathy.p@angleritech.com>wrote:
Hi....
Here me looking for some help....
how to find web server's operating system ...whether it is running under windows or linux...
Any helps
Thanks
--
Posted via http://www.ruby-forum.com/\.
Look in the response headers, the server software should be there (and often the OS)
Regards,
Henrik Hodne
On 8 Apr 2009, at 12:09, Newb Newb <revathy.p@angleritech.com> wrote:
Hi....
Here me looking for some help....
how to find web server's operating system ...whether it is running under windows or linux...
Any helps
Thanks
--
Posted via http://www.ruby-forum.com/\.
Or you can use rbconfig:
require 'rbconfig'
case Config::CONFIG['host_os']
when /darwin/i
puts "Ah, Darwin :)"
when /mswin|windows/i
raise "You call that an operating system?"
else
raise "I haven't the foggiest"
end
However be aware that if you're using JRuby it will still report the underlying OS which might not be as informative as you'd like so you'll also need to check other CONFIG options.
Ellie
Eleanor McHugh
Games With Brains
http://slides.games-with-brains.net
On 8 Apr 2009, at 11:53, Ben Lovell wrote:
You can reach into the ENV object for a whole load of information about your
current execution environment:ENV.to_hash.each do |key, value|
puts("#{key} - #{value}")
end
----
raise ArgumentError unless @reality.responds_to? :reason
Thanks, Eleanor! If I may suggest an additional clause
(with meaning in both the individual and group sense):
require 'rbconfig'
case Config::CONFIG['host_os']
when /darwin/i
puts "Ah, Darwin :)"
when /linux-gnu/i
puts "GNU/Linux - The World Community expands Consciousness"
when /mswin|windows/i
raise "You call that an operating system?"
else
raise "I haven't the foggiest"
end
On Apr 8, 4:27 am, Eleanor McHugh <elea...@games-with-brains.com> wrote:
Or you can use rbconfig:
require 'rbconfig'
case Config::CONFIG['host_os']
when /darwin/i
puts "Ah, Darwin :)"
when /mswin|windows/i
raise "You call that an operating system?"
else
raise "I haven't the foggiest"
end
*grumble* *grumble* GPL *grumble* ;p
Ellie
Eleanor McHugh
Games With Brains
http://slides.games-with-brains.net
On 8 Apr 2009, at 13:30, Mark S Bilk wrote:
Thanks, Eleanor! If I may suggest an additional clause
(with meaning in both the individual and group sense):require 'rbconfig'
case Config::CONFIG['host_os']
when /darwin/i
puts "Ah, Darwin :)"
when /linux-gnu/i
puts "GNU/Linux - The World Community expands Consciousness"
when /mswin|windows/i
raise "You call that an operating system?"
else
raise "I haven't the foggiest"
end
----
raise ArgumentError unless @reality.responds_to? :reason
Hi,
Could anyone suggest an elegant way of doing something like:
$directXSDKBootstrapped = false
def bootstrapDirectXSDK
if !$directXSDKBootstrapped
bootstrapBuildToolsDirectory("DirectX/#{DIRECTX_VERSION}")
$directXSDKBootstrapped = true
$directXSDKBootstrapped.freeze
end
end
Obviously the intention is to only do something the first time it is called. Maybe some little reusable util? I have a number of different bootstrap functions I want to apply this to.
Cheers,
James
Don't think of them as "functions". Think of them as "methods", and always put them inside classes.
James French wrote:
Hi,
Could anyone suggest an elegant way of doing something like:
$directXSDKBootstrapped = false
def bootstrapDirectXSDK
if !$directXSDKBootstrapped
bootstrapBuildToolsDirectory("DirectX/#{DIRECTX_VERSION}")
$directXSDKBootstrapped = true
$directXSDKBootstrapped.freeze
end
end
class Whatever
def bootstrapDirectXSDK
@@directXSDKBootstrapped ||=
bootstrapBuildToolsDirectory("DirectX/#{DIRECTX_VERSION}")
end
end
That's teh "proxy pattern" in Ruby...
One way to do it, which requires a good understanding of
metaprogramming, could be as follows:
class Class
# Replaces the method whose name is provided by a
# method that calls the original one the first time it is called
# and by a noop method for subsequent calls.
def one_call_only(method_name)
# implement me
end
end
class MyClass
def bootstrapDirectXSDK
bootstrapBuildToolsDirectory("DirectX/#{DIRECTX_VERSION}")
end
one_call_only :bootstrapDirectXSDK
end
I'm not sure it's the simplest way to do it. I can sketch the actual
code of one_call_only if it helps.
blambeau
On Wed, Apr 8, 2009 at 4:29 PM, James French <James.French@naturalmotion.com> wrote:
Hi,
Could anyone suggest an elegant way of doing something like:
$directXSDKBootstrapped = false
def bootstrapDirectXSDK
if !$directXSDKBootstrapped
bootstrapBuildToolsDirectory("DirectX/#{DIRECTX_VERSION}")
$directXSDKBootstrapped = true
$directXSDKBootstrapped.freeze
end
endObviously the intention is to only do something the first time it is called. Maybe some little reusable util? I have a number of different bootstrap functions I want to apply this to.
Cheers,
James
Could anyone suggest an elegant way of doing something like:
$directXSDKBootstrapped = false
def bootstrapDirectXSDK
if !$directXSDKBootstrapped
bootstrapBuildToolsDirectory("DirectX/#{DIRECTX_VERSION}")
$directXSDKBootstrapped = true
$directXSDKBootstrapped.freeze
end
end
One way of doing this is as follows:
class Proc
def runs(n)
wrapped, count = self, 0
lambda { |*args|
count += 1
count <= n ? wrapped.call(*args) : nil
}
end
end
foo = lambda { |arg| puts arg }.runs(3)
#=> #<Proc:0xb7d310dc@(irb):33>
foo['look!']
look!
=> nil
foo['look!']
look!
=> nil
foo['look!']
look!
=> nil
foo['look!']
=> nil
Notice nothing is printed the fourth time. So using this, you could write
you function as:
bootstrapDirectXSDK = lambda {
bootstrapBuildToolsDirectory("DirectX/#{DIRECTX_VERSION}")
}.runs(1)
Which will only allow its contents to be executed once.
--
James Coglan
$directXSDKBootstrapped = false
def bootstrapDirectXSDK
if !$directXSDKBootstrapped
bootstrapBuildToolsDirectory("DirectX/#{DIRECTX_VERSION}")
$directXSDKBootstrapped = true
$directXSDKBootstrapped.freeze
end
end
You could redefine bootstrapDirectXSDK:
$directXSDKBootstrapped = false
def bootstrapDirectXSDK
bootstrapBuildToolsDirectory("DirectX/#{DIRECTX_VERSION}")
$directXSDKBootstrapped = true
$directXSDKBootstrapped.freeze
def bootstrapDirectXSDK
end
end
Please do not hijack other threads.
Could anyone suggest an elegant way of doing something like:
$directXSDKBootstrapped = false
def bootstrapDirectXSDK
if !$directXSDKBootstrapped
bootstrapBuildToolsDirectory("DirectX/#{DIRECTX_VERSION}")
$directXSDKBootstrapped = true
$directXSDKBootstrapped.freeze
Freezing has no effect here because it does not prevent reassignment to the variable.
end
endObviously the intention is to only do something the first time it is called Maybe some little reusable util?I have a number of different bootstrap functions I want to apply this to.
Why can't you just invoke the initialization once and be done? If this is in a file which is required then Ruby will take care of this automatically.
Another solution:
class OnlyOnce
def initialize(&b)
raise "Need a block!" unless b
@block = b
end
def get
if @block
@val = block.call
@block = nil
end
@val
end
end
$directXSDKBootstrapped = OnlyOnce.new do
bootstrapBuildToolsDirectory("DirectX/#{DIRECTX_VERSION}")
end
Cheers
robert
On 08.04.2009 16:29, James French wrote:
sometimes, i apply ruby's nested methods feature...
eg,
botp@jedi-hopeful:~$ cat test.rb
def only_once_dumper
def only_once
end
end
def only_once
puts "i ran once!"
only_once_dumper
end
only_once
only_once
only_once
botp@jedi-hopeful:~$ ruby test.rb
i ran once!
botp@jedi-hopeful:~$
kind regards -botp
On Wed, Apr 8, 2009 at 10:29 PM, James French <James.French@naturalmotion.com> wrote:
Obviously the intention is to only do something the first time it is called. Maybe some little reusable util? I have a number of different bootstrap functions I want to apply this to.
I see I still have some way to go with ruby Nice! Can't believe how quick you knocked that up...
-----Original Message-----
From: James Coglan [mailto:jcoglan@googlemail.com]
Sent: 08 April 2009 15:43
To: ruby-talk ML
Subject: Re: performing an action only the first time a function called
Could anyone suggest an elegant way of doing something like:
$directXSDKBootstrapped = false
def bootstrapDirectXSDK
if !$directXSDKBootstrapped
bootstrapBuildToolsDirectory("DirectX/#{DIRECTX_VERSION}")
$directXSDKBootstrapped = true
$directXSDKBootstrapped.freeze
end
end
One way of doing this is as follows:
class Proc
def runs(n)
wrapped, count = self, 0
lambda { |*args|
count += 1
count <= n ? wrapped.call(*args) : nil
}
end
end
foo = lambda { |arg| puts arg }.runs(3)
#=> #<Proc:0xb7d310dc@(irb):33>
foo['look!']
look!
=> nil
foo['look!']
look!
=> nil
foo['look!']
look!
=> nil
foo['look!']
=> nil
Notice nothing is printed the fourth time. So using this, you could write
you function as:
bootstrapDirectXSDK = lambda {
bootstrapBuildToolsDirectory("DirectX/#{DIRECTX_VERSION}")
}.runs(1)
Which will only allow its contents to be executed once.
--
James Coglan
I like it, but you get a warning with -w...
-----Original Message-----
From: Leo [mailto:minilith@gmail.com]
Sent: 08 April 2009 16:43
To: ruby-talk ML
Subject: Re: performing an action only the first time a function called
$directXSDKBootstrapped = false
def bootstrapDirectXSDK
if !$directXSDKBootstrapped
bootstrapBuildToolsDirectory("DirectX/#{DIRECTX_VERSION}")
$directXSDKBootstrapped = true
$directXSDKBootstrapped.freeze
end
end
You could redefine bootstrapDirectXSDK:
$directXSDKBootstrapped = false
def bootstrapDirectXSDK
bootstrapBuildToolsDirectory("DirectX/#{DIRECTX_VERSION}")
$directXSDKBootstrapped = true
$directXSDKBootstrapped.freeze
def bootstrapDirectXSDK
end
end
I have to admit though, I don't understand the 'wrapped, count = self, 0' line...
-----Original Message-----
From: James French [mailto:James.French@naturalmotion.com]
Sent: 08 April 2009 16:13
To: ruby-talk ML
Subject: Re: performing an action only the first time a function called
I see I still have some way to go with ruby Nice! Can't believe how quick you knocked that up...
-----Original Message-----
From: James Coglan [mailto:jcoglan@googlemail.com]
Sent: 08 April 2009 15:43
To: ruby-talk ML
Subject: Re: performing an action only the first time a function called
Could anyone suggest an elegant way of doing something like:
$directXSDKBootstrapped = false
def bootstrapDirectXSDK
if !$directXSDKBootstrapped
bootstrapBuildToolsDirectory("DirectX/#{DIRECTX_VERSION}")
$directXSDKBootstrapped = true
$directXSDKBootstrapped.freeze
end
end
One way of doing this is as follows:
class Proc
def runs(n)
wrapped, count = self, 0
lambda { |*args|
count += 1
count <= n ? wrapped.call(*args) : nil
}
end
end
foo = lambda { |arg| puts arg }.runs(3)
#=> #<Proc:0xb7d310dc@(irb):33>
foo['look!']
look!
=> nil
foo['look!']
look!
=> nil
foo['look!']
look!
=> nil
foo['look!']
=> nil
Notice nothing is printed the fourth time. So using this, you could write
you function as:
bootstrapDirectXSDK = lambda {
bootstrapBuildToolsDirectory("DirectX/#{DIRECTX_VERSION}")
}.runs(1)
Which will only allow its contents to be executed once.
--
James Coglan
That's just parallel assignment, it's equivalent to:
wrapped = self
count = 0
2009/4/8 James French <James.French@naturalmotion.com>
I have to admit though, I don't understand the 'wrapped, count = self, 0'
line...
Ahh, thanks.
-----Original Message-----
From: James Coglan [mailto:jcoglan@googlemail.com]
Sent: 08 April 2009 16:45
To: ruby-talk ML
Subject: Re: performing an action only the first time a function called
2009/4/8 James French <James.French@naturalmotion.com>
I have to admit though, I don't understand the 'wrapped, count = self, 0'
line...
That's just parallel assignment, it's equivalent to:
wrapped = self
count = 0