Использование hostname
:
if local_request? || `hostname` =~ /heroku/i
Более чистое решение - установить постоянную в вашей среде во время развертывания, которая позволит вам узнать, используете ли вы Heroku.Поскольку процесс развертывания Heroku довольно непрозрачен с точки зрения того, что вы можете работать с файлами конфигурации, ваш метод может запоминать результат, поэтому вы не выполняете системный вызов каждый раз при визуализации представления.
Iтолько что сделал нечто подобное с методом, который проверяет адаптер базы данных, чтобы учесть различия между моей средой разработки и Heroku.Вот мой lib/adapter.rb
:
class Adapter
cattr_reader :adapter
def self.postgres?
@@adapter ||= Rails.configuration.database_configuration[Rails.env]['adapter']
adapter == 'postgresql'
end
def self.mysql?
@@adapter ||= Rails.configuration.database_configuration[Rails.env]['adapter']
adapter == 'mysql'
end
def self.sqlite?
@@adapter ||= Rails.configuration.database_configuration[Rails.env]['adapter']
adapter.include?('sqlite')
end
end
Обратите внимание, что в дополнение к этому вы должны изменить application.rb
таким образом, чтобы lib
был добавлен к вашему пути автозагрузки:
config.autoload_paths += Dir["#{config.root}/lib/**/"] # include all subdirectories