Muszę wykonać polecenie procesu, ustawiając dla niego zmienną środowiskową. Próbowałem ten jeden-liner:Wyłuskanie z ruby podczas ustawiania zmiennej środowiskowej
system "RBENV_VERSION=system ruby extconf.rb"
składnia działa to w skrypcie, ale nie z rubinem. (Aktualizacja:. okazuje składnia ta współpracuje z ruby po wszystkim, ale nie udało mi się zobaczyć jego działanie ze względu na mój szczególności przypadków użycia)
Więc robię to:
rbenv_version = ENV['RBENV_VERSION']
ENV['RBENV_VERSION'] = 'system'
begin
system "ruby extconf.rb"
ensure
ENV['RBENV_VERSION'] = rbenv_version
end
Jestem zmuszony do tak długiego wyrażenia, ponieważ nie chcę przesłonić zmiennej środowiskowej na stałe, jeśli ma już wartość.
Coś krótszego, co przychodzi ci na myśl?
Ty da man. \ o/ – mislav
To jest świetna odpowiedź. Dokumentacja dla ['Kernel # system'] (http://ruby-doc.org/core-1.9.3/Kernel.html#method-i-system) nie jest wystarczająco jasna na temat tej funkcjonalności. Bardzo dobrze. – Phrogz
Dla ruby 1.8, spójrz na POSIX :: Spawn @ rtomayko, połączony w innym komentarzu. – alxndr