Sto cercando di capire in rails
, come ruby gems
diventa disponibile per l'utilizzo automatico senza essere required
nei file che utilizzano le gemme?Come funziona Ruby Gem in un ambiente di rotaie
risposta
Questo viene fatto attraverso bundler/setup
: http://bundler.io/v1.3/bundler_setup.html. È richiesto all'interno del tuo file config/boot.rb
. In breve si pone in primo luogo variabile d'ambiente per puntare al tuo Gemfile:
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
Poi aggiunge percorsi per tutte le gemme a LOAD_PATH, richiedendo bundler/setup
:
require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
Poi si richiede tutte le gemme necessarie (config/application.rb):
Bundler.require(*Rails.groups)
Rails utilizzano bundler (che è la cosa utilizzando il Gemfile
). Quando bundler carica il Gemfile
all'avvio di un'applicazione Rails, richiede automaticamente tutte le gemme elencati lì, quindi non c'è bisogno di farlo da soli.
raccomando di leggere "Crafting Rails 4 Applications: Expert Practices for Everyday Rails Development" Capitolo 1. creare il nostro renderer:
Avviso la gemma ha lo stesso nome del file all'interno della directory lib, che è pdf_renderer. Seguendo questa convenzione, ogni volta che si dichiara questo gioiello nel Gemfile di un'applicazione Rails, il file in lib/pdf_renderer.rb sarà automaticamente richiesto.