[ruby] Gemfile에서 ‘require : false’는 무엇을 의미합니까?
이것을합니까 :
gem 'whenever', require: false
gem을 설치해야하거나 필요하지 않다는 의미입니까?
답변
즉, gem을 설치해야하지만 Bundler를 시작할 때 require를 호출하지 않습니다. 따라서 수동으로 전화해야합니다
require "whenever"
라이브러리를 사용하려는 경우
당신이해야한다면
gem "whenever", require: "whereever"
번 들러는 언제든 이름이 지정된 gem을 다운로드하지만
require "whereever"
필요한 라이브러리 이름이 gem 이름과 다른 경우에 종종 사용됩니다.
답변
:require => false
gem을 설치하길 원하지만 “필수”하지 않을 때 사용 합니다.
그래서 당신이 준 예제에서 :
gem 'whenever', :require => false
누군가 번들을 실행할 때마다 gem이 설치 될 때마다 gem install whenever
. 레이크 작업을 실행하여 크론 작업을 생성하는 데 사용될 때마다 일반적으로 레일 (또는 레일이 아닌 경우 다른 프레임 워크) 응용 프로그램 내에서 사용되지는 않습니다.
따라서 :require => false
명령 줄에서 실행해야하지만 코드 내에 필요하지 않은 모든 항목에 사용할 수 있습니다.
답변
require: false
Bundler.require
특정 보석을 요구하지 않도록 지시 합니다. 보석은을 통해 명시 적으로 요구되어야합니다 require 'gem'
.
이 옵션은 영향을 미치지 않습니다 :
-
bundle install
: 보석은 상관없이 설치됩니다 -
번
require
들러에 의한 검색 경로 설정번 들러는 다음 중 하나를 수행 할 때 경로에 항목을 추가합니다.
Bundle.setup
- 에 의해 호출
require bundler/setup
- 에 의해 호출
bundle exec
예
젬 파일
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
GitHub 에서 게임을 즐기십시오.
레일 사용
초기화 튜토리얼에 설명 된대로 기본 Rails 템플릿은 시작시 실행됩니다.
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)
실제로 보석이 필요합니다.
답변
당신이 당신의 보석을 지정할 때마다 Gemfile
및 실행 bundle install
, 들러 갈 것입니다 당신이 넣어 앱에서이 보석에 대해 지정된 보석 및로드 코드를 설치 require 'whenever'
하여 레일 응용 프로그램에 보석의 모든 코드를로드 할이 방법 들러를, 당신은 어떤 방법을 호출 할 수 있습니다 대부분의 시간처럼 고통없이 모든 보석에서.
그러나 같은 보석 whenever, faker or capistrano
은 응용 프로그램 코드에서 필요하지 않은 것으로, schedule.rb
파일 에서 코드로 크론 및 파일의 카리스트 라노 코드를 관리 deploy.rb
하여 배포 레시피를 사용자 정의 할 때마다 필요 하므로 앱 코드에 보석 코드를로드 할 필요가 없습니다. 이 보석에서 어떤 메소드를 호출하고 싶을 때 수동으로 thsese 보석을 요구할 수 있습니다 require "whenever"
. 그래서 당신은 :require => false
이러한 보석을 위해 Gemfile에 넣습니다 .이 방법으로 번 들러는 그 보석을 설치하지만 그 보석 자체에 대한 코드를로드하지는 않습니다. 필요한 경우 언제라도 ‘언제든지’처럼 넣어서 원할 때마다 할 수 있습니다.
답변
Gemfile에 gem을 요구하려면을 호출해야합니다 Bundler.require
.
번 들러가로 gem을 요구하지 않도록 할 수 require: false
있지만 gem을 설치하고 유지 관리합니다. 더 자세한 설명은 이것을 확인하십시오 .