উত্তর:
এর অর্থ রত্নটি ইনস্টল করুন তবে আপনি বান্ডিলার শুরু করার সময় কল করবেন না। সুতরাং আপনাকে ম্যানুয়ালি কল করতে হবে
require "whenever"
আপনি যদি গ্রন্থাগারটি ব্যবহার করতে চান
যদি আপনি করতেন
gem "whenever", require: "whereever"
তারপরে বান্ডলার যখনই নামক রত্নটি ডাউনলোড করত, তবে কল করত
require "whereever"
এটি প্রায়শই ব্যবহৃত হয় যদি প্রয়োজনীয় লাইব্রেরির নামটি রত্নের নামের চেয়ে আলাদা হয়।
:require => false
এই বিশেষ রত্ন এবং স্পষ্টভাবে require "thegem"
রাক টাস্ক থেকে। এটি তখন মূল অ্যাপ্লিকেশন প্রক্রিয়াগুলিতে এবং প্রারম্ভকালীন সময়ে ইত্যাদির স্মৃতি সঞ্চয় করতে পারে App তবে অ্যাপ্লিকেশনটির কার্য সম্পাদন যদিও আপনার প্রতিটি প্রক্রিয়াতে এই অতিরিক্ত রত্ন প্রয়োজন তা এমনকি প্রভাবিত করা উচিত নয়।
require 'yaml'
, YAML
মেমরির একটি বস্তু হিসাবে আপনার এখন মডিউল আছে ।
:require => false
এবং তারপরে আপনার কোডটিতে একটি রয়েছেrequire 'library_name_here'
আপনি :require => false
যখন রত্নটি ইনস্টল করতে চান তবে "প্রয়োজনীয়" নয় আপনি ব্যবহার করেন ।
সুতরাং আপনি যে উদাহরণ দিয়েছেন:
gem 'whenever', :require => false
যখন কেউ বান্ডেল চালায় তখনই যখনই রত্নটি ইনস্টল করা হত ইনস্টল করুন gem install whenever
। যখনই একটি রেক টাস্ক চালিয়ে ক্রোন জব তৈরি করতে ব্যবহৃত হয় তবে সাধারণত রেলের (বা অন্যান্য কাঠামো যদি রেল না হয়) অ্যাপ্লিকেশন থেকে ব্যবহৃত হয় না।
সুতরাং আপনি :require => false
কমান্ড লাইন থেকে চালানোর প্রয়োজন হয় এমন কোনও কিছুর জন্য আপনি ব্যবহার করতে পারেন তবে আপনার কোডের মধ্যে দরকার নেই।
require: false
Bundler.require
নির্দিষ্ট রত্নটির প্রয়োজন না বলার জন্য: মণিটি অবশ্যই স্পষ্টরূপে আবশ্যক require 'gem'
।
এই বিকল্পটি প্রভাবিত করে না :
bundle install
: মণি নির্বিশেষে ইনস্টল করা হবে
require
bundler করে সন্ধানের পাথ সেটআপ।
আপনি যে কোনও একটি করতে গেলে বান্ডিলার পথে জিনিস যুক্ত করে:
Bundle.setup
require bundler/setup
bundle exec
উদাহরণ
Gemfile
source 'https://rubygems.org'
gem 'haml'
gem 'faker', require: false
main.rb
# Fail because we haven't done Bundler.require yet.
# bundle exec does not automatically require anything for us,
# it only puts them in the require path.
begin Haml; rescue NameError; else raise; end
begin Faker; rescue NameError; else raise; end
# The Bundler object is automatically required on `bundle exec`.
Bundler.require
Haml
# Not required because of the require: false on the Gemfile.
# THIS is what `require: false` does.
begin Faker; rescue NameError; else raise; end
# Faker is in the path because Bundle.setup is done automatically
# when we use `bundle exec`. This is not affected by `require: false`.
require 'faker'
Faker
তাহলে নিম্নলিখিতগুলি ব্যতিক্রমগুলি উত্থাপন করবে না:
bundle install --path=.bundle
bundle exec ruby main.rb
আপনি এটির সাথে খেলতে গিটহাবে On
রেল ব্যবহার
প্রারম্ভিককরণ টিউটোরিয়ালে যেমন ব্যাখ্যা করা হয়েছে , ডিফল্ট রেল টেম্পলেট প্রারম্ভকালে চলে:
config/boot.rb
config/application.rb
config/boot.rb
রয়েছে:
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE'])
যা করে require 'bundler/setup'
এবং প্রয়োজনীয় পথ নির্ধারণ করে।
config/application.rb
না:
Bundler.require(:default, Rails.env)
যার আসলে রত্ন দরকার।
require 'faker
ব্যবহারটি সঠিক রত্ন সংস্করণটি ব্যবহার নাও করতে পারে, বিশেষত যদি আপনি জেমফিল একটি গিট রেফের দিকে নির্দেশ করেন।
যখনই আপনি আপনার কোনও চালককে Gemfile
রান bundle install
এবং নির্দিষ্ট করে নির্দিষ্ট করেন, বান্ডেলার require 'whenever'
এই অ্যাপ্লিকেশনটিতে সেই রত্নটির জন্য নির্দিষ্ট রত্ন এবং লোড কোডটি ইনস্টল করে রাখবেন এইভাবে বান্ডেলরটি আপনার রেল অ্যাপগুলিতে আপনার সমস্ত রত্নের জন্য কোড লোড করবে এবং আপনি যে কোনও পদ্ধতিতে কল করতে পারবেন কোনও ব্যথা ছাড়াই কোনও রত্ন থেকে, যেমন আপনি বেশিরভাগ সময় করেন।
তবে রত্নগুলির মতো whenever, faker or capistrano
এমন একটি জিনিস যা আপনার অ্যাপ্লিকেশন কোডে আপনার প্রয়োজন হয় না যখনই যখন আপনার schedule.rb
ফাইলের কোডগুলি ক্রোন এবং ক্যাপিস্ট্রানো কোড পরিচালনা deploy.rb
করতে থাকে যাতে মোতায়েনের রেসিপিটি কাস্টমাইজ করতে পারে তাই আপনার অ্যাপ্লিকেশন কোডটিতে এবং এই যেখানেই আপনি এই রত্নগুলির জন্য কোড লোড করার দরকার নেই need এই রত্নগুলি থেকে যে কোনও পদ্ধতিতে কল করতে চান আপনি নিজেরাই এই মণি নিজেই লাগাতে পারেন require "whenever"
। সুতরাং আপনি :require => false
এই রত্নগুলির জন্য আপনার জেমফাইলে রেখেছেন, এইভাবে বান্ডিলার সেই রত্নটি ইনস্টল করবে তবে সেই রত্নটির জন্য কোড লোড করবে না, আপনি যখনই চান কেবল যখন আপনার প্রয়োজনে 'যখনই' প্রয়োজন রেখে এটি করতে পারেন।
আপনার জেমফাইলে রত্নগুলির প্রয়োজনের জন্য আপনাকে কল করতে হবে Bundler.require
।
আপনি বান্ডিলারের সাথে রত্নটির প্রয়োজনীয়তা রোধ করতে পারেন require: false
, তবে এটি এখনও রত্নটি ইনস্টল এবং রক্ষণাবেক্ষণ করবে। পরীক্ষা করে দেখুন এই আউট আরো বিস্তারিত ব্যাখ্যার জন্য।
Bundler.require
আমি বুঝতে পেরে ডিফল্টরূপে করি। কেবল সিরো এবং নেছার উত্তর সঠিক।