Yanıtlar:
Bu gem yüklemek anlamına gelir, ancak Bundler'ı başlattığınızda gerektirir çağırmayın. Bu yüzden manuel olarak aramanız gerekecek
require "whenever"
kütüphaneyi kullanmak istiyorsanız.
Yapacak olsaydın
gem "whenever", require: "whereever"
sonra paketçi ne zaman adlandırılmış mücevher indirir, ama çağırır
require "whereever"
Bu genellikle gereken kitaplığın adı gem'in adından farklıysa kullanılır.
:require => false
bu değerli taşlar ve açıkça require "thegem"
komisyon görevinden. Bu, daha sonra ana uygulama işlemlerinde ve başlatma zamanında vb. Bellek tasarrufu sağlar. Ancak, her işlemde bu ek mücevherlere ihtiyaç duysanız bile uygulama performansı etkilenmemelidir.
require 'yaml'
, YAML
modülde artık bellekte bir nesne var.
:require => false
ve kodunuzda birrequire 'library_name_here'
Sen kullanmak :require => false
Eğer taş yüklü değil istediğiniz zaman "gerekli".
Yani verdiğiniz örnekte:
gem 'whenever', :require => false
birisi paket çalıştırdığında gem ne zaman kurulursa kurulsun gem install whenever
. Bir komisyon görevi çalıştırarak cron işleri oluşturmak için kullanıldığında, ancak genellikle raylar (veya raylar değilse başka bir çerçeve) içinden kullanılmaz.
Böylece :require => false
komut satırından çalıştırmanız gereken, ancak kodunuz içinde gerekmeyen her şey için kullanabilirsiniz .
require: false
Bundler.require
o özel gem gerektirmemesini söyler : gem açıkça yoluyla gerekli olmalıdır require 'gem'
.
Bu seçenek yok değil etkiler:
bundle install
: mücevher ne olursa olsun kurulacak
require
bundler tarafından arama yolu kurulumu.
Bundler, şunlardan birini yaptığınızda yola şeyler ekler:
Bundle.setup
require bundler/setup
bundle exec
Misal
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
O zaman aşağıdakiler istisna doğurmaz:
bundle install --path=.bundle
bundle exec ruby main.rb
Onunla oynamak için GitHub'da .
Ray kullanımı
Başlatma eğitiminde açıklandığı gibi , varsayılan Rails şablonu başlangıçta çalışır:
config/boot.rb
config/application.rb
config/boot.rb
içerir:
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE'])
bu require 'bundler/setup'
da gerekli yolu yapar ve ayarlar.
config/application.rb
yapar:
Bundler.require(:default, Rails.env)
Bu aslında taşlar gerektirir.
require 'faker
Özellikle Gemfile bir git ref'ye işaret ediyorsanız, kullanmanın doğru gem sürümünü kullanmayabileceğini unutmayın .
Ne zaman Gemfile
çalıştırırsanız ve çalıştırırsanız bundle install
, paketleyici gidip söz konusu Gem için belirtilen mücevher ve yük kodunu uygulamanıza require 'whenever'
yükler, bu şekilde paketleyici Rails uygulamanızdaki tüm Mücevherleriniz için kod yükler ve herhangi bir yöntemi çağırabilirsiniz çoğu zaman yaptığınız gibi, herhangi bir Mücevherden herhangi bir acı olmadan.
ancak whenever, faker or capistrano
, uygulama tarifinizde, schedule.rb
kodları ve capistrano kodunu deploy.rb
dağıtım tarifini özelleştirmek için dosyada yönetmek için ihtiyacınız olduğunda uygulama kodunuzda ihtiyacınız olmayan bir şeydir, böylece uygulama kodunuzda ve istediğiniz yerde bu taşlar için kod yüklememeniz gerekir. Bu Mücevherlerden herhangi bir yöntemi çağırmak istiyorsanız, bu cevherleri manuel olarak kendiniz talep edebilirsiniz require "whenever"
. bu nedenle :require => false
Gemfile'ınızı bu Mücevherler için koyarsınız, bu şekilde paketleyici bu Gem'i yükler, ancak bu Gem'in kendisi için kod yüklemez, istediğiniz zaman 'istediğiniz zaman' istediğiniz gibi koyarak istediğiniz zaman yapabilirsiniz.
Gemfile'nizde değerli taşlara ihtiyaç duymak için aramanız gerekir Bundler.require
.
Paketleyicinin gem ile ihtiyaç duymasını önleyebilirsiniz require: false
, ancak yine de gem'i yükler ve korur. Daha ayrıntılı bir açıklama için buna göz atın .
Bundler.require
anladığım kadarıyla varsayılan olarak yapılan Rails ile ilgilidir . Sadece Ciro ve Nesha'nın cevapları doğrudur.