#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