Прежде всего вы можете избавиться от:
config.autoload_paths << "#{Rails.root}/app/api"
config.eager_load_paths << "#{Rails.root}/app/api"
Все подкаталоги app
по умолчанию являются путями автоматической загрузки. Изредка автозагрузчик «зависает» и не будет забирать новые добавленные каталоги. Обычно это можно исправить, перезапустив сервер rails и пружину ($ spring stop
).
Здесь есть две проблемы. Во-первых, перегиб. Rails изменяет имена файлов из классов, верблюжая имя класса. К сожалению, это не работает автоматически для аббревиатур как ABC
-> a_b_c.rb
.
Таким образом, чтобы автозагрузчик искал EtherumAPI в etherum_api.rb
, необходимо добавить перегиб:
# config/initializers/inflections.rb
ActiveSupport::Inflector.inflections(:en) do |inflect|
inflect.acronym 'EtherumAPI'
end
Вторая проблема заключается в том, что имена модулей должны соответствовать фактическому пути к файлу. .
# app/api/etherum_api/v1/request.rb
module EtherumAPI
module V1
class Request
class << self
def trancation
end
end
end
end
end