Неопределенный метод `prepend 'для HTTP :: Client Gem - PullRequest
0 голосов
/ 12 февраля 2020

Я недавно обновил свои проекты ruby и версии rails до 2.5.1 и 5.2 соответственно. После этого, когда я пытаюсь выполнить одно из моих заданий по рейку, я получаю следующее сообщение об ошибке:

    /home/sachin/.gem/ruby/2.5.1/gems/httpi-2.4.2/lib/httpi/auth/ssl.rb:13: warning: constant OpenSSL::SSL::SSLContext::METHODS is deprecated
rake aborted!
NoMethodError: undefined method `prepend' for #<HTTP::Client:0x00005572aa1d57a0>
Did you mean?  presence
Traceback (most recent call last):
/home/sachin/.gem/ruby/2.5.1/bin/ruby_executable_hooks: undefined method `reject' for nil:NilClass (NoMethodError)

КОД РЕЗУЛЬТАТА РЕЙКА: - Это модуль рейка, который я использую в настоящее время, и он выдает ошибку.

module Awr
      class Operation
        def initialize(action:,http_method:,project_key:,path:,**const_args)
          @action = action
          @http_method = http_method
          @project_key = project_key
          @path = path
          @const_args = const_args
        end

        def execute(client:,url:,project:,**params)
          client.prepend(http_method,full_url(url),make_params(project,params))
        end

        def self.register(key,**args)
          raise KeyError.new("#{key} operation already defined.") if lookup.has_key?(key)

          lookup[key] = new(**args)
        end

        def self.[](key)
          lookup.fetch(key)
        end

        private
        attr_reader :action,:http_method,:project_key,:path,:const_args

        def full_url(url)
          URI.join(url,path)
        end

        def make_params(project,params)
          {
            params: params.merge(
              project_key => project,
              action: action,
              **const_args
            )
          }
        end

        def self.lookup
          @lookup ||= {}
        end

        def self.reset
          @lookup = {}
        end
      end

    end

Модуль Rake, который я вызываю с помощью задачи rake.

module Awr
  class EnqueueAllSyncs < Rectify::Command

    def initialize(sync_job: SyncProjectJob, get_projects: GetProjects.new)
      @get_projects = get_projects
      @sync_job = sync_job
    end

    def call
      project_list.each do |project|
        queue(project)
      end
    end

    protected
    attr_reader :get_projects, :sync_job

    def queue(project)
      sync_job.perform_later(project_id(project), project.last_updated.to_s)
    end

    def project_list
      get_projects.call
    end

    def project_id(project)
      project.name
    end

  end
end

И, наконец, задача rake.

desc "Enqueue Sync jobs for all projects"
  task :sync_all => :environment do |t,args|
    Awr::EnqueueAllSyncs.call
  end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...