487 votes

Bundler : Que signifie : exiger => false dans une moyenne de Gemfile ?

La ligne est celui-ci :

Ça signifie que le bijou doit être installé ou n’est pas nécessaire ?

522voto

Rob Di Marco Points 18048

Autrement dit, installer la gem, mais ne pas appel besoin lorsque vous démarrez Bundler. Ainsi, vous devrez appeler manuellement

Si vous souhaitez utiliser la bibliothèque.

Si vous aviez à faire

puis bundler téléchargerait le joyau nommé chaque fois que, mais qu’il appellerait

Ceci est souvent utilisé si le nom de bibliothèque d’exiger est différent du nom de la gemme.

84voto

gduq Points 645

Vous utilisez :require => false lorsque vous souhaitez que le gem à être installé, mais pas "nécessaire".

Ainsi, dans l'exemple que vous avez donné: gem 'whenever', :require => false quand quelqu'un s'exécute bundle install chaque fois que le gem serait installé avec gem install whenever. Chaque fois qu'est utilisé pour créer des tâches cron par l'exécution d'une tâche rake, mais n'est généralement pas utilisé dans les rails (ou autre cadre si ce n'rails) de l'application.

Ainsi, vous pouvez utiliser :require => false de tout ce que vous devez exécuter à partir de la ligne de commande, mais n'avez pas besoin dans votre code.

76voto

Ciro Santilli Points 3341

require: false dit Bundle.require de ne pas exiger que des gem: le bijou doit être expressément requises par require 'gem'.

Cette option n'a pas d' incidence sur:

  • bundle install: le gem aurez installé indépendamment.

  • les chemins de recherche de configuration par bundler: le gem seront toujours ajoutées à la recherche de chemin, sinon vous ne seriez pas en mesure de le faire require 'gem'. Bundler ajoute le Rubis le chemin de recherche soit:

    • Bundle.setup,
    • ce qui est fait automatiquement sur require bundler/setup,
    • ce qui est fait automatiquement sur bundle exec.

Exemple:

cat <<EOF > Gemfile
source 'https://rubygems.org'
gem 'haml'
gem 'faker', require: false
EOF

bundle install --path=.bundle

cat <<EOF > bundle_exec_me.rb
begin Haml; rescue NameError; else raise; end
begin Faker; rescue NameError; else raise; end

# The Bundler object will be there because we will do `bundle exec`.
Bundler.require

Haml
# Not required because of the require: false on the Gemfile:
begin Faker; rescue NameError; else raise; end

# Faker is in the path because Bundle.setup was done automatically
# when we use `bundle exec`.
require 'faker'
Faker
EOF

bundle exec ruby bundle_exec_me.rb

Les Rails 4 modèle par défaut sur config/boot.rb:

ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE'])

Et sur config/application.rb

Bundler.require(:default, Rails.env)

qui sont appelés les uns après les autres, comme expliqué dans l' initialisation du tutoriel.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X