আমি আমার জেমফাইলে স্থানীয় .gem ফাইলগুলি কীভাবে নির্দিষ্ট করব?


158

আমার কাছে কয়েকটি মণি ফাইল রয়েছে যা আমি ইনস্টল করি gem install xx.gem। আমি কি বান্ডলারকে সেগুলি ব্যবহার করতে বলতে পারি? অথবা আমাকে উত্সের পথটি নির্দিষ্ট করতে হবে?


উত্তর:


281

এটি .gemপ্যাকেজ ইনস্টল করার বিষয়ে আপনার প্রশ্নের কঠোর উত্তর নয় , তবে আপনি জেমফাইলে সম্পাদনা করে রত্ন-দ্বারা-রত্ন ভিত্তিতে সমস্ত ধরণের অবস্থান নির্দিষ্ট করতে পারেন ।

কোনও :pathঅ্যাট্রিবিউট নির্দিষ্ট করে দেওয়া আপনার স্থানীয় মেশিনে সেই পাথ থেকে মণি ইনস্টল করবে।

gem "foreman", path: "/Users/pje/my_foreman_fork"

পর্যায়ক্রমে, কোনও :gitবৈশিষ্ট্য নির্দিষ্ট করে তোলা দূরবর্তী গিট সংগ্রহস্থল থেকে রত্নটি ইনস্টল করবে।

gem "foreman", git: "git://github.com/pje/foreman.git"

# ...or at a specific SHA-1 ref
gem "foreman", git: "git://github.com/pje/foreman.git", ref: "bf648a070c"

# ...or branch
gem "foreman", git: "git://github.com/pje/foreman.git", branch: "jruby"

# ...or tag
gem "foreman", git: "git://github.com/pje/foreman.git", tag: "v0.45.0"

( @ জেহুরাহ তার মন্তব্যে উল্লেখ করেছেন ।)


কিছু ফায়ারওয়ালের জন্য গিট প্রোটোকল একটি সমস্যা হতে পারে। gem "foreman", :git => "https://github.com/pje/foreman.git"
সেক্ষেত্রে

61

মনে হচ্ছে বান্ডিলার বাক্সের বাইরে .gem ফাইলগুলি ব্যবহার করতে পারে না। ইঙ্গিত করে: .gem ফাইল ধারণকারী ডিরেক্টরিতে পাথ কাজ করে না। কিছু লোক সেই উদ্দেশ্যে একটি স্থানীয় রত্ন সার্ভার (জেমিনাবক্স, স্টিকার) সেটআপ করার পরামর্শ দিয়েছিল।

তবে, যা আমি খুব সহজ বলে মনে করেছি তা হ'ল ফাইল সিস্টেম থেকে স্থানীয় রত্ন "সার্ভার" ব্যবহার করা: কেবল আপনার .gem ফাইলগুলিকে একটি স্থানীয় ডিরেক্টরিতে রাখুন, তারপরে এটি "রত্ন জেনারেট_আইএনডেক্স" ব্যবহার করুন এটি একটি জহর সংগ্রহস্থল হিসাবে তৈরি করুন

mkdir repo
mkdir repo/gems
cp *.gem repo/gems
cd repo
gem generate_index

আপনার জেমফাইলে নীচের লাইনটি যুক্ত করে এই অবস্থানটিতে বান্ডিলারটি শেষ পর্যন্ত নির্দেশ করুন

source "file://path/to/repo"

আপনি যদি সংগ্রহস্থলে রত্নগুলি আপডেট করেন তবে সূচকটি পুনরায় জেনারেট করতে ভুলবেন না।


6
ধন্যবাদ! এছাড়াও, "ফাইল: /// নিরঙ্কুশ / পথ / থেকে / রেপো" করতে আমার তৃতীয় স্ল্যাশ দরকার ছিল
আনা

5
কমান্ড লাইনে "রত্ন সার্ভার" চালানো এবং আপনার জেমফাইলে উত্স " লোকালহোস্ট: 8808 " যুক্ত করা কি সহজ হবে না
আনা

এটা সত্যিই দুর্দান্ত মার্টিন! ভাগ করে নেওয়ার জন্য ধন্যবাদ, আমি ঠিক তাই খুঁজছিলাম যেহেতু আমি কোনও চালনার উপর নির্ভর করতে চাই না gem serverবা পুরো প্রকল্পটি কেবলমাত্র .gem ফাইলটি হোস্ট করতে চাইতাম না।
লিও গ্যালুচি

6
বোনাস টিপ: আপনি এই জাতীয় ফাইল.এক্সপ্যান্ড_পাথ ব্যবহার করে নিখুঁত পাথের প্রয়োজনীয়তা অর্জন করতে পারেনsource "file://#{File.expand_path('.')}/chef-11.10.0.dev.2"
লিও

আমার জন্য কাজ করে না। ম্যাক ওএস এক্স বান্ডলার v1.11.2:Could not fetch specs from file://Users/nakilon/....../
নাকিলন

44

