আমি আমার গেমফাইলে কীভাবে একটি স্থানীয় রত্ন নির্দিষ্ট করতে পারি?


359

আমি চাই বান্ডলার একটি স্থানীয় রত্ন লোড করুন। তার জন্য কি কোনও বিকল্প আছে? অথবা আমাকে কি রত্ন ফোল্ডারটিকে .bundle ডিরেক্টরিতে সরাতে হবে?

উত্তর:


539

আমি বিশ্বাস করি আপনি এটি করতে পারেন:

gem "foo", path: "/path/to/foo"

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

4
আপনি আপনার প্রকল্প ডিরেক্টরিতে স্থানীয় রত্নটিতে একটি .gitignored সিমিলিংক ব্যবহার করে এটিকে কিছুটা পরিষ্কার করতে পারেন - এইভাবে আপনি উভয় প্রকল্পে পৃথকভাবে উত্স নিয়ন্ত্রণ ব্যবহার করতে পারেন এবং অন্যরা অভিন্ন ডিরেক্টরি কাঠামো না রেখে একই কাজ করতে পারেন।
ড্যান

6
স্প্রিং হতে পারে কিছু দেখার জন্য। যদি আপনি নিজের রত্নের জন্য কোনও স্থানীয় পথ ব্যবহার করে থাকেন তবে আপনি আপনার স্থানীয় রত্নটির ক্যাশেড সংস্করণগুলি যেমন রেলস কনসোলের মতো দেখতে পেলেন। যদি মনে হয় না যে আপনার স্থানীয় রত্ন পরিবর্তনগুলি বাছাই করা হচ্ছে spring stopতা দেখার চেষ্টা করুন এটি আসলেই সমস্যা।
জেসন আর

1
কনফিগার / স্প্রিং.আরবিতে স্থানীয় রত্ন পাথ যোগ করা রেলস কনসোল / সার্ভার পুনরায় চালু করার পরে আপনার স্থানীয় রত্ন পরিবর্তনগুলি পিকআপ করতে সহায়তা করে বলে মনে হচ্ছে।
জেসন আর

4
এটি করার এখানে আরও ভাল উপায়: rossta.net/blog/…
সাইজানফার

229

পথটি নির্দিষ্ট করার পাশাপাশি (জিমির উল্লেখ হিসাবে) আপনি নীচের কনফিগারেশন বিকল্পটি ব্যবহার করে আপনার পরিবেশের জন্য স্থানীয় রত্নটি ব্যবহার করতেও বন্ডারকে বাধ্য করতে পারেন :

$ bundle config local.GEM_NAME /path/to/local/git/repository

যদি আপনি পাশাপাশি দুটি রত্ন বা একটি মণি এবং একটি রেল অ্যাপ্লিকেশন বিকাশ করেন তবে এটি অত্যন্ত সহায়ক।

তবে লক্ষ করুন, এটি কেবল তখনই কাজ করে যখন আপনি ইতিমধ্যে আপনার নির্ভরতার জন্য গিট ব্যবহার করছেন:

# In Gemfile
gem 'rack', :github => 'rack/rack', :branch => 'master'

# In your terminal
$ bundle config local.rack ~/Work/git/rack

ডক্সে যেমন দেখা যায় ।


আমার এটির সমস্যা হচ্ছে কারণ আমি ব্যবহার করছি BUNDLE_PATH(বিতরণের জন্য প্যাকেজ তৈরি করা)) আপনি যে পরামর্শ দিয়েছেন বা জিমির উত্তরটি করছেন তা করার সময় এটি কেবল একটি করে usingএবং আসলে আমার BUNDLE_PATHফোল্ডারে ইনস্টল করে না । আমি এই বুঝতে সক্ষম ছিল না, কোন সাহায্য?
অটোম্যাটিকো

2
নোট করুন এটি কোনও রত্নের সাথে কাজ করবে না এখানে আলোচনার জন্য এটি ।
ডেভেটপলে

31
স্থানীয় ওভাররাইড অক্ষম করতে:bundle config --delete local.GEM_NAME
alxndr

এটি কাজ করতে আমাকে রত্নের রেখা থেকে সংস্করণ নির্দেশিকা সরিয়ে ফেলতে হয়েছিল।
এপিজিন

4
আপনি যদি উত্পাদন থেকে বিকাশে একটি আলাদা শাখা ব্যবহার করতে চান তবে bundle config disable_local_branch_check trueআপনাকেও সেট করতে হবে বা বান্ডলার শাখাটি সম্পর্কে অভিযোগ করবে। যদিও এটির সাথে সাবধান থাকুন, কারণ চেকগুলি ভুল কমিটগুলি প্রবেশ করা বন্ধ করে দেওয়ার কথা Gemfile.lock। ডক্স এখানে: bundler.io/v1.12/git.html
লিও

33

