2009-11-02 5 views
3

Я использую новую реликвию для Rails, но мне нужна только новая реликвия для мониторинга моей рабочей среды. Тем не менее, у меня есть промежуточный сервер, который также работает в режиме производства. Новая реликвия обнаруживает как операционные экземпляры моего приложения (как это должно быть), но я не хочу платить за мониторинг двух экземпляров, когда я только хочу следить за ним.Rails - предоставление лицензионного ключа для плагина на основе имени хоста

New Relic принимает переменную среды для ключа лицензии:

license_key: <%= ENV['NEWRELIC_ACCOUNT_KEY'] %> 

Можно ли обнаружить имя хоста в файлах среды (т.е. конфигурации/среда/production.rb), так что я могу определить эту среду переменная динамически?

Обе среды развернуты из одного и того же репозитория Git, с той же базой исходного кода, поэтому я не могу по-настоящему изменить его в коде для каждого развертывания - лучше всего было бы как-то определить динамику среды.

Любые мысли будут оценены! Благодаря!

+0

Необычный выбор ответа? –

ответ

4

Агент New Relic рубин будет разбирать файл newrelic.yml конфигурации как Еврорадио перед разбором это как ЯМЛ. Таким образом, вы можете сделать много трюков, таких как:

production: 
    license_key: <%= Socket.gethostname == 'mission-critical.example.com' ? 'PAID_ACCOUNT_LICENSE_KEY' : 'FREE_LITE_ACCOUNT_LICENSE_KEY' %> 

Это разборе все это происходит во время загрузки приложения.

Если ваш RAILS_ENV отличается от «production» на этом промежуточном сервере, который запускается «в режиме производства», вы можете просто использовать разделы среды, как предлагает Стив Грэм.

+0

Спасибо за ответ и за то, что он напомнил мне вернуться к этому вопросу. На самом деле я сделал что-то очень похожее, добавив условие для проверки наличия каталога в файловой системе, хотя вы также можете проверить вывод команды «hostname» или аналогичной идентифицирующей информации. Цените ввод! – shedd

0

Имя хоста доступно только в объекте запроса, поэтому нет, оно недоступно, когда рельсы строят среду.

Я бы просто установил ваш сценарий развертывания, чтобы скопировать production.rb в staging.rb и запустить приложение в «промежуточном» режиме. Другой метод заключается в том, чтобы не сохранить newrelic.yml в вашем scm и вместо этого скопировать его или связать с ним из другого места в текущий каталог развертывания.

2

Вы создали отдельную среду для постановки? т. е. разработки, тестирования, производства и постановки? See here инструкции ...

Сделав это, можно определить поведение для этой среды в config/newrelic.yml

common: &default_settings 
    license_key: 'PASTE_YOUR_KEY_HERE' 
    … 

development: 
    enabled: false 
    … 

test: 
    enabled: false 
    … 

production: 
    enabled: true 
    … 

staging: 
    enabled: false 
    … 

и т.д., и т.д.

+0

Стив, спасибо за ваши идеи. Я не понял, что вы можете указать среды в файле newrelic yml. Интересно, что когда я попросил поддержку New Relic по этому же вопросу, они не упомянули об этом. Я дам этому вихрь и посмотрю, как это работает. Благодаря! – shedd

 Смежные вопросы

  • Нет связанных вопросов^_^