Ich versuche zu verstehen, in rails
, wie ruby gems
verfügbar werden automatisch verwendet werden, ohne required
in den Dateien, die die Edelsteine sind?Wie funktioniert Rubin Juwel in einer Schiene Umgebung
Antwort
Dies erfolgt über bundler/setup
: http://bundler.io/v1.3/bundler_setup.html. Es ist in Ihrer config/boot.rb
Datei erforderlich. Kurz gesagt stellt es zunächst Umgebungsvariable auf Ihre Gemfile Punkt:
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
Dann fügt sie Wege für alle Edelsteine zu LOAD_PATH, von bundler/setup
erfordern:
require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
Dann bedarf es alle benötigten Edelsteine (config/application.rb):
Bundler.require(*Rails.groups)
Rails-Anwendungen verwenden Bundler (das ist die Sache mit der Gemfile
). Wenn der Bundler die Gemfile
beim Start einer Rails-Anwendung lädt, benötigt er automatisch alle dort aufgeführten Edelsteine, so dass Sie dies nicht selbst tun müssen.
Ich empfehle Ihnen "Crafting Rails 4 Applications: Expert Practices for Everyday Rails Development" Kapitel 1. Erstellen unserer eigenen Renderer zu lesen:
Hinweis der Edelstein hat den gleichen Namen wie die Datei im lib-Verzeichnis, das pdf_renderer ist. Wenn Sie nach dieser Konvention dieses Juwel in einer GEM-Datei einer Rails-Anwendung deklarieren, wird die Datei unter lib/pdf_renderer.rb automatisch benötigt.