আপনি যদি কোনও স্থানীয় রত্নটিকে গিট দিয়ে কাজ করতে থাকেন তবে তা উল্লেখ করতে পারেন।

gem 'foo',
  :git => '/Path/to/local/git/repo',
  :branch => 'my-feature-branch'

তারপরে, যদি এটি পরিবর্তন হয় তবে আমি চালাব

bundle exec gem uninstall foo
bundle update foo

তবে আমি নিশ্চিত নই যে প্রত্যেককে এই দুটি পদক্ষেপ চালানো দরকার।


5
এটি দুর্দান্ত, তবে আপনি যদি সক্রিয়ভাবে রত্নটি বিকাশ করেন তবে এটি সুবিধাজনক নয় ... কারণ আপনার প্রতিটি bundle uninstall <gem> && bundle install অ্যাপ্লিকেশনে প্রতিবিম্বিত হওয়া প্রতিটি পরিবর্তনের জন্য আপনাকে প্রতিশ্রুতিবদ্ধ করতে হবে
রামসেস

18

একটি রেল প্রকল্পে স্থানীয় রত্ন সংগ্রহশালা ব্যবহার করতে, নীচের পদক্ষেপগুলি অনুসরণ করুন:

  1. আপনার মণি ফোল্ডারটি গিট সংগ্রহস্থল কিনা তা পরীক্ষা করুন (রত্ন ফোল্ডারে কমান্ডটি কার্যকর করা হয়)

    git rev-parse --is-inside-work-tree
  2. সংগ্রহস্থল পাথ প্রাপ্তি (রত্ন ফোল্ডারে কমান্ডটি কার্যকর করা হয়)

    git rev-parse --show-toplevel
  3. রেল অ্যাপ্লিকেশনগুলির জন্য স্থানীয় ওভাররাইড সেট আপ করা হচ্ছে

    bundle config local.GEM_NAME /path/to/local/git/repository

    GEM_NAMEআপনার রত্নটির নাম কোথায় /path/to/local/git/repositoryএবং পয়েন্টে কমান্ডের আউটপুট2

  4. আপনার আবেদনে Gemfileনিম্নলিখিত লাইনটি যুক্ত করুন:

    gem 'GEM_NAME', :github => 'GEM_NAME/GEM_NAME', :branch => 'master'
  5. দৌড়তে bundle installএমন কিছু দেওয়া উচিত:

    Using GEM_NAME (0.0.1) from git://github.com/GEM_NAME/GEM_NAME.git (at /path/to/local/git/repository) 

    GEM_NAMEআপনার মণির নাম এবং /path/to/local/git/repositoryবিন্দু থেকে কোথায়2

  6. অবশেষে, দৌড়াও bundle list, না gem listএবং এরকম কিছু দেখতে পাওয়া উচিত:

    GEM_NAME (0.0.1 5a68b88)

    GEM_NAMEতোমার রত্নের নাম কোথায়


কয়েকটি গুরুত্বপূর্ণ বিষয় যা আমি পর্যবেক্ষণ করছি:

Rails 4.0.2  
ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux] 
Ubuntu 13.10  
RubyMine 6.0.3
  • এটি RubyMineবাহ্যিক গ্রন্থাগার হিসাবে স্থানীয় রত্ন দেখাচ্ছে না বলে মনে হচ্ছে। বাগ সম্পর্কে আরও তথ্য এখানে এবং এখানে পাওয়া যাবে
  • যখন আমি স্থানীয় রত্নটিতে কিছু পরিবর্তন করি তখন রেল অ্যাপ্লিকেশনটিতে লোড হওয়ার জন্য আমার stop/startরেল সার্ভার হওয়া উচিত
  • আমি যদি versionরত্নটির পরিবর্তন করি stopping/startingতবে রেলস সার্ভারটি আমাকে একটি ত্রুটি দেয়। এটি ঠিক করার জন্য, আমি রেল অ্যাপ্লিকেশনটিতে রত্ন সংস্করণটি এইভাবে নির্দিষ্ট করছি Gemfile:

    gem 'GEM_NAME', '0.0.2', :github => 'GEM_NAME/GEM_NAME', :branch => 'master'

0

আপনি উত্স সহ source: 'https://source.com', git repository (:github => 'git/url')এবং স্থানীয় পথের সাথে রত্নগুলি উল্লেখ করতে পারেন :path => '.../path/gem_name'
আপনি এই নিবন্ধে জেমফাইলস এবং সেগুলি কীভাবে ব্যবহার করবেন সে সম্পর্কে আরও শিখতে পারেন ।


-4

আপনি যদি শাখাটিও চান:

gem 'foo', path: "point/to/your/path", branch: "branch-name"

এটি কাজ করে না, একটি ত্রুটি উত্পন্ন করে: Only gems with a git source can specify a branch.
KenB
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.