ইনস্টল করা রত্নগুলির তালিকা পেতে আমি কল করতে পারি এমন কোনও রুবি পদ্ধতি আছে?
আমি এর আউটপুট পার্স করতে চান gem list
। এটি করার আলাদা উপায় আছে কি?
ইনস্টল করা রত্নগুলির তালিকা পেতে আমি কল করতে পারি এমন কোনও রুবি পদ্ধতি আছে?
আমি এর আউটপুট পার্স করতে চান gem list
। এটি করার আলাদা উপায় আছে কি?
উত্তর:
জহর কমান্ডটি এখন রুবি ১.৯++ এর সাথে অন্তর্ভুক্ত রয়েছে এবং এটি রুবি প্রি-১.৯ এর একটি স্ট্যান্ডার্ড সংযোজন।
require 'rubygems'
name = /^/i
dep = Gem::Dependency.new(name, Gem::Requirement.default)
specs = Gem.source_index.search(dep)
puts specs[0..5].map{ |s| "#{s.name} #{s.version}" }
# >> Platform 0.4.0
# >> abstract 1.0.0
# >> actionmailer 3.0.5
# >> actionpack 3.0.5
# >> activemodel 3.0.5
# >> activerecord 3.0.5
তালিকা পেতে একটি আপডেট উপায় এখানে:
require 'rubygems'
def local_gems
Gem::Specification.sort_by{ |g| [g.name.downcase, g.version] }.group_by{ |g| g.name }
end
কারণ local_gems
নির্ভর করে group_by
, এটি রত্নগুলির একটি হ্যাশ ফেরত দেয়, যেখানে মূলটি রত্নটির নাম এবং মানটি রত্ন বৈশিষ্ট্যের একটি অ্যারে। মানটি সেই মণির উদাহরণগুলির একটি অ্যারে যা ইনস্টল করা আছে, সংস্করণ নম্বর অনুসারে বাছাই করা।
এটি এর মতো কাজগুলি করা সম্ভব করে তোলে:
my_local_gems = local_gems()
my_local_gems['actionmailer']
# => [Gem::Specification.new do |s|
# s.authors = ["David Heinemeier Hansson"]
# s.date = Time.utc(2013, 12, 3)
# s.dependencies = [Gem::Dependency.new("actionpack",
# Gem::Requirement.new(["= 4.0.2"]),
# :runtime),
# Gem::Dependency.new("mail",
# Gem::Requirement.new(["~> 2.5.4"]),
# :runtime)]
# s.description = "Email on Rails. Compose, deliver, receive, and test emails using the familiar controller/view pattern. First-class support for multipart email and attachments."
# s.email = "david@loudthinking.com"
# s.homepage = "http://www.rubyonrails.org"
# s.licenses = ["MIT"]
# s.name = "actionmailer"
# s.require_paths = ["lib"]
# s.required_ruby_version = Gem::Requirement.new([">= 1.9.3"])
# s.requirements = ["none"]
# s.rubygems_version = "2.0.14"
# s.specification_version = 4
# s.summary = "Email composition, delivery, and receiving framework (part of Rails)."
# s.version = Gem::Version.new("4.0.2")
# end]
এবং:
puts my_local_gems.map{ |name, specs|
[
name,
specs.map{ |spec| spec.version.to_s }.join(',')
].join(' ')
}
# >> actionmailer 4.0.2
...
# >> arel 4.0.1,5.0.0
...
# >> ZenTest 4.9.5
# >> zucker 13.1
শেষ উদাহরণটি gem query --local
কমান্ড-লাইনের অনুরূপ , কেবলমাত্র কোনও বিশেষ রত্নের নির্দিষ্টকরণের জন্য আপনার কাছে সমস্ত তথ্য অ্যাক্সেস থাকে।
এটি আমি ইনস্টল করা সমস্ত রত্ন তালিকাভুক্ত।
gem query --local
http://guides.rubygems.org/command-reference/#gem-list
সমস্ত ইনস্টল করা রত্নের তালিকা 2.7 দেখুন
gem list
।
gem list
আমার যা প্রয়োজন তা হুবহু করেছে, এবং সিএলআই-এ থাকাকালীন এটি স্মরণ করা অনেক সহজ এবং সহজ। এত কিছু আদেশ একটি কাজ করার জন্য কেন?
উভয়
gem query --local
এবং
ruby -S gem list --local
69 এন্ট্রি তালিকা
যদিও
ruby -e 'puts Gem::Specification.all_names'
আমাকে 82 দেয়
আমি wc -l
নম্বর পেতে ব্যবহৃত । নিশ্চিত কিনা এটি চেক করার সঠিক উপায় কিনা। পাঠ্য ফাইলগুলিতে আউটপুটটিকে পুনর্নির্দেশের চেষ্টা করেছিল এবং পৃথক করে কিন্তু এটি সাহায্য করেনি - একে একে ম্যানুয়ালি তুলনা করতে হবে।
ruby
কমান্ডটি পৃথক লাইনে প্রতিটি রত্ন সংস্করণ তালিকাভুক্ত করে। জন্য উদাহরণ: sass (3.3.14, 3.3.7, 3.3.6, 3.2.19)
বনাম sass-3.3.14
, sass-3.3.7
, sass-3.3.6
, sass-3.2.19
যুগে যুগে এটির জন্য একটি পদ্ধতি ছিল:
ruby -e 'puts Gem::Specification.all_names'
Gem::Specification.map {|a| a.name}
তবে, যদি আপনার অ্যাপ্লিকেশন বান্ডিলার ব্যবহার করে তবে এটি কেবল নির্ভর স্থানীয় রত্নগুলির তালিকা ফিরিয়ে দেবে । সমস্ত ইনস্টল করার জন্য:
def all_installed_gems
Gem::Specification.all = nil
all = Gem::Specification.map{|a| a.name}
Gem::Specification.reset
all
end
NoMethodError: undefined method
কোন দেয় ? ' শূন্যতার জন্য: নীলক্লাস` যখন আমি এটি ব্যবহার করি (ক rails console
)।
এই কোডটি ব্যবহার করুন (কনসোল মোডে):
Gem::Specification.all_names
সমস্ত রত্নগুলির সংস্করণ, হোমপেজ এবং বিবরণ সহ মুদ্রণের জন্য এখানে একটি দুর্দান্ত একটি লাইনার রয়েছে:
Gem::Specification.sort{|a,b| a.name <=> b.name}.map {|a| puts "#{a.name} (#{a.version})"; puts "-" * 50; puts a.homepage; puts a.description; puts "\n\n"};nil
টার্মিনালে এটি ব্যবহার করে দেখুন:
ruby -S gem list --local
আপনার ডিবাগারের মধ্যে থেকে $LOAD_PATH
আপনার রত্নগুলির একটি তালিকা পেতে টাইপ করুন। আপনার যদি কোনও ডিবাগার না থাকে তবে পিসি ইনস্টল করুন:
gem install pry
pry
Pry(main)> $LOAD_PATH
এটি আপনার ইনস্টল করা রত্নগুলির একটি অ্যারে আউটপুট দেবে।