2016-08-21 13 views
10

mówią w moim Gemfile mamZ bundleriem, jaki jest najlepszy sposób na stwierdzenie, czy klejnot jest "pożądany"?

group :test do 
    gem 'rspec-core', require: false 
end 

Czy istnieje prosty sposób aby sprawdzić, czy grupa test został dołączony? (jak w tym przypadku bundle mógł zostać wywołany z lub bez --without test).

nie mogłem znaleźć jeden, więc zacząłem szukać czy nie rspec-core jest requirable i znalazł kilka oczywistych rozwiązań:

Bundler.definition.index.search("rspec-core") 
# or 
Gem.loaded_specs["rspec-core"] 

Co najbardziej stabilne API, aby ustalić, czy klejnot jest requirable?

(bez prób i wymagają wspomagania LoadError)

+1

Czy pytasz, jak określić, czy klejnot jest "pożądany", czy grupa była wymagana? – user2977636

+0

Pytam, czy klejnot jest "pożądany", poprosiłem o retoryczne grupy, aby podać kontekst. –

+0

Skorzystaj z programu Bundler, jeśli poszukiwana gem może być zależnością jednego wyraźnie powiązanego. Użyj Gem, jeśli plik ruby ​​może zostać wywołany poza kontekstem powiązanym. –

Odpowiedz

0

Zamierzam iść dalej i powiedzieć, że Gem.loaded_specs jest bardziej niezawodny niż przechodzenie przez bundler; Odkryłem okoliczność z bundlerem 1.12.5, w którym mam klejnot od GitHub w jednej z grup, które przechodzę na without, co powoduje, że Bundler.definition.index.search podnosi Bundler::PathError powołując się na klejnot z GitHub, którego celowo nie łączę.

3

Gdy aplikacja szyny generowany jest typowo zawiera linię wykorzystuje Rails.env ustalić, które grupy żądania. Powinno to wyglądać mniej więcej tak: Bundler.require(:default, Rails.env). Zwykle dzieje się to podczas inicjowania aplikacji Rails. Oto fragment kodu, który robi, że:

class Rails::Boot 
    def run 
    load_initializer 

    Rails::Initializer.class_eval do 
     def load_gems 
     @bundler_loaded ||= Bundler.require :default, Rails.env 
     end 
    end 

    Rails::Initializer.run(:set_load_path) 
    end 
end 

Więc jeśli Rails.env jest testować będzie wymagało wszystkie kamienie w grupie badanej.

+0

Dzięki za wskazanie niespójności w moim pytaniu. Zaktualizowałem go, aby wyjaśnić, że zadałem sobie pytanie, czy grupa jest wymagana, ale czy jest ona powiązana z pakietem. –

Powiązane problemy