instalar ruby bundler gemfile

ruby - instalar - ¿Qué significa ''requerir: falso'' en Gemfile?



ruby bundle install windows (5)

Esto significa instalar la gema, pero no llamar a require cuando inicie Bundler. Así que necesitarás llamar manualmente

require "whenever"

Si quieres usar la biblioteca.

Si fueras a hacer

gem "whenever", require: "whereever"

entonces Bundler descargaría la gema con el nombre siempre, pero llamaría

require "whereever"

Esto se usa a menudo si el nombre de la biblioteca que se requiere es diferente al nombre de la gema.

Haz esto:

gem ''whenever'', require: false

¿Significa que la gema necesita ser instalada, o significa que no es necesaria?


Para requerir gemas en tu Gemfile, deberás llamar a Bundler.require .

Puede evitar que el agrupador requiera la gema con require: false , pero seguirá instalando y manteniendo la gema. Compruebe esto para una explicación más detallada.


Siempre que especifique una gema en su Gemfile y ejecute la bundle install , el bundler irá e instalará la gema y el código de carga especificados para esa Gem en su aplicación al poner require ''whenever'' , de esta manera el bundler cargará el código para todas sus gemas en sus Rails Aplicación, y puedes llamar a cualquier método desde cualquier gema sin ningún dolor, como lo haces la mayor parte del tiempo.

pero las gemas como whenever,faker or capistrano son algo que no necesita en el código de la aplicación que necesita siempre que el código en su archivo schedule.rb administre el código de deploy.rb y capistrano en el archivo deploy.rb para personalizar la receta de implementación, por lo que no necesita cargar código para estas gemas en el código de su aplicación y donde quiera que desee llamar a cualquier método de estas gemas, usted puede requerir estas gemas manualmente por usted mismo poniendo require "whenever" . así que pones :require => false en tu Gemfile para estas gemas, de esta manera el bundler instalará esa gema pero no cargará el código de esa gema en sí, puedes hacerlo cuando quieras simplemente poniendo "require" en tu caso.


Utiliza :require => false cuando quieres que se instale la gema pero no "obligatorio".

Así que en el ejemplo que dio: gem ''whenever'', :require => false cuando alguien ejecuta la instalación en paquete la vez que gema se instalaría como con la gem install whenever . Cuando se utiliza para crear trabajos cron mediante la ejecución de una tarea de rake, pero generalmente no se usa desde la aplicación de rieles (u otro marco si no rieles).

Por lo tanto, puede usar :require => false para cualquier cosa que necesite ejecutar desde la línea de comandos pero que no necesite dentro de su código.


require: false le dice a Bundler.require no requerir esa gema específica: la gema debe ser requerida explícitamente a través de require ''gem'' .

Esta opción no afecta a:

  • bundle install : la gema se instalará independientemente

  • la configuración de ruta de búsqueda require por bundler.

    Bundler agrega cosas a la ruta cuando realiza una de las siguientes acciones:

    • Bundle.setup
    • que es llamado por require bundler/setup
    • que se llama por bundle exec

Ejemplo

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

Entonces lo siguiente no generará excepciones:

bundle install --path=.bundle bundle exec ruby main.rb

En GitHub para que juegues con él.

Uso de rieles

Como se explica en el tutorial de inicialización , la plantilla de Rails predeterminada se ejecuta en el inicio:

  • config/boot.rb
  • config/application.rb

config/boot.rb contiene:

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

que hace que require ''bundler/setup'' y configura la ruta de requerimiento.

config/application.rb hace:

Bundler.require(:default, Rails.env)

que en realidad requiere las gemas.