【问题标题】:How to create a custom method for the rails console?如何为 Rails 控制台创建自定义方法?
【发布时间】:2012-06-26 03:13:34
【问题描述】:

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

def clear; system 'clear' end

所以当我的控制台变脏时,我唯一要做的就是输入clear,然后控制台就会被清除。

我想使用这个功能而不是每次都重新输入。

提前致谢。

【问题讨论】:

  • 你试过Ctrl-L和Ctrl-K吗?

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


【解决方案1】:

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

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

【讨论】:

【解决方案2】:

把这个函数放到~/.irbrc

def clear
  system 'clear'
end

然后运行 ​​irb 就可以使用了。

【讨论】:

    【解决方案3】:

    如果您想在 rails-project-directory 领域定义控制台助手,还有另一种有趣的方法:您可以扩展 Rails::ConsoleMethods-module,它包含众所周知且方便的控制台内容,例如 @ 987654326@、helpercontroller 等...这是一种简单的方法:

    只需将一个模块添加到您的 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) - 或者在config/application.rb中扩展Rails::ConsoleMethods - 例如像这样(找到herehere):

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-25
      • 1970-01-01
      • 1970-01-01
      • 2013-10-28
      相关资源
      最近更新 更多