আমি আপনার রত্নটি অ্যাপ্লিকেশন বিক্রেতা ফোল্ডারে আনপ্যাক করব

gem unpack your.gem --target /path_to_app/vendor/gems/

তারপরে আনপ্যাক করা রত্নটিকে সংযুক্ত করতে গেমফিলের পথে পাথ যুক্ত করুন।

gem 'your', '2.0.1', :path => 'vendor/gems/your'

29

ডিফল্টরূপে বান্ডিলারটি প্রথমে আপনার সিস্টেমটি পরীক্ষা করবে এবং যদি এটি কোনও মণি খুঁজে না পায় এটি আপনার জেমফাইলে উল্লিখিত উত্সগুলি ব্যবহার করবে।


সত্য। তবে যদি আমি এটি ইনস্টল না করে থাকি তবে কী হবে? (যখন আমি কোনও সার্ভারে মোতায়েন করছি) কোনও সোর্স কমান্ড সমাপ্ত
ইমালিব

184
আপনি রত্ন "রত্ন নাম", একটি স্থানীয় ডিরেক্টরিতে নির্দেশ করতে পারেন: পথ => "~ / কিছু / স্থানীয় / পথ"
জহুরাহ

5
আমি মনে করি যে: পথের জন্য রত্ন ফোল্ডারটি রত্নের ফোল্ডারের প্রয়োজন। আমার কাছে কেবল .gem ফাইল রয়েছে যা আমি ইনস্টল করতে চাই।
ddayan

1
ঠিক আছে তাই ক্যাপ মোতায়েন পাস হয়েছে, তবে রত্নটি ইনস্টল করা হয়নি "লোড করার জন্য এই জাতীয় কোনও ফাইল নেই - ভিআইপি": /
দিনদিন

4
এটি অবশ্যই সত্য নয়, কমপক্ষে আর কোনও দিন। বান্ডলার আপনার সিস্টেমের রত্নগুলির দিকে নজর দেয় না এবং কেবল গেমফিলের মধ্যে রয়েছে। এটি এত ভয়ানক কারণগুলির মধ্যে একটি।
বায়ুনোরালনেট

6

আপনি "বান্ডেল প্যাকেজ" এবং "বান্ডেল ইনস্টল --local" ব্যবহার করে যে রত্ন ব্যবহার করেন তা বান্ডারকে জোর করে ব্যবহার করতে পারেন

আপনার বিকাশ মেশিনে:

bundle install

(প্রয়োজনীয় রত্ন ইনস্টল করে জেমফিল.লক করে)

bundle package

(বিক্রেতাকে / ক্যাশে রত্নকে ক্যাচ করে)

সার্ভারে:

bundle install --local

(--local অর্থ "বিক্রেতা / ক্যাশে থেকে রত্ন ব্যবহার করুন")


আমি যদি সার্ভারে কিছু ইনস্টল করতে না পারি তবে কী হবে? এই ক্ষেত্রে, আমাকে রাক দিয়ে তৈরি করতে হবে তবে সার্ভারের কাছে আমি রত্ন তৈরির জন্য ব্যবহার করি না; তবে নির্ভরতাগুলি পরীক্ষা করতে আমার কোনও সমস্যা নেই।
হেনরিক

"বান্ডেল ইনস্টল" আমার জন্য কাজ করে না যদি মণিটি আমার বিদ্যমান জেমফিল "উত্সে অন্তর্ভুক্ত না করা হয়।
আনা

অস্থায়ীভাবে রত্ন ফাইলটি অপসারণ করার আগেই রত্ন ফাইলটি তৈরি করুন তার bundle installপরে, রত্নটি বিক্রেতা / ক্যাশে অনুলিপি করুন, রত্নটি রত্নটি ফেরত পাঠান এবং সম্পাদন করুন bundle install --local
বার্ট ব্রুইনুগে

1
bundle packageএটি এখন থেকে তিন বছর পরেও একটি দুর্দান্ত পরামর্শ। আপনার বান্ডিলারের সংস্করণ যদি ২.০ এর বেশি পুরানো হয় (এখনও এই লেখায় প্রকাশিত হয়নি), আপনি bundle package --allযদি রত্ন pathবা gitনির্ভরতা সহ অন্তর্ভুক্ত করতে চান তবে আপনাকে ব্যবহার করতে হবে । যদিও এ জাতীয় নির্ভরতা সনাক্ত করে তবে এটি আপনাকে একটি সহায়ক অনুস্মারক দেবে।
এল 2 জি

1
এফওয়াইআই: এটি তেমন কার্যকর নাও হতে পারে আপনি আশা করেন যে আপনি মোতায়েনের চেয়ে আলাদা প্ল্যাটফর্মের উপর বিকাশ করেছেন (যেমন ম্যাকোএসে বিকাশ করুন, লিনাক্সে মোতায়েন)। অনুযায়ী --localডক্স: "নোট একটি উপযুক্ত প্ল্যাটফর্ম-নির্দিষ্ট মণি rubygems.org বিদ্যমান তা পাওয়া করবে না হোক।"
লিয়াম ডসন


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