Skip to content
Extraits de code Groupes Projets
configuration_methods.rb 3,91 ko
Newer Older
  • Learn to ignore specific revisions
  • Jonne Haß's avatar
    Jonne Haß a validé
    module Configuration
    
      KNOWN_SERVICES = [:twitter, :tumblr, :facebook, :wordpress].freeze
    
    
    Jonne Haß's avatar
    Jonne Haß a validé
      module Methods
        def pod_uri
    
          return @pod_uri.dup unless @pod_uri.nil?
    
    Jonne Haß's avatar
    Jonne Haß a validé
    
    
    Jonne Haß's avatar
    Jonne Haß a validé
          url = environment.url.get
          url = "http://#{url}" unless url =~ /^(https?:\/\/)/
          url << "/" unless url.end_with?("/")
    
    Jonne Haß's avatar
    Jonne Haß a validé
    
    
    Jonne Haß's avatar
    Jonne Haß a validé
          begin
    
            @pod_uri = Addressable::URI.parse(url)
    
    Jonne Haß's avatar
    Jonne Haß a validé
          rescue
            puts "WARNING: pod url #{url} is not a legal URI"
          end
    
    Jonne Haß's avatar
    Jonne Haß a validé
    
    
          @pod_uri.dup
        end
    
        # @param path [String]
        # @return [String]
        def url_to(path)
          pod_uri.tap {|uri| uri.path = path }.to_s
    
    Jonne Haß's avatar
    Jonne Haß a validé
        end
    
    Jonne Haß's avatar
    Jonne Haß a validé
    
    
    Jonne Haß's avatar
    Jonne Haß a validé
        def bare_pod_uri
          pod_uri.authority.gsub('www.', '')
        end
    
    Jonne Haß's avatar
    Jonne Haß a validé
    
    
    Jonne Haß's avatar
    Jonne Haß a validé
        def configured_services
          return @configured_services unless @configured_services.nil?
    
    Jonne Haß's avatar
    Jonne Haß a validé
    
    
    Jonne Haß's avatar
    Jonne Haß a validé
          @configured_services = []
    
          KNOWN_SERVICES.each do |service|
    
    Jonne Haß's avatar
    Jonne Haß a validé
            @configured_services << service if services.send(service).enable?
          end
    
    Jonne Haß's avatar
    Jonne Haß a validé
    
    
    Jonne Haß's avatar
    Jonne Haß a validé
          @configured_services
        end
        attr_writer :configured_services
    
    Jonne Haß's avatar
    Jonne Haß a validé
    
    
        def show_service?(service, user)
          return false unless self["services.#{service}.enable"]
          # Return true only if 'authorized' is true or equal to user username
          (user && self["services.#{service}.authorized"] == user.username) ||
            self["services.#{service}.authorized"] == true
        end
    
    
    Jonne Haß's avatar
    Jonne Haß a validé
        def secret_token
    
    Jonne Haß's avatar
    Jonne Haß a validé
          if heroku?
            return ENV['SECRET_TOKEN'] if ENV['SECRET_TOKEN']
            warn "FATAL: Running on Heroku with SECRET_TOKEN unset"
            warn "       Run heroku config:add SECRET_TOKEN=#{SecureRandom.hex(40)}"
            Process.exit(1)
          else
            token_file = File.expand_path(
              '../config/initializers/secret_token.rb',
              File.dirname(__FILE__)
            )
            unless File.exist? token_file
    
              `DISABLE_SPRING=1 bin/rake generate:secret_token`
    
    Jonne Haß's avatar
    Jonne Haß a validé
            end
            require token_file
    
    Jonne Haß's avatar
    Jonne Haß a validé
            Diaspora::Application.config.secret_key_base
    
    Jonne Haß's avatar
    Jonne Haß a validé
          end
    
    Jonne Haß's avatar
    Jonne Haß a validé
        end
    
    Jonne Haß's avatar
    Jonne Haß a validé
    
    
    Jonne Haß's avatar
    Jonne Haß a validé
        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
    
    Jonne Haß's avatar
    Jonne Haß a validé
    
    
    Jonne Haß's avatar
    Jonne Haß a validé
        def git_available?
          return @git_available unless @git_available.nil?
    
    Jonne Haß's avatar
    Jonne Haß a validé
    
    
    Jonne Haß's avatar
    Jonne Haß a validé
          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
    
    Jonne Haß's avatar
    Jonne Haß a validé
    
    
    Jonne Haß's avatar
    Jonne Haß a validé
        def git_revision
          get_git_info if git_available?
          @git_revision
        end
    
    Jonne Haß's avatar
    Jonne Haß a validé
    
    
    Jonne Haß's avatar
    Jonne Haß a validé
        def git_update
          get_git_info if git_available?
          @git_update
        end
    
    Jonne Haß's avatar
    Jonne Haß a validé
    
    
    Jonne Haß's avatar
    Jonne Haß a validé
        def rails_asset_id
          (git_revision || version)[0..8]
        end
    
    Jonne Haß's avatar
    Jonne Haß a validé
    
    
    Jonne Haß's avatar
    Jonne Haß a validé
        def get_redis_options
    
          redis_url = ENV["REDIS_URL"] || environment.redis.get
    
    Jonne Haß's avatar
    Jonne Haß a validé
    
    
          return {} unless redis_url.present?
    
    Jonne Haß's avatar
    Jonne Haß a validé
    
    
          unless redis_url.start_with?("redis://", "unix:///")
            warn "WARNING: Your redis url (#{redis_url}) doesn't start with redis:// or unix:///"
    
    Jonne Haß's avatar
    Jonne Haß a validé
          end
    
          {url: redis_url}
    
    Jonne Haß's avatar
    Jonne Haß a validé
        end
    
    Jonne Haß's avatar
    Jonne Haß a validé
    
    
    Jonne Haß's avatar
    Jonne Haß a validé
        def sidekiq_log
          path = Pathname.new environment.sidekiq.log.get
    
          path = Rails.root.join(path) unless path.absolute?
    
    Jonne Haß's avatar
    Jonne Haß a validé
          path.to_s
        end
    
    
    Jonne Haß's avatar
    Jonne Haß a validé
        def postgres?
    
          ActiveRecord::Base.connection.adapter_name == "PostgreSQL"
        end
    
        def mysql?
          ActiveRecord::Base.connection.adapter_name == "Mysql2"
    
        def bitcoin_donation_address
          if AppConfig.settings.bitcoin_wallet_id.present?
    
    Jonne Haß's avatar
    Jonne Haß a validé
            warn "WARNING: bitcoin_wallet_id is now bitcoin_address. Change in diaspora.yml."
    
            return AppConfig.settings.bitcoin_wallet_id
          end
    
          if AppConfig.settings.bitcoin_address.present?
            AppConfig.settings.bitcoin_address
          end
        end
    
    
    Jonne Haß's avatar
    Jonne Haß a validé
        private
    
        def get_git_info
          return if git_info_present? || !git_available?
    
    Jonne Haß's avatar
    Jonne Haß a validé
    
    
    Jonne Haß's avatar
    Jonne Haß a validé
          git_cmd = `git log -1 --pretty="format:%H %ci"`
    
    Jonne Haß's avatar
    Jonne Haß a validé
          if git_cmd =~ /^(\w+?)\s(.+)$/
    
    Jonne Haß's avatar
    Jonne Haß a validé
            @git_revision = $1
            @git_update = $2.strip
          end
        end
    
    Jonne Haß's avatar
    Jonne Haß a validé
    
    
    Jonne Haß's avatar
    Jonne Haß a validé
        def git_info_present?
          @git_revision || @git_update
        end
      end
    end