как использовать lib файлы в rails для другого модуля? - PullRequest
0 голосов
/ 16 апреля 2020

Я новичок в ruby, у меня есть такая папка:

my-project
 - app
   - controllers
     - api
       - v1
        * api_module.rb
       - v2
 - lib
   * class_a.rb

Я хочу использовать class_a.rb в api_module.rb, как мне это сделать?

мой api_module.rb такой

module Api
  module V1
   class ServiceOne < Api::V1::BaseApiController

     def do_something 
       # i want to use here
     end

   end
  end
end

Ответы [ 2 ]

1 голос
/ 16 апреля 2020

Это должно работать:

require 'class_a'

module Api
  module V1
   class ServiceOne < Api::V1::BaseApiController

     def do_something 
       # i want to use here
     end

   end
  end
end

Откройте консоль Rails и вызовите Api :: V1 :: ServiceOne.new.do_something, тогда вы получите ожидаемый результат.

1 голос
/ 16 апреля 2020

Во-первых, вам нужно определить файл lib в каталоге Lib

  • lib
    • class_a.rb

Пример кода

class ClassA
  def request() #Chose any name of the function
     #TODO: Define the Code here whatever you want
  end
end

Теперь вызывайте этот файл Lib везде, где вам нужно использовать LibFileName.new.function_name() в текущем случае, который также ClassA.new.request()

module Api
   module V1
     class ServiceOne < Api::V1::BaseApiController

        def do_something 
           ClassA.new.request() # Calling the lib file 
        end

     end
   end
end

, не пропустите, чтобы загрузить все lib файлы с автозагрузкой в ​​application.rb.

module MyApp
    class Application < Rails::Application
      config.autoload_paths << Rails.root.join('lib')
      config.paths.add Rails.root.join('lib').to_s, eager_load: true
    end
end

В противном случае вы всегда получите ошибку на рабочем сервере при загрузке файлов lib.

Вы также можете вызвать эту функцию lib в консоли rails c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...