Rails创建一个简单的函数,在系统范围的控制台中运行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rails创建一个简单的函数,在系统范围的控制台中运行相关的知识,希望对你有一定的参考价值。

我想做一些简单的事情:

rails c
> ping
=> pong

所以我可以写一个动作,如:

def ping将“pong”结束

但是我把它放在哪里?如何在不必实例化新模型的情况下使其工作? application_helper.rb不起作用,application_controller.rb也不起作用

答案

如果您想特别在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文件中即可。每次运行irbrails console时都会加载它

def ping
  puts 'pong'
end
另一答案

您可以创建一个文件夹services,然后在其中创建一个文件ping_service.rb

class PingService
 def ping
  puts 'pong'
 end
end

然后在你的控制台中:

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

以上是关于Rails创建一个简单的函数,在系统范围的控制台中运行的主要内容,如果未能解决你的问题,请参考以下文章

无法在 gem Devise 中调整控制器,ruby on rails 4

复杂的 Rails 模型/关联

如何在 Rails 3.2.1 中使用控制器特定的样式表?

Rails 应用程序中的动态角色和权限系统

系统范围控制台日志记录

Rails、Simple Form 和 Javascript 显示/隐藏脚本