如何为rails控制台创建自定义方法?

时间:2012-06-24 17:27:03

标签: ruby-on-rails ruby ruby-on-rails-3 irb rails-console

当我在Ubuntu中使用Rails控制台进行长时间会话时,我定义了clear方法:

def clear; system 'clear' end

因此,当我的控制台变脏时,我唯一需要做的就是键入clear并清除控制台。

我想使用此功能,而不是每次都重新输入它。

提前致谢。

3 个答案:

答案 0 :(得分:4)

只需将其放入~/.irbrc文件即可。每次运行irbrails console时都会加载它。 Rails控制台只是irb,加载了Rails应用程序环境。

在此处查找有关irb的更多信息:http://ruby-doc.com/docs/ProgrammingRuby/html/irb.html#S2

答案 1 :(得分:1)

将此功能设为~/.irbrc

def clear
  system 'clear'
end

然后当你运行irb时它将可用。

答案 2 :(得分:0)

如果您想在rails-project-directory领域中定义控制台帮助程序,则还有另一种有趣的方法:您可以扩展Rails::ConsoleMethods-module,该模块包含著名且方便的console-stuff例如apphelpercontroller等...这是一种简单的方法:

只需将一个模块添加到保存您的自定义控制台帮助程序的lib目录中,然后通过mixin前缀将其应用于Rails::ConsoleMethods即可,例如:

# Extending Rails::ConsoleMethods with custom console helpers
module CustomConsoleHelpers

  # ** APP SPECIFIC CONSOLE UTILITIES ** #

  # User by login or last
  def u(login=nil)
    login ? User.find_by_login!(login) : User.last
  end

  # Fav test user to massage in the console
  def honk
    User.find_by_login!("Honk")
  end

  # ...

  # ** GENERAL CONSOLE UTILITIES ** #

  # Helper to open the source location of a specific 
  # method definition in your editor, e.g.:
  #
  #   show_source_for(User.first, :full_name)
  #
  # 'inspired' (aka copy pasta) by 'https://pragmaticstudio.com/tutorials/view-source-ruby-methods' 
  def show_source_for(object, method)
    location = object.method(method).source_location
    `code --goto #{location[0]}:#{location[1]}` if location
    location
  end

  # ...
end

require 'rails/console/helpers'
Rails::ConsoleMethods.send(:prepend, CustomConsoleHelpers)

这对我来说就像是魅​​力。这种方法(我没有测试过)的其他替代方法是将以上内容放入初始化程序中(如here),或者将Rails::ConsoleMethods扩展到config/application.rb中,例如-这样(找到herehere):

console do
  require 'custom_console_helpers'
  Rails::ConsoleMethods.send :include, CustomConsoleHelpers
end