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 => falsebu 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', YAMLmodülde artık bellekte bir nesne var.
:require => falseve kodunuzda birrequire 'library_name_here'
Sen kullanmak :require => falseEğ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 => falsekomut satırından çalıştırmanız gereken, ancak kodunuz içinde gerekmeyen her şey için kullanabilirsiniz .
require: falseBundler.requireo ö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
requirebundler tarafından arama yolu kurulumu.
Bundler, şunlardan birini yaptığınızda yola şeyler ekler:
Bundle.setuprequire bundler/setupbundle execMisal
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.rbconfig/application.rbconfig/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 => falseGemfile'ı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.requireanladığım kadarıyla varsayılan olarak yapılan Rails ile ilgilidir . Sadece Ciro ve Nesha'nın cevapları doğrudur.