কোনও রত্ন অ্যাপ্লিকেশন কীভাবে রত্নটির কোনও সংস্করণ ব্যবহার করছে তা কীভাবে বলা যায়


116

আমি একটি রেল অ্যাপ্লিকেশন অনুসন্ধান করছি - প্রোড সার্ভারে একটি নির্দিষ্ট রত্নের দুটি সংস্করণ ইনস্টল করা আছে, আমি কীভাবে বলতে পারি যে প্রোড অ্যাপটি কোন সংস্করণটি ব্যবহার করছে?


আপনি কি রেলের কোন সংস্করণ, বা অন্য কোনও রত্নের কোন সংস্করণ জিজ্ঞাসা করছেন?
বিজে ক্লার্ক

1
কোন বিশেষ রত্নটির কোন সংস্করণ।
স্টিভ ব্রুয়ার

আমার কাছে বিক্রেতাদের / রত্নগুলির অধীনে একটি রত্ন হিমশীতল রয়েছে এবং তারপরে রত্নটির একটি নতুন সংস্করণ ডিফল্ট রত্নের স্থানে ইনস্টল করা আছে। আমি রেলপথের এমন কিছু থেকে সন্ধান করছি যা বলছে যে "আমি এই জায়গা থেকে এই রত্নটি লোড করেছি"।
স্টিভ ব্রুয়ার

উত্তর:


172

রেল 3 এবং 4 রেলগুলিতে ব্যবহার করুন bundle show

রেলস ২-এ, rake gemsকোন রত্ন, নির্ভরতা এবং সংস্করণগুলি ইনস্টল করা, হিমায়িত করা ইত্যাদি মুদ্রণ করবে


2
এটি কেবল তখনই কাজ করবে যদি পরিবেশ.আরবি ফাইলে নির্দিষ্ট মণিটি নির্দিষ্ট করা থাকে। যদি বিকাশকারীকে অন্য কোথাও এটির প্রয়োজন হয়, রকের রত্নগুলি কাজ করবে না।
জন হিল্যান্ড

(বা আপনার RAILS_ENV এর উপর নির্ভর করে কনফিগারেশন / পরিবেশ / * ফাইলগুলির মধ্যে একটিতে))
জন হিল্যান্ড

2
আপনি যদি তালিকাটি ফিল্টার করতে চান তবে bundle show | grep gem_nameকম্পাসের জন্য উদাহরণ করুন:bundle show | grep compass
অ্যাডাম ওয়েট

সুতরাং আপনি যখন বান্ডিল শো টাইপ করেন এবং "রেল ২.৩.১7" সহ সংস্করণ সহ আপনি রত্নগুলির একগুচ্ছ পান করেন তখন এর অর্থ কী এবং আপনি রকের রত্নগুলি টাইপ করেন এবং আপনি কোনও কিংবদন্তির মতো দেখতে পান (আমি = ইনস্টল করা ইত্যাদি) তবে কোনও রত্ন / সংস্করণ? আমার কি রেল সংস্করণ 2 আছে বা না? আমার কাছে রেল সংস্করণ 2 এবং আরও উন্নত বান্ডেল রয়েছে? এটি কি ভাল / খারাপ? (হ্যাঁ, আমি জানি রেলের এত পুরানো সংস্করণ থাকা খারাপ, আমি জানতে চাই এটা সর্বনাশা যেমন একটি বেমানান আছে (যদি এটি হয়) এর পাগল এবং bundler)।
ব্রেন্ডা জে বাটলার

39

আপনি যদি বান্ডলার ব্যবহার করেন তবে আপনি সংস্করণটি পেতে পারেন

bundle show [gemname]

আমি এই প্রশ্নে এসেছি কারণ আমি বান্ডিলারের দিকে যাওয়ার চেষ্টা করছি (সম্ভবত অনেক লোকও, কারণ হিরোকুকে এখন এটি প্রয়োজন)
গ্রিনএজজেড

এটি অবচয় করা হয়েছে। bundle info [gemname]পরিবর্তে ব্যবহার করুন।
কলিমার্কো

37

