Одна вещь, которую я действительно не понимаю, это то, как я могу передать пользовательские параметры запуска экземпляру mongrel.
Я вижу, что общий подход - это использование переменных среды, но в моей среде это не сработает, потому что мое приложение rails обслуживает множество разных клиентов. Большая часть кода распределяется между клиентами, но есть также много различий, которые я реализую, создавая подклассы контроллеров и представлений, чтобы перегрузить или расширить существующие функции или внедрить новые. Чтобы все это работало, я просто добавляю пути к специфическим для клиента модулям путь загрузки модуля ($:).
Чтобы запустить приложение для определенного клиента, я мог бы теперь использовать переменную окружения, например, TARGET = AMAZONE. К сожалению, в некоторых системах я использую несколько беспорядочных кластеров, каждый из которых обслуживает своего клиента. Некоторые из этих систем работают под Windows, и для запуска mongrel я установил mongrel_services. Ясно, что это делает мою переменную среды неподходящей.
Передача этого дополнительного бита данных в приложение оказывается реальной проблемой. Для начала, mongrel_rails service_install отклонит любые [пользовательские] параметры командной строки, которые не задокументированы. Я не слишком обеспокоен тем, что установка служб с помощью программы установки тривиальна.
Однако даже если мне удастся установить mongrel_services таким образом, чтобы при запуске он передавал пользовательский параметр командной строки --target to mongrel_rails start, я получаю сообщение об ошибке, поскольку mongrel_rails не распознает переключатель.
Итак, вот что я посмотрел:
Передать дополнительный параметр:
mongrel_rails start - цель XYZ ...
используйте файл конфигурации и добавьте цель: XYZ, затем выполните:
mongrel_rails start -C x: \ myapp \ myconfig.yml
изменить файл:
Рубин \ Lib \ рубин \ самоцветы \ 1.8 \ самоцветов \ дворняга-1.1.5-x86-mswin32-60 \ Lib \ беспородных \ command.rb
Возможно, я могу использовать опцию --script, но все документы, которые я там нашел, были для Unix
1 и 2 просто не работают. Я играл с 4, но так и не смог ничего сделать. Так что у меня не было выбора, кроме как идти с 3. Хотя это относительно просто, я ненавижу менять код библиотеки ruby.
Особенно разочаровывает то, что 2 не работает. Я имею в виду, что такого неразумного в добавлении других [пользовательских] опций в файл конфигурации? На самом деле, я думаю, что это фундаментальная вещь, которая отсутствует в рельсах. Каким-то образом приложение должно иметь возможность регистрировать и получать доступ к ожидаемым аргументам командной строки.
Если у кого-нибудь есть хорошая идея, как сделать это более элегантно, используя существующую инфраструктуру, у меня есть шоколадная рыбка, которую нужно отдать !!!