Skip to content
Extraits de code Groupes Projets
configuration_methods.rb 3,02 ko
Newer Older
  • Learn to ignore specific revisions
  • Jonne Haß's avatar
    Jonne Haß a validé
    module Configuration
      module Methods
        def pod_uri
          return @pod_uri unless @pod_uri.nil?
          
          url = environment.url.get
          url = "http://#{url}" unless url =~ /^(https?:\/\/)/
          url << "/" unless url.end_with?("/")
          
          begin
            @pod_url = Addressable::URI.parse(url)
          rescue
            puts "WARNING: pod url #{url} is not a legal URI"
          end
          
          @pod_url
        end
        
        def bare_pod_uri
          pod_uri.authority.gsub('www.', '')
        end
        
        def configured_services
          return @configured_services unless @configured_services.nil?
          
          @configured_services = []
          [:twitter, :tumblr, :facebook].each do |service|
            @configured_services << service if services.send(service).enable?
          end
          
          @configured_services
        end
        attr_writer :configured_services
        
        def secret_token
          return ENV['SECRET_TOKEN'] if ENV['SECRET_TOKEN']
          $stderr.puts "FATAL: Running on Heroku with SECRET_TOKEN unset"
          $stderr.puts "       Run heroku config:add SECRET_TOKEN=#{SecureRandom.hex(40)}"
          Process.exit(1)
        end
        
        def version_string
          return @version_string unless @version_string.nil?
          @version_string = version.number.to_s
          @version_string << "-p#{git_revision[0..7]}" if git_available?
          @version_string
        end
        
        def git_available?
          return @git_available unless @git_available.nil?
          
          if heroku?
            @git_available = false
          else
            `which git`
    
            `git status 2> /dev/null` if $?.success?
    
    Jonne Haß's avatar
    Jonne Haß a validé
            @git_available = $?.success?
          end
        end
        
        def git_revision
          get_git_info if git_available?
          @git_revision
        end
        attr_writer :git_revision
        
        def git_update
          get_git_info if git_available?
          @git_update
        end
        attr_writer :git_update
        
        def rails_asset_id
          (git_revision || version)[0..8]
        end
        
        def get_redis_instance
          if redistogo_url.present?
            $stderr.puts "WARNING: using the REDISTOGO_URL environment variable is deprecated, please use REDIS_URL now."
            ENV['REDIS_URL'] = redistogo_url
          end
          
          redis_options = {}
        
          redis_url = ENV['REDIS_URL'] || environment.redis.get
          
          if ENV['RAILS_ENV']== 'integration2'
            redis_options = { :host => 'localhost', :port => 6380 }
          elsif redis_url.present?
            unless redis_url.start_with?("redis://") || redis_url.start_with?("unix:///")
              $stderr.puts "WARNING: Your redis url (#{redis_url}) doesn't start with redis:// or unix:///"
            end
            redis_options = { :url => redis_url }
          end
          
          Redis.new(redis_options.merge(:thread_safe => true))
        end
        
        private
    
        def get_git_info
          return if git_info_present? || !git_available?
          
          git_cmd = `git log -1 --pretty="format:%H %ci"`
          if git_cmd =~ /^([\d\w]+?)\s(.+)$/
            @git_revision = $1
            @git_update = $2.strip
          end
        end
        
        def git_info_present?
          @git_revision || @git_update
        end
      end
    end