Rails создает простую функцию для запуска в консоли для всей системы - PullRequest
0 голосов
/ 06 апреля 2019

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

rails c
> ping
=> pong

Так что я могу написать действие как:

def ping ставит "понг" конец

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

Ответы [ 2 ]

2 голосов
/ 06 апреля 2019

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

class PingService
 def ping
  puts 'pong'
 end
end

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

rails c
> PingService.new.ping
=> "pong"
1 голос
/ 06 апреля 2019

Если вы хотите запускать пользовательские методы специально в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...