【问题标题】:Requiring ActiveRecord on IRB - Ruby (NO Rails)在 IRB 上需要 ActiveRecord - Ruby(无 Rails)
【发布时间】:2016-09-26 03:48:39
【问题描述】:

如何在 IRB 会话中加载 ActiveRecord

我有以下

# config/app.rb
require 'active_record'

ActiveRecord::Base.establish_connection(
  adapter:  'sqlite3',
  database: 'db/mydb.sqlite3'
)

但是当我启动 IRB 并尝试加载它时

irb#1(main):001:0> require config/application.rb

我明白了

NameError: undefined local variable or method `config' for main:Object
Did you mean?  conf

我希望能够与来自 IRB 的 ActiveRecord 对象进行交互。 我没有使用 Rails,只使用 ActiveRecord。

谢谢

【问题讨论】:

    标签: ruby activerecord


    【解决方案1】:

    这里有两点要改变:

    1. 始终在您需要的路径周围加上引号。 Ruby 说“未定义的局部变量或方法”的原因是它试图将config 解释为变量名。将名称放在引号中,它不会。
    2. 在加载属于应用程序一部分的文件时使用require_relativerequire 只查看默认的 Ruby 加载路径。

    试试这个:

        require_relative 'config/application.rb'
    

    【讨论】:

      【解决方案2】:

      您可以使用pry 来构建从命令行启动的控制台。下面的简单控制台解决方案。这样你就不必每次盯着交互式会话时都需要在 irb 中。

      # bin/console
      #!/usr/bin/env ruby
      require_relative '../config/app.rb'
      require 'pry'
      binding.pry
      

      更多关于撬https://github.com/pry/pry

      附:您应该在 bin/console 上设置 +x,即

      $ chmod +x bin/console
      

      那你就打电话

      $ bin/console 
      

      并让所有代码从 config/app.rb 运行并准备好交互式会话。不需要从 irb 开始工作。

      Poor-man's rails console equiv。 :-)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-12-21
        • 2018-10-15
        • 1970-01-01
        • 1970-01-01
        • 2011-07-08
        • 2013-08-20
        • 1970-01-01
        相关资源
        最近更新 更多