Rails - Предоставление лицензионного ключа для плагина на основе имени хоста - PullRequest
3 голосов
/ 02 ноября 2009

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

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

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

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

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

Любые мысли приветствуются! Спасибо!

Ответы [ 3 ]

4 голосов
/ 09 января 2012

Новый агент Relic Ruby проанализирует файл конфигурации newrelic.yml как ERB, а затем проанализирует его как YAML. Таким образом, вы можете сделать много полезных трюков, таких как:

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

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

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

2 голосов
/ 03 декабря 2009

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

Сделав это, можно указать поведение для этой среды в 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 голосов
/ 02 ноября 2009

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

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

...