আপনি ইতিমধ্যে এক্স সক্রিয় করেছেন, তবে আপনার গেমফিলের জন্য ওয়াই প্রয়োজন


128

দৌড়ানোর সময় rakeআমি এই ত্রুটিটি পাই:

আপনি ইতিমধ্যে রেক 0.9.2 সক্রিয় করেছেন, তবে আপনার গেমফিলের জন্য রেক 0.8.7 প্রয়োজন। বান্ডেল এক্সেক ব্যবহার বিবেচনা করুন।

bundle exec rakeপরিবর্তে কেবল ব্যবহার rakeকরা কাজ করে মনে হচ্ছে, তবে এটি ঠিক করার সর্বোত্তম উপায়?


আরভিএমকে এমন দুর্দান্ত সরঞ্জাম তৈরি করে তোলে । এটি আপনাকে এই প্রতিটি প্রকল্পের জন্য আলাদা আলাদা রত্ন স্থাপনের অনুমতি দেবে যাতে আপনাকে আবার এটি ঘটতে ভাবতে হবে না।
আরএম-আরএফ

উত্তর:


84

bundle exec এটি করার সঠিক উপায়টি ব্যবহার করা

মূলত যা ঘটছে তা হ'ল আপনি রেকটিকে ০.৯.২ এ আপডেট করেছেন যা এখন আপনার জেমফাইলে উল্লিখিত সংস্করণটির সাথে সাংঘর্ষিক। পূর্বে আপনার সর্বশেষতম সংস্করণটি rakeআপনার জেমফাইলে সংস্করণটির সাথে মিলেছে, সুতরাং সহজভাবে ব্যবহার করার সময় আপনি কোনও সতর্কতা পেলেন না rake

ইহুদা কাটজ (মূল বান্ডলার বিকাশকারীদের মধ্যে একটি) এই সমস্ত এই ব্লগ পোস্টে ব্যাখ্যা করে ।

bundle exec ...সর্বদা টাইপ করা এড়াতে , আপনি বান্ডলারের সাথে সাধারণত ব্যবহৃত কমান্ডগুলির জন্য আপনার শেলটিতে একটি উপাধ বা ফাংশন সেট আপ করতে পারেন। উদাহরণস্বরূপ এটি আমি যা রেকের জন্য ব্যবহার করি:

$ type bake
bake is a function
bake () 
{ 
    bundle exec rake "$@"
}

5
ব্লগ পোস্টটি আসলে খুব বেশি ব্যাখ্যা করে না। আসল প্রশ্নটি হ'ল: কুমারী রুবি কেন সঠিক নির্ভরতা পায় না এবং তারপরে ভুলগুলি থাকার বিষয়ে কেন অভিযোগ করবেন?
ওথিয়াস

64

আপনার যদি রকের বর্তমান সংস্করণটি রাখার কোনও কারণ থাকে (বা অন্য যে কোনও রত্নই সমস্যা সৃষ্টি করছে), ম্যাটটি সঠিক, এটি করার সর্বোত্তম উপায়টি চালানো bundle exec। এটি আপনি যে মণি ইনস্টল করেছেন তার নতুন সংস্করণটি ব্যবহার করার পরিবর্তে আপনার জেমফাইলে বর্ণিত সংস্করণটি ব্যবহার করে। (নাথান.ফ 77 এর নীচে একটি ভাল সমাধান রয়েছে যদি আপনি প্রতিবার রেক bundle execচালানোর সময় টাইপ করতে না চান )

অন্যথায়, যদি রাকে আপডেট না করার কোনও কারণ না থাকে তবে আপনি চালাতে পারেন

bundle update rake

এটি bundle execপ্রতিবার চালানোর পরিবর্তে রকের নতুন সংস্করণটি ব্যবহার করতে আপনার জেমফিল.লকটি আপডেট করবে ।

দ্রষ্টব্য: আপনি যদি এটি চালান তবে এটি কেবল bundle updateরেকের পরিবর্তে আপনার জেমফাইলে সমস্ত রত্ন আপডেট করবে, যা সম্ভবত আপনি চান তা নয়, কারণ আপনার অ্যাপ্লিকেশনটিতে কোনও কিছু ভেঙে গেলে আপনি জানতে পারবেন না যে কোন রত্ন আপডেটটি এটি ঘটায়।


