Яuбy / Говнокод #20138 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
def self.check_environment_variables
    env_variables_missing = ENV['BATTLE_NET_KEY'].nil? || ENV['BATTLE_NET_KEY'].empty? || ENV['BATTLE_NET_REGION'].nil? || ENV['BATTLE_NET_REGION'].empty? || ENV['BATTLE_NET_LOCALE'].nil? || ENV['BATTLE_NET_LOCALE'].empty?
    message =  'Env variables missing:' if env_variables_missing
    message += " ENV['BATTLE_NET_KEY']" if ENV['BATTLE_NET_KEY'].nil? || ENV['BATTLE_NET_KEY'].empty?
    message += " ENV['BATTLE_NET_REGION']" if ENV['BATTLE_NET_REGION'].nil? || ENV['BATTLE_NET_REGION'].empty?
    message += " ENV['BATTLE_NET_LOCALE']" if ENV['BATTLE_NET_LOCALE'].nil? || ENV['BATTLE_NET_LOCALE'].empty?
    message if env_variables_missing
  end

Кто-нибудь знает метод, которым можно проверять на nil и на empty одновременно?

Запостил: Artik1994 Artik1994, (Updated )

Комментарии (30) RSS

  • Hash.dig в 2.3.0 http://ruby-doc.org/core-2.3.0_preview1/Hash.html#method-i-dig и проверять не `empty?`, а 'blank?' или `present?` (там ведь строки же?)
    или какулька типа такой:
    def dig_to_hash(hash, *keys_to_dig)
        chain = keys_to_dig.inject('') { |a, e| a << "[:#{e}]" }
        new_hash = hash.dup
        new_hash.try(:deep_symbolize_keys!)
        begin
          instance_eval("new_hash#{chain}")
        rescue NoMethodError
          nil
        end
      end
    Ответить
  • > на nil и на empty одновременно?
    делов то
    class NilClass
    def empty?
      true
    end
    end
    Ответить
  • Бля, чо за хуйня. Почему пустота не равно ничему?
    Ответить
    • это не пустота, а свойство строки - иметь нулевую длину. А делать 0 == '' == nil == [] == {} == false это путь в ад.
      Ответить
    • Тут код не смотрел, но пустота (нул) в том же скл - не равна ничему и это правильно.
      Ответить
    • потому что nil это nil, a .empty вернет либо false либо true
      а false != nil != true, лагична же!
      Ответить
      • .empty? для nil вернет ошибку, потому что у nil нет такого метода.
        Ответить
        • а я чо сказал nil.empty? прочитал сам себя джвадцать раз, вроде там ничего про nil.empty и нет.
          Возможно я не сказал что-то или вы не правельна меня понели.
          явно что у ничего не может быть метода на пустоту
          Ответить
          • ты сказал что .empty вернет false либо true, а он может вернуть еще и ошибку. А так да, разобрались в общем.
            Ответить
    • Объясняю: есть переменная окружения, к примеру ENV['BATTLE_NET_KEY']. Она по умолчанию nil, и если она нил нужно выдать сообщение об ошибке, но так же она может быть просто пустой строкой '' (кто-то задал ENV['BATTLE_NET_KEY'] = '') и в этом случае нужно вывести то же сообщение об ошибке.

      Как это реализовать одним методом, чтобы не засорять код?

      Сейчас:

      ENV['BATTLE_NET_KEY'].nil? || ENV['BATTLE_NET_KEY'].empty?

      Должно быть:

      ENV['BATTLE_NET_KEY'].method?
      Ответить
      • Может лучше method(ENV['BATTLE_NET_KEY']) ?
        Тогда ответ что за method очевиден. Ну я написал выше как сделать чтоб .emtpy? работал для nil, но это грязный хак и проблемы не заставят себя ждать.
        Хотя в данном случае по-моему проблема X-У, кто мешает сделать
        KEYS = [ 'BATTLE_NET_KEY', 'BATTLE_NET_REGION', 'BATTLE_NET_LOCALE' ]
        ...
        KEYS.map{|x|ENV[x]}.select{|x| x.nil? || x.empty?}
        Ответить
        • А ты не знаешь, чего на гейдеве какие-то унылые треды последнее время?
          Ответить
          • старость видимо. пора валить с этого геймдева.
            Ответить
            • У тебя же такаяже фигня, как и у меня? Для тебя тоже тамошние треды скатились? Ну вот на говнокоде ты вроде еще сидишь и не считаешь его унылым... Хотя всякие вебкилы с ботами превратили его в ядреныую помойку
              Ответить
              • Я сюда редко захожу. Тут конечно борманды погениальнее гдшных и треды бывают интересные, но уж очень нечасто.
                Ответить
        • Я сделал так:

          [ ENV['BATTLE_NET_KEY'], ENV['BATTLE_NET_REGION'], ENV['BATTLE_NET_REGION'] ].select{|x| x.nil? || x.empty?}

          Но не смекну как добавлять сообщения-предупреждения о необходимости ввести то или иное значение.
          Ответить
          • Вот, все до чего дошел:

            keys = [ ENV['BATTLE_NET_KEY'], ENV['BATTLE_NET_REGION'], ENV['BATTLE_NET_LOCALE'] ].select{|x| x.nil? || x.empty?}
            message = 'Env variables missing:' if keys.include?(nil) || keys.include?('')
            message += " ENV['BATTLE_NET_KEY']" if keys[0] == nil || keys[0] == ''
            message += " ENV['BATTLE_NET_REGION']" if keys[1] == nil || keys[1] == ['']
            message += " ENV['BATTLE_NET_LOCALE']" if keys[2] == nil || keys[2] == ['']
            message
            Ответить
            • if keys.empty?
              return ""
              else
              return 'Env variables missing:'+keys.map{|x| "ENV[#{x}]"}.join(" ")
              Ответить
              • keys = [ ENV['BATTLE_NET_KEY'], ENV['BATTLE_NET_REGION'], ENV['BATTLE_NET_REGION'] ].select{|x| x.nil? || x.empty?}
                if keys.empty?
                return ""
                else
                return 'Env variables missing:'+keys.map{|x| "ENV[#{x}]"}.join(" ")
                end

                Не пашет...
                Ответить
  • Весь код выше - бред. Так лучше

    ```
    def self.check_environment_variables
    checked_env_vars = %w(BATTLE_NET_KEY BATTLE_NET_REGION BATTLE_NET_LOCALE)
    missing_env_vars = checked_env_vars.select { |env_var| ENV.fetch(env_var, '').empty? }
    message = missing_env_vars.map { |env_var| "ENV['#{env_var}']" }.join(', ')
    "Env variables missing: #{message}" if missing_env_vars.any?
    end
    ```
    Ответить
      • > Матцумото
        попытка примирить поливановохолопов и хэпбернобояр провалилась
        Ответить
        • Считаю спор «поливановцы vs хепбёрновцы» некорректным, ибо стороны относятся к разным алфавитам. То ли дело «Хепбёрн vs нихон-сики vs кунрэй-сики».

          И да, я считаю, что хепбёрновка не нужна, ибо кунрэй/нихон ближе к самой задумке каны.
          Ответить

Добавить комментарий

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8