আমি চাই আমার রুবি প্রোগ্রামটি উইন্ডোজের চেয়ে ম্যাকের জন্য বিভিন্ন জিনিস করুক। আমার প্রোগ্রামটি কোন সিস্টেমে চলছে তা আমি কীভাবে জানতে পারি?
আমি চাই আমার রুবি প্রোগ্রামটি উইন্ডোজের চেয়ে ম্যাকের জন্য বিভিন্ন জিনিস করুক। আমার প্রোগ্রামটি কোন সিস্টেমে চলছে তা আমি কীভাবে জানতে পারি?
উত্তর:
RUBY_PLATFORM
ধ্রুবকটি ব্যবহার করুন এবং এটি আরও বন্ধুত্বপূর্ণ করতে optionচ্ছিকভাবে একটি মডিউলে মোড়ানো:
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
def OS.jruby?
RUBY_ENGINE == 'jruby'
end
end
এটি নিখুঁত নয়, তবে যে প্ল্যাটফর্মগুলির উপরে আমি উন্নয়ন করি তার পক্ষে ভাল কাজ করে এবং এটি প্রসারিত করার পক্ষে যথেষ্ট সহজ।
RbConfig::CONFIG["host_os"]
নিজের ওএস পাওয়ার জন্য আরও ভাল ।
(সতর্কতা: @ পিটার ওয়াগনেটের মন্তব্য পড়ুন) আমি এটি পছন্দ করি, বেশিরভাগ মানুষ রুবিজেম ব্যবহার করে , এটি নির্ভরযোগ্য, ক্রস প্ল্যাটফর্ম
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"
আপডেটের সাথে ব্যবহার "আপডেট করুন! সংযোজন! Rubygems আজকাল ..." যখন প্রশমিতGem::Platform.local.os == 'java'
হয়
irb(main):002:0> require 'rbconfig'
=> true
irb(main):003:0> Config::CONFIG["arch"]
=> "i686-linux"
বা
irb(main):004:0> RUBY_PLATFORM
=> "i686-linux"
Config::CONFIG[‘host_os’]
?
RbConfig::CONFIG["arch"]
irb(main):002:0> require 'rbconfig' => false
(irb):10:in
irb_binding ': অপ্রচলিত এবং অবহেলিত কনফিগারেশনের পরিবর্তে আরবিকনফিগ ব্যবহার করুন `সুতরাং আমি এটি ব্যবহার করেছি RbConfig::CONFIG.each
এবং সমস্ত ভিন্ন মান তালিকাভুক্ত করেছি। আপনি যা খুঁজছেন তা পেতে আপনাকে সেখানে কিছু পেতে পারেন।
লড়াইয়ে আরও বিকল্প যুক্ত করতে আমার একটি দ্বিতীয় উত্তর আছে। ওস রুবিজেম এবং তাদের গিথুব পৃষ্ঠায় সম্পর্কিত প্রকল্পগুলির তালিকা রয়েছে।
'ওএস' প্রয়োজন >> ওএস.ওয়াইন্ডোস? => সত্য # বা OS.doze? >> ওএস.বিটস => 32 >> ওএস.জভা? => সত্য # আপনি যদি জুরবিতে চলছেন। ওএস.জ্রুবি? >> OS.ruby_bin => "সি: \ রুবি 18 \ বিন \ রুবি.এক্সই" # বা "/ ইউএসআর / লোকাল / বিন / রুবি" বা কী না >> ওএস.পোসিক্স? => লিনাক্স, ওএস এক্স, সিগউইনের ক্ষেত্রে # মিথ্যা >> ওএস.ম্যাক? # বা OS.osx? বা ওএস.এক্স? => মিথ্যা
লঞ্চি রত্নটি চেষ্টা করুন ( 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
case Config::CONFIG['host_os']
?
RbConfig::Obsolete::CONFIG['host_os']
... অন্তর্ভুক্ত করা কোন প্রয়োজনConfig
include
উভয় প্রকারের মডিউল পরিবর্তন করুন এবং তারপরে এটিই সেরা উত্তর আইএমও। লক্ষ্য করুন যে তিনি কীভাবে include
মডিউল ছিলেন তাই আরবিসিফিগ বা কনফিগার করার প্রয়োজন নেই।
হালনাগাদ! যোগ! রুবিজেমস আজকাল জাহাজ নিয়ে Gem.win_platform?
।
স্পষ্টতার জন্য রুবিজেমস রেপোতে ব্যবহারের উদাহরণ এবং এটির উদাহরণ :
def self.ant_script
Gem.win_platform? ? 'ant.bat' : 'ant'
end
আমরা নিম্নলিখিত কোডটি সহ এখনও পর্যন্ত বেশ ভাল করে যাচ্ছি
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::Platform.local.os
# => উদা। "মিংডব্লিউ 32", "জাভা", "লিনাক্স", "সাইগউইন", "আইিক্স", "ডালভিক" ( কোড )Gem.win_platform?
# => উদা। সত্য, মিথ্যা ( কোড )আমি এবং আমার পরিচিত প্রতিটি প্ল্যাটফর্মের চেক স্ক্রিপ্ট উভয়ই এই অন্তর্নিহিত ভেরিয়েবলগুলির ব্যাখ্যার উপর ভিত্তি করে:
RbConfig::CONFIG["host_os"]
# => উদা। "লিনাক্স-gnu" (কোড 1 , 2 )RbConfig::CONFIG["arch"]
# => উদা। "i686-linux", "i386-linux-gnu" ( রুবি ইন্টারপ্রেটার সংকলন করার পরে প্যারামিটার হিসাবে পাস হয়েছে )RUBY_PLATFORM
# => উদা। "i386-linux-gnu", "ডারউইন" - নোট করুন যে এটি JRuby এ "জাভা" দেয়! ( কোড )
/cygwin|mswin|mingw|bccwin|wince|emx/
RUBY_ENGINE
# => উদা। "রুবি", "জুরবি"আপনি যদি নির্ভরতা মনে না করেন এবং আরও কিছু ব্যবহারকারী-বান্ধব কিছু চান তবে গ্রন্থাগারগুলি উপলব্ধ। বিশেষ করে, অপারেটিং সিস্টেম অফার পদ্ধতি পছন্দ OS.mac?
বা OS.posix?
। প্ল্যাটফর্ম বিভিন্ন ইউনিক্স প্ল্যাটফর্মের মধ্যে ভাল পার্থক্য করতে পারে। Platform::IMPL
ফিরে আসবে, যেমন। : লিনাক্স,: ফ্রিবিএসডি,: নেটবিএসডি,: এইচপিক্স। sys-uname এবং sysinfo একই রকম। ইউটিইনফো অত্যন্ত বেসিক, এবং উইন্ডোজ, ম্যাক এবং লিনাক্সের বাইরে যে কোনও সিস্টেমে ব্যর্থ হবে।
আপনি যদি বিভিন্ন লিনাক্স বিতরণের মতো নির্দিষ্ট সিস্টেমের বিশদ সহ আরও উন্নত গ্রন্থাগারগুলি চান তবে রুবিতে লিনাক্স বিতরণ সনাক্তকরণের জন্য আমার উত্তরটি দেখুন ।
RUBY_PLATFORM
বা RbConfig::CONFIG["host_os"]
জনবহুল করছে। কোডটি দেখছেন, এটি এখনও আমার কাছে পরিষ্কার নয়।
আমি যখন কেবল উইন্ডোজ বা ইউনিক্স-এর মতো ওএস কিনা তা জানতে গেলে এটি প্রায়শই যথেষ্ট
is_unix = is_win = false
File::SEPARATOR == '/' ? is_unix = true : is_win = true
File::SEPARATOR
। রুবির উন্নয়নের মতো প্ল্যাটফর্মটিকে হাঁস-টাইপ করা ভাল। প্ল্যাটফর্মটি উইন্ডোজ কিনা তা যদি আপনাকে জানতে হয় তবে এটি অনুমিত করার চেষ্টা করার পরিবর্তে প্রশ্ন জিজ্ঞাসা করুন।