এই তথ্যটি খুঁজে পেতে এবং সাজানোর জন্য আমার প্রত্যাশার চেয়ে বেশি সময় লেগেছিল তাই আমি অন্যদের দেখার জন্য এটি এখানে এক জায়গায় পোস্ট করতে চেয়েছিলাম। আমিও ব্যান্ড 3 এর জন্য এটি কিছুটা স্পষ্ট করে বলতে চেয়েছিলাম:

  • স্ক্রিপ্ট / সম্পর্কে প্রতিস্থাপন করা হয়েছে rake about বিশদ এখানে । আপনি যদি আগ্রহী হন তবে রেল 3 এর জন্য সমস্ত কমান্ড লাইনের পরিবর্তনের একটি তালিকা সেগুলি এখানে পাওয়া যাবে

  • rake gems ails. রেলগুলিতে কাজ করে না Instead পরিবর্তে আপনার ব্যবহার করা উচিত bundle show

উদাহরণস্বরূপ, আপনি আপনার রত্নগুলির সমস্ত সংস্করণগুলি ফাইলের সাথে দেখার জন্য এটি সংরক্ষণ করতে পারেন:

gem list > all_gems.txt

এবং আপনি দেখতে পাচ্ছেন যে আপনার রেল অ্যাপগুলি কী সংস্করণগুলির সাথে ব্যবহার করছে:

bundle show > project_gems.txt

ভিমের মতো সম্পাদক ব্যবহার করে আপনি পরিবর্তনগুলি দেখতে সহজেই ভিমডিফ ব্যবহার করতে পারেন


6

এটি খুঁজে পাওয়ার সম্ভবত আরও একটি সরাসরি উপায় আছে তবে আপনি যদি কনসোলটি লোড করেন এবং এর মতো নির্দিষ্ট সংস্করণ প্রয়োজন হয় তবে:

gem 'RedCloth', '3.0.4'

এটি আপনাকে জানাবে যে ইতিমধ্যে কী সংস্করণ সক্রিয় রয়েছে:

=> Gem::LoadError: can't activate RedCloth (= 3.0.4, runtime) for [], already activated RedCloth-4.2.2

6

টার্মিনালে

  bundle show <gem-name>
  bundle show | grep <gem-name>

অথবা

  gem list | grep <gem-name>

উদাহরণ স্বরূপ:

  bundle show rails
  bundle show | grep rails

  gem list | grep rails

5

Gemfile.lockআপনার অ্যাপের মূল ডিরেক্টরিতে অবস্থিত একটি তালিকা রয়েছে ।

এই কারণে আমি Gemfile.lockআমার থেকে দূরে থাকি .gitignore। এটি যখন আমি রত্ন সংস্করণটি নির্দিষ্ট করতে ভুলে গিয়েছিলাম তখন এটি আমাকে একাধিকবার সাশ্রয় করেছে GemFileএবং একটি রত্ন ব্রেকিং পরিবর্তনের সাথে আপডেট হয়েছে।


4

ব্যবহার করার চেষ্টা করুন script/about। আপনার config/environment.rbএটি সম্পর্কে তথ্য আছে।

আপনার মধ্যে config/environment.rbআপনি কোনও নির্দিষ্ট gemঅ্যাপ্লিকেশনটির কোন সংস্করণ ব্যবহার করা উচিত তা নির্দিষ্ট করতে পারেন। তবে gemআপনার মেশিনে যদি কোনও একাধিক সংস্করণ ইনস্টল থাকে এবং আপনি সংস্করণটি নির্দিষ্ট না করেন তবে সেই রত্নটির সর্বশেষতম সংস্করণ অ্যাপ্লিকেশন দ্বারা ব্যবহৃত হবে।


3
gem list <gemname>

এটি সমস্ত মিলে যাওয়া রত্নগুলি প্রদর্শন করবে উদাহরণস্বরূপ যদি কেউ কিছু করে

gem list rack

তারপরে নিম্নলিখিত আউটপুট নিম্নলিখিত হবে

*** LOCAL GEMS ***

rack (1.6.4)
rack-mount (0.6.14)
rack-test (0.6.3, 0.6.2, 0.5.7)

2

script/aboutআপনি কীসের মূল রেল এবং রাক রত্নগুলি ব্যবহার করছেন সেগুলির কোনও সংস্করণ আপনাকে বলবে, তবে অন্য কিছু নয়। আদর্শভাবে, আপনি যদি সন্ধান করেন config/environment.rbতবে এমন একটি বিভাগ থাকা উচিত যা এটির মতো দেখাচ্ছে:

