Ответ 1
Для sqlite3-ruby ваш метод поддерживается с января 2011 года. Но в основном невозможно переопределить это из-за того, как работает rubygems. Это
-
Распакует драгоценный камень.
-
Входит в спецификацию и обнаруживает, что использует атрибут 'extensions' - обычно путь к специально написанному файлу extconf.rb.
-
Запускает этот файл для создания Makefile. Если автор extconf.rb явно не указан сказал, чтобы соблюдать env переменные, они игнорируются. Например, в последних версии sqlite3-ruby gem, его extconf.rb имеет строку
RbConfig::MAKEFILE_CONFIG['CC'] = ENV['CC'] if ENV['CC']
Итак, если вы запустите Bash
CC=gcc gem install sqlite3-ruby
extconf.rb будет генерировать Makefile с переменной
CC
в ней, которая установитеgcc
или что угодно. -
После создания Makefile rubygems выполняет утилиту
make
для компиляции расширение.
Теоретически, если rubygems позволили нам указать дополнительную командную строку
параметры для make, мы могли бы использовать его опцию -e
, а затем не зависеть от
авторы extconf.rb вообще.
(-e
параметр дает переменные, взятые из приоритета среды над
переменные из make файлов.)