代码之家  ›  专栏  ›  技术社区  ›  Sam å±±

分析(如果在生产站点上,而不是本地或heroku子域上)

  •  0
  • Sam å±±  · 技术社区  · 14 年前

    1. mysite.heroku.com网站
    2. mysite-staging.heroku.com网站
    3. mysite.com-这是我唯一想让它运行的网站。

    在我的助手

    def render_analytics
      if local_request? || #on a Heroku subdomain 
         false
      else
         true
      end
    end
    

    <%= render 'shared/analytics' if render_analytics %>
    

    render_analytics 返回布尔值: true 如果在mysite.com上, false local_request? 或者在Heroku子域上(例如:mysite.Heroku.com || 网站staging.heroku.com)

    所以我怎么能知道它是不是来自Heroku。

    1 回复  |  直到 14 年前
        1
  •  1
  •   Steve Ross    14 年前

    使用 hostname :

    if local_request? || `hostname` =~ /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