【问题标题】:Where to define method to be accessible directly from rails console在哪里定义可直接从 Rails 控制台访问的方法
【发布时间】:2012-02-21 09:54:46
【问题描述】:

所以想法是定义

def foo
  puts "Works!"
end

直接从控制台不加载我写的任何东西

irb(main):001:0>foo()
=> "Works!"
irb(main):002:0>

我在 Windows 上使用 1.9.3。我想使用它来获得一个重新加载 lib/* 的方法,这样我就不需要重新启动控制台。谢谢。

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    我认为这就是您要问的...我在初始化程序中有以下代码:

    if defined?(Rails::Console)
      require "util/console_extensions"
      include ConsoleExtensions
    end
    

    以及lib/util/console_extensions.rb中定义的控制台中我想要的任何额外方法

    module ConsoleExtensions
      def foo
        puts "Works!"
      end
    end
    

    这会在加载 rails 控制台时自动需要并包含 ConsoleExtension 模块,并使其中定义的方法可用,而无需手动加载任何内容。

    【讨论】:

    • 纯真棒!谢谢,非常聪明的解决方案。
    • 这对我不起作用——Rails::Console 未定义。这里的第一条评论 (stackoverflow.com/a/4604079/2339708) 认为是因为 Spring。
    【解决方案2】:

    如果这只是为了测试目的,那么在模型中定义这些文件:) 然后将它们移动到 lib 目录

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-02
      • 2016-09-10
      • 2011-06-08
      • 2019-07-29
      • 2016-08-22
      相关资源
      最近更新 更多