मैं चाहता हूं कि मेरा रूबी प्रोग्राम विंडोज़ की तुलना में मैक पर अलग-अलग चीजें करे। मैं कैसे पता लगा सकता हूं कि मेरा प्रोग्राम किस सिस्टम पर चल रहा है?मैं कैसे देख सकता हूं कि मेरा रूबी प्रोग्राम किस ऑपरेटिंग सिस्टम पर चल रहा है?
उत्तर
या तो
irb(main):002:0> require 'rbconfig'
=> true
irb(main):003:0> Config::CONFIG["arch"]
=> "i686-linux"
या
irb(main):004:0> RUBY_PLATFORM
=> "i686-linux"
इसे और अधिक अनुकूल बनाने के लिए RUBY_PLATFORM
निरंतर उपयोग करें, और वैकल्पिक रूप से एक मॉड्यूल में लपेट:
module OS
def OS.windows?
(/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM) != nil
end
def OS.mac?
(/darwin/ =~ RUBY_PLATFORM) != nil
end
def OS.unix?
!OS.windows?
end
def OS.linux?
OS.unix? and not OS.mac?
end
end
यह सही नहीं है, लेकिन प्लेटफार्मों के लिए अच्छी तरह से काम करता है जो मैं विकास करता हूं, और विस्तार करना काफी आसान है।
एक मामला जहां यह काम नहीं करेगा यदि आप jruby का उपयोग कर रहे हैं।Jruby के लिए –
, आप अपने ओएस प्राप्त करने के लिए 'RbConfig :: CONFIG [" host_os "]' का उपयोग करके बेहतर हैं। – Pred
क्या कहीं भी ऐसा कुछ है जहां इस तरह की चीज एक मणि में पैक की जाती है, जिसका उपयोग प्रतिलिपि/चिपकाने या इसके बजाए किया जा सकता है? यदि हां, तो कहाँ? :) – lindes
Launchy मणि (gem install launchy
) का प्रयास करें:
require 'launchy'
Launchy::Application.new.host_os_family # => :windows, :darwin, :nix, or :cygwin
require 'rbconfig'
include Config
case CONFIG['host_os']
when /mswin|windows/i
# Windows
when /linux|arch/i
# Linux
when /sunos|solaris/i
# Solaris
when /darwin/i
#MAC OS X
else
# whatever
end
मुझे लगता है कि यह 'कॉन्फ़िगर :: कॉन्फिग [' host_os '] होना चाहिए ' – equivalent8
वास्तव में रूबी 2 में यह होना चाहिए 'आरबीकॉन्फिग :: अप्रचलित :: CONFIG [' host_os '] '... +' config' – equivalent8
'शामिल करने की आवश्यकता नहीं है' शामिल 'या दोनों प्रकार के मॉड्यूल बदलें, और फिर यह है सबसे अच्छा जवाब आईएमओ। ध्यान दें कि उन्होंने मॉड्यूल को कैसे शामिल किया था, इसलिए RbConfig या Config की आवश्यकता नहीं है। – Pred
जब मैं सिर्फ अगर यह एक विंडोज या यूनिक्स की तरह ओएस
is_unix = is_win = false
File::SEPARATOR == '/' ? is_unix = true : is_win = true
के लिए यह अक्सर पर्याप्त है पता करने की जरूरत
फ़ाइल :: SEPARATOR विंडोज़ में देता है, इसलिए यह – peter
काम नहीं करता है। अगर आप जानना चाहते हैं कि फ़ाइल विभाजक क्या है, तो 'फ़ाइल :: SEPARATOR' का उपयोग करें। रुबी में विकास की तरह मंच को बताने के लिए सबसे अच्छा है। लेकिन अगर आपको पता होना है कि मंच विंडोज है या नहीं, तो इसका अनुमान लगाने के बजाय सवाल पूछें। –
(चेतावनी: @ पीटर वैगनेट की टिप्पणी पढ़ें) मुझे यह पसंद है, अधिकांश लोग rubygems का उपयोग करते हैं, इसकी विश्वसनीय, क्रॉस प्लेटफ़ॉर्म है
irb(main):001:0> Gem::Platform.local
=> #<Gem::Platform:0x151ea14 @cpu="x86", @os="mingw32", @version=nil>
irb(main):002:0> Gem::Platform.local.os
=> "mingw32"
अद्यतन"Update! Addition! Rubygems nowadays..." साथ संयोजन के रूप में उपयोग कम करने के लिए जब Gem::Platform.local.os == 'java'
jruby पर यह सिर्फ "जावा" की रिपोर्ट करता है, इसलिए यदि आप किसी को भी जुर्बी चलाने की उम्मीद करते हैं तो यह पर्याप्त नहीं है। –
मैं मैदान के लिए और अधिक विकल्प जोड़ने के लिए एक दूसरे सवाल का जवाब है,। The os rubygem, और github page में संबंधित परियोजना सूची है।
require 'os' >> OS.windows? => true # or OS.doze? >> OS.bits => 32 >> OS.java? => true # if you're running in jruby. Also OS.jruby? >> OS.ruby_bin => "c:\ruby18\bin\ruby.exe" # or "/usr/local/bin/ruby" or what not >> OS.posix? => false # true for linux, os x, cygwin >> OS.mac? # or OS.osx? or OS.x? => false
हम निम्नलिखित कोड
def self.windows?
return File.exist? "c:/WINDOWS" if RUBY_PLATFORM == 'java'
RUBY_PLATFORM =~ /mingw32/ || RUBY_PLATFORM =~ /mswin32/
end
def self.linux?
return File.exist? "/usr" if RUBY_PLATFORM == 'java'
RUBY_PLATFORM =~ /linux/
end
def self.os
return :linux if self.linux?
return :windows if self.windows?
nil
end
अद्यतन के साथ अब तक काफी अच्छा कर रहे हैं! इसके अलावा! रूबीगेम्स आजकल Gem.win_platform?
के साथ जहाज।
Example usages in the Rubygems repo, और यह एक, स्पष्टता के लिए:
def self.ant_script
Gem.win_platform? ? 'ant.bat' : 'ant'
end
- 1. मैं कैसे निर्धारित करूं कि मेरा .NET विंडोज फॉर्म प्रोग्राम किस मॉनीटर पर चल रहा है?
- 2. मैं कैसे बता सकता हूं कि मेरा कोड मोनो पर चल रहा है?
- 3. मेरा SQL2008 उदाहरण किस पोर्ट पर चल रहा है?
- 4. प्रोग्राम कैसे निष्पादित करता है? ऑपरेटिंग सिस्टम कहां खेलता है?
- 5. एक ऑपरेटिंग सिस्टम प्रोग्राम कैसे करें?
- 6. मैं कैसे पता लगा सकता हूं कि मैं किस सिद्धांत का चल रहा हूं?
- 7. मैं कैसे निर्धारित कर सकता हूं कि मेरा .NET प्रोग्राम कितना मेमोरी उपयोग कर रहा है?
- 8. मैं कहां से सीख सकता हूं कि सी ++ प्रोग्राम ऑपरेटिंग सिस्टम (लिनक्स)
- 9. मैं कैसे जांच सकता हूं कि कोई प्रोग्राम पहली बार चल रहा है या नहीं?
- 10. मैं कैसे पता लगा सकता हूं कि मेरा कंसोल ऐप सी # के साथ किस निर्देशिका में चल रहा है?
- 11. मैं कैसे निर्धारित कर सकता हूं कि ऑपरेटिंग सिस्टम सी में POSIX है या नहीं?
- 12. क्या मैं देख सकता हूं कि टाइमर अभी भी चल रहा है या नहीं?
- 13. मैं कैसे देख सकता हूं कि कौन सी चाबियाँ सोचती हैं कि मैं मार रहा हूं?
- 14. मैं कैसे बता सकता हूं कि मैं जेआरबी बनाम रुबी से चल रहा हूं?
- 15. मेरा प्रोग्राम कैसे पता लगा सकता है कि यह किसी विशेष डोमेन पर चल रहा है या नहीं?
- 16. मैं कैसे जांच सकता हूं कि ऑपरेटिंग सिस्टम सन ओएस या यूनिक्स या सोलारिस है bashrc
- 17. मैं किस छोटे उपकरण पर प्रोग्राम कर सकता हूं?
- 18. मैं एक पर्ल प्रोग्राम से चल रहे प्रोग्राम के STDOUT को कैसे देख सकता हूं जिसे इसे कहा जाता है?
- 19. मैं गतिविधि मॉनिटर की तरह मैक पर प्रोग्राम सिस्टम से मुक्त सिस्टम मेमोरी कैसे देख सकता हूं?
- 20. चल रहे ऑपरेटिंग सिस्टम का पता कैसे लगाएं?
- 21. यह पता लगाने के लिए कि मेरा एएसपी.NET कोड किस खाते में चल रहा है?
- 22. मैं कैसे जांच सकता हूं कि कोई उपयोगकर्ता मेरी वेबसाइट देख रहा है, कुछ सामग्री नहीं देख सकता है, और मैं यह सुनिश्चित कैसे कर सकता हूं कि मेरा परीक्षण काम करता है?
- 23. मैं कैसे जांच सकता हूं कि एंड्रॉइड पर कोई ऐप चल रहा है या नहीं?
- 24. मैं कैसे जांचूं कि मेरा मल्टीथ्रेड कोड वास्तव में एकाधिक धागे पर चल रहा है?
- 25. मैं जीडब्ल्यूटी का उपयोग कर ऑपरेटिंग सिस्टम का पता कैसे लगा सकता हूं?
- 26. मैं कैसे पता लगा सकता हूं कि मेरा उपयोगकर्ता किस आईओएस डिवाइस का उपयोग कर रहा है?
- 27. मैं कैसे देख सकता हूं कि मैं टेलनेट में क्या टाइप कर रहा हूं?
- 28. जावा थ्रेड किस प्रोसेसर पर चल रहा है?
- 29. ओएस कैसे प्राप्त करें जिस पर PHP चल रहा है?
- 30. मैं कैसे देख सकता हूं कि मेरा ऐप अपने वीएम बजट से कितनी मेमोरी का उपयोग कर रहा है?
आप 'कॉन्फ़िग :: config [ 'host_os']' इसका मतलब यह नहीं है? –
"अप्रचलित और बहिष्कृत कॉन्फ़िगर के बजाय आरबीकॉन्फिग का उपयोग करें" => '' '' आरबीकॉन्फिग :: कॉन्फिग ["आर्क"] '' – jtzero
@jtzero यदि आप टिप्पणियों में अधिक पूर्ण उत्तर प्रदान करते हैं तो मैं 2008 में लिखे गए उत्तर को अपडेट करता हूं –