পুরানো সংস্করণটি ব্যবহার না করে রাখার কম প্রস্তাবিত উপায় bundle exec হ'ল রকের নতুন সংস্করণগুলি আনইনস্টল করা।

m রত্ন আনইনস্টল রেক

আনইনস্টল করার জন্য মণি নির্বাচন করুন:
 1. রেক-0.8.7
 2. রেক-0.9.2
 3. সমস্ত সংস্করণ
> 2
সাফল্যের সাথে আনইনস্টল করা রেক -০.৯.২

এটি কাজ করে, তবে আপনি যদি একাধিক অ্যাপ্লিকেশনগুলির সাথে কাজ করছেন যা রকের বিভিন্ন সংস্করণ ব্যবহার করে তবে এটি একটি ব্যথা হতে পারে কারণ আপনি নিজেকে ক্রমাগত বিভিন্ন সংস্করণ ইনস্টল করতে এবং আনইনস্টল করতে দেখবেন।


এটি আমার পক্ষে কাজ করেছে। কিছু কারণে, কেবলমাত্র একটি সংস্করণ (0.8.7) ইনস্টল করা আছে। তাই আগে করলাম gem install rake। তারপরে gem uninstall rakeএবং বেছে নিন 0.9.2।
বি সেভেন

7
bundle updateএছাড়াও উপলব্ধ সর্বশেষতম সংস্করণে বর্ণিত সংস্করণ ছাড়া কোনও রত্ন আপডেট করবে। আপনি যা চান তা তা নাও হতে পারে। bundle update rakeআরও পছন্দ হবে।
অ্যালেক্স নেথ

public_suffixপরিবর্তে আমার একই সমস্যা আছে rakebundle update public_suffixদুর্ভাগ্যক্রমে দৌড়ানোর কোনও প্রভাব নেই।
দিমিত্রি জইতসেভ

53

চেষ্টা bundle clean --force

এটি এই বান্ডলে না থাকা প্রতিটি সিস্টেম মণি সরিয়ে দেয়


13

আমার সাথে শেষবারের মতো, আমি আমার সমস্ত রত্ন আপডেট করেছি updated আমি একটি করেছি gem uninstall rakeএবং এটি সংস্করণ বিকল্পগুলি তালিকাভুক্ত করেছে। আমি নতুনটিকে বেছে নিয়েছি এবং তারপরে আমাকে bundle execআর ব্যবহার করতে হবে না।

মূলত, আপনি যদি bundle execএটি ব্যবহার করেন তবে আপনার বান্ডিল দ্বারা ইনস্টল থাকা রত্ন সংস্করণটি যা ব্যবহার করে তাই জেমফাইলে কী রয়েছে। bundle execএটি ছাড়াই আপনার সিস্টেমের ডিফল্ট সংস্করণটি ব্যবহার করে।


8

ওহ! কাটজ নিবন্ধটি দুর্দান্ত!

আমি এই সমাধানটি সবচেয়ে পছন্দ করি:

bundle install --binstubs

যাতে আপনি এখন টাইপ করতে পারেন

bin/rake .stuff.

আমার মতো কারও জন্য যিনি ২.৩ এবং ৩.০.৯ অ্যাপ্লিকেশন বিকাশ করছেন, এটি আমাকে অনেক বেশি ভাল বোধ করে।


8

bundle exec সঠিক, তবে আপনি প্রতিবার এটি টাইপ করতে চান না।

আপনি এটি আপনার .bashrc এ রাখতে পারেন:

# Automatically invoke bundler for rake, if necessary.
rake() { if [ -e ./Gemfile.lock ]; then bundle exec rake "$@"; else /usr/bin/env rake "$@"; fi; }

স্পষ্ট করতে, .bashrc ফাইলটি সম্ভবত আপনার হোম ডিরেক্টরিতে [~ / .bashrc] এ অবস্থিত। আপনি যখন নতুন টার্মিনাল উইন্ডো খুলবেন তখনই এই ফাইলটি লোড হবে।
রায়ান

0

প্রতিবার এটি টাইপ না করার আরেকটি উপায় হ'ল একটি মেকফিল সহ, উদাহরণস্বরূপ

rake :
    bundle exec rake
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.