# Specify gems that this application depends on and have them installed with rake gems:install
# config.gem "bj"
# config.gem "hpricot", :version => '0.6', :source => "http://code.whytheluckystiff.net"
# config.gem "sqlite3-ruby", :lib => "sqlite3"
# config.gem "aws-s3", :lib => "aws/s3"

কোনও ভাগ্যের সাথেই, অ্যাপটির লেখক সেখানে প্রয়োজনীয় কোনও রত্ন এবং সংস্করণ অন্তর্ভুক্ত করবেন। যাইহোক, সংস্করণগুলি এই ফাইলে alচ্ছিক, এবং শেষ পর্যন্ত কোনও অনভিজ্ঞ বিকাশকারীকে require 'rubygems'; require 'some_random_thing'কোনও প্রদত্ত ফাইলের শীর্ষে কেবল থাপ্পড় দেওয়া থেকে থামায় না ।

যদি আপনি দেখতে পান যে কোনও রত্নের প্রয়োজন রয়েছে তবে কোনও সংস্করণ নির্দিষ্ট করা হয়নি, আপনি gem listসিস্টেমে সমস্ত রত্নের সমস্ত সংস্করণ দেখতে টাইপ করতে পারেন। ডিফল্টরূপে এটি উপলব্ধ সর্বশেষতমটি ব্যবহার করবে।


আপনার লিপি / সম্পর্কে রত্ন সম্পর্কে আপনাকে বলুন? খনি কেবল আমাকে বলে যে আমি রুবি, রেল এবং পরিবেশের কোন সংস্করণ ব্যবহার করছি।
বিজে ক্লার্ক

ডানদিকে, রেলগুলি (এবং র্যাক) উভয় রত্ন, এবং স্ক্রিপ্ট / সম্পর্কে আপনাকে জানাবে যে সেগুলির মূল সংস্করণগুলি (অ্যাক্টিভসপোর্ট, ইত্যাদি) এর সাথে কী কী সংস্করণগুলি চলছে তা কিন্তু এটি আপনাকে অন্য কোনও রত্ন সম্পর্কে বলবে না। দুঃখিত যদি এটি পরিষ্কার না ছিল।
জন হিল্যান্ড 14

1
bundle exec gem which gem_name

সম্ভবত আপনি যা ব্যবহার করতে পারেন:

$ bundle exec gem which rails
/Users/xxxx/.rvm/gems/ruby-2.1.2@gemset/gems/railties-4.1.7/lib/rails.rb

আমি একটি স্বেচ্ছাসেবক ফোল্ডারে বিশ্বব্যাপী ইনস্টল করা রত্নটির কোন সংস্করণ কার্যকর করা হয়েছিল সে সম্পর্কে তথ্য সন্ধান করছিলাম এবং এটি আমাকে বিশ্বাস করেছিল যে সঠিক সমাধান -gem which gem_name
করি

1

আপনার মত লেখার জন্য বান্ডেল শো রত্নের নাম আই

bundle show devise

এবং এটি বর্তমান রত্ন সংস্করণটি মুদ্রণ করবে।


0

স্থানীয় রত্নের জন্য এটি ব্যবহার করে দেখুন:

gem list gemname | grep -P '(^|\s)\Kgemname(?=\s|$)'

আপনি যদি বান্ডেল ব্যবহার করেন:

bundle exec gem list gemname | grep -P '(^|\s)\Kgemname(?=\s|$)'

0

নতুন সংস্করণে, ব্যবহৃত bundle show gem_name

[DEPRECATED] use `bundle info gem_name` instead of `bundle show gem_name`

0

আপনি যদি বান্ডলার ব্যবহার করেন তবে আপনি ব্যবহার করে সংস্করণটি পেতে পারেন:

bundle info [gemname]

-8

জেমফাইলে উত্তরটি থাকা উচিত:

gem 'rails', '4.0.0.rc1'

2
Gemfileসর্বদা স্পষ্টভাবে কোনও সংস্করণ নম্বর ঘোষণা করবেন না।
তাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.