জেমফাইলে রুবিজেম নির্দিষ্ট করার সময় ~> এবং> = এর মধ্যে পার্থক্য কী?


120

আমি প্রায়শই জেমফাইলে নীচের স্বরলিপিটি (~>) দেখতে পাই।

gem "cucumber", "~>0.8.5"
gem "rspec", "~>1.3.0"

আমি জানি যে চিহ্নটি (> =) কেবল তার চেয়ে বড় বা সমান, তবে (~>) স্বরলিপিটি কী বোঝায়? তারা উভয় একই বা কোন উল্লেখযোগ্য পার্থক্য আছে?



28
~>কখনও কখনও "স্পার্মি অপারেটর" বলা হয়।
অ্যান্ড্রু গ্রিম

3
আপনি কি আপনার জেমফাইলে রুবি সংস্করণের জন্য একটি পরিসীমা নির্দিষ্ট করতে পারেন? উদাহরণস্বরূপruby "~>2.0"
ডেনিস


: এখানে @Dennis আপনার প্রশ্নের উত্তর stackoverflow.com/a/23116552/6359753
হেনরি ইয়াং

উত্তর:


165

এটি একটি হতাশাবাদী সংস্করণের সীমাবদ্ধতা । রুবিগেমস প্রদত্ত সংস্করণে শেষ সংখ্যাটি বাড়িয়ে দেবে এবং এটি সর্বাধিক সংস্করণে না পৌঁছা পর্যন্ত ব্যবহার করবে। সুতরাং ~>0.8.5শব্দার্থগতভাবে সমতূল্য:

gem "cucumber", ">=0.8.5", "<0.9.0"

এ সম্পর্কে ভাবার সহজ উপায় হ'ল আপনি শেষ সংখ্যাটি কিছু স্বেচ্ছাচারিত মানের সাথে বাড়িয়ে তোলেন ঠিকই, তবে স্ট্রিংয়ের পূর্ববর্তীটিগুলি আপনি সরবরাহ করেছেন তার চেয়ে বড় হতে পারে না। সুতরাং এর জন্য ~>0.8.5, কোনও মান তৃতীয় অঙ্কের (5) এর জন্য গ্রহণযোগ্য হবে তবে শর্ত থাকে যে এটি 5 এর চেয়ে বড় বা সমান, তবে শীর্ষস্থানীয় 0.8 অবশ্যই "0.8" হতে হবে।

আপনি এটি করতে পারেন, উদাহরণস্বরূপ, যদি আপনি মনে করেন যে 0.9 সংস্করণটি কিছু ব্রেকিং পরিবর্তন বাস্তবায়ন করতে চলেছে তবে আপনি জানেন যে পুরো 0.8.x প্রকাশের সিরিজটি কেবল বাগফিক্স।

তবে, কেবল ব্যবহারে ">=0.8.5"ইঙ্গিত পাওয়া যায় যে 0.8.5 এর পরে (বা সমান) এর পরে কোনও সংস্করণ গ্রহণযোগ্য। উপরের কোন বাউন্ড নেই।


ব্যাকবোন অন অন রেলের মতো সংস্করণে চার অঙ্ক ব্যবহার করে এমন রত্নগুলির সাথে এটি কীভাবে আচরণ করবে ?
জেজেডি

2
@ জেজেডি: এটি মূলত একই আচরণ হওয়া উচিত। চারটির শেষ ~>0.9.2.3সংখ্যাটি বাউন্ড ছাড়াই বাড়ানো যেতে পারে তবে তৃতীয়টি তা করবে না (সুতরাং v0.9.2.4 বা v0.9.2.23 তবে v0.9.3.0 এর জন্য অনুমতি দেবে না)। সীমাবদ্ধতায় যদি আপনি কেবল 3 ডিজিট নির্দিষ্ট করেছেন তবে চতুর্থটি মূলত অপ্রাসঙ্গিক হবে - এটি কেবলমাত্র আপনার নির্দিষ্ট প্রথম তিনটির উপর ভিত্তি করে সীমাবদ্ধ ~>0.9.2থাকবে (উদাহরণস্বরূপ , 0.9.xy সিরিজের মধ্যে যে কোনও কিছু গ্রহণ করবে, নির্বিশেষে বাধাটি yহ'ল) যে 9 বৃদ্ধি করা যাবে না)।
ওনাররেটিস

3
এই নিয়মের ব্যতিক্রম আছে যে "রুবিগেমস সংস্করণে শেষ সংখ্যাটি বাড়িয়ে তুলবে" যদিও: আপনি যখন একটি অঙ্ক সরবরাহ করেন। আপনি "4> 4" এর অর্থ "যে কোনও সংস্করণ 4 বা উচ্চতর" হওয়া প্রত্যাশা করতে পারেন, তবে এটি তাই নয় , তাই সাবধান হন।
hlascelles

2
0.1> 0.1 বনাম ~> 0.1.0 সম্পর্কে কী? যদি আমরা এটিকে "কিছু স্বেচ্ছাচারিত মানতে শেষ সংখ্যাটি বাড়িয়ে দিয়ে ঠিক হয়েছি" বলে মনে করি তবে ~> ০.০>> ০.০.০ <1.0.0 এ অনুবাদ হয় while> ০.০.০>> ০.০.০ < 0.2.0। এটা কি ঠিক?
ওয়েই

যখন আমি একটি গিটহাব প্রকল্প দেখি যার জন্য এটি রুবি প্রয়োজন> = 2.4.4, তখন আমি কী ধরে নিতে পারি যে তারা 2.5.0 এবং এমনকি রুবি 3 সহ 2.4.4 এর পরে সমস্ত রুবি সমর্থন করে? বা আমাদের কী নিরাপদ খেলতে হবে (অর্থাত্ তারা ভাবনার পরিবর্তে তারা ২.৪.৪ সহ সকল রুবিকে সমর্থন করবে), আমার মনে করা উচিত তাদের বোঝানো উচিত তারা ২.৪.৪ এর আগে কোনও রুবিকে সমর্থন করবেন না)?
হেনরি ইয়াং

3

@ মিলিসামি আপনি জেমস্পেকের সাথে নির্ভরতা যুক্ত করতে এই জাতীয় হতাশাবাদী বাধা ব্যবহার করে ব্যবহার করতে পারেন:

gem.add_runtime_dependency "thor", "~> 0.18.1"

আপনি যদি রত্ন বিকাশের বিষয়ে বেশি কিছু জানেন না বা কেবল এটিতে প্রবেশ করছেন তবে এগুলি কয়েকটি ভাল উল্লেখ রয়েছে:

  1. টিউটোরিয়াল যা আপনাকে আপনার নিজের রুবিগেম কীভাবে তৈরি করতে হয়, এর সাথে সম্পর্কিত মানক অনুশীলনগুলি এবং কীভাবে এটি আপলোড করা যায় যাতে অন্যরা এটি ইনস্টল করতে পারে teac
  2. বান্ডলারের সাহায্যে স্ক্র্যাচ থেকে কোনও মণি কীভাবে তৈরি করা যায়

1
প্রথম লিঙ্কটি 404
পেটর গাজারভ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.