Я недавно обновил свои проекты 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