Rails — предоставление лицензионного ключа плагину на основе имени хоста

StackOverflow https://stackoverflow.com/questions/1659361

Вопрос

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

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

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

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

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

Любые мысли будут оценены по достоинству!Спасибо!

Это было полезно?

Решение

Агент New 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 отличался от «производственного» на том промежуточном сервере, который работает «в производственном режиме», то вы могли бы просто использовать разделы среды, как предлагает Стив Грэм.

Другие советы

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

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

common: &default_settings
  license_key: 'PASTE_YOUR_KEY_HERE'
  …

development:
  enabled: false
  …

test:
  enabled: false
  …

production:
  enabled: true
  …

staging: 
  enabled: false
  …

и т. д. и т. д.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top