Rails создает простую функцию для запуска в консоли для всей системы

#ruby-on-rails

#ruby-on-rails

Вопрос:

Я хочу сделать что-то такое простое, как:

 rails c
> ping
=> pong
  

Итак, я могу написать действие, подобное:

def ping завершает «понг»

Но куда мне ее поместить? Как мне заставить ее работать без создания экземпляра новой модели? application_helper.rb не работает, как и application_controller.rb

Ответ №1:

Вы можете создать папку services , и в ней вы создаете файл ping_service.rb

 class PingService
 def ping
  puts 'pong'
 end
end
  

а затем в вашей консоли :

 rails c
> PingService.new.ping
=> "pong"
  

Ответ №2:

В случае, если вы хотите запускать пользовательские методы конкретно в Rails, вы можете определить вспомогательные методы в модуле в lib каталоге

 # lib/custom_console_methods.rb

module CustomConsoleMethods
  def ping
    puts 'pong'
  end
end
  

Затем в application.rb файле передайте блок console , который включает ваш модуль в Rails::ConsoleMethods

 # config/application.rb

module YourRailsApp
  class Application < Rails::Application
    console do
      require 'custom_console_methods'
      Rails::ConsoleMethods.include(CustomConsoleMethods)
    end
  end
end
  

Если вы хотите запустить ее в масштабах всей системы, просто поместите методы в ~/.irbrc файл. Она загружается при каждом запуске irb или rails console

 def ping
  puts 'pong'
end