【问题标题】:How to require ActiveRecord In IRB如何在 IRB 中要求 ActiveRecord
【发布时间】:2018-10-15 21:40:40
【问题描述】:

我想在我的 IRB 会话中加载 ActiveRecord gem,但以下操作不起作用:

require 'activerecord'
2.4.1 :004 > require 'activerecord'
LoadError: cannot load such file -- activerecord
    from /Users/robskrob/.rvm/rubies/ruby-2.4.1/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /Users/robskrob/.rvm/rubies/ruby-2.4.1/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from (irb):4
    from /Users/robskrob/.rvm/rubies/ruby-2.4.1/bin/irb:11:in `<main>'

这个也不是:

2.4.1 :018 > require 'activerecord-5.1.2'
LoadError: cannot load such file -- activerecord-5.1.2
    from /Users/robskrob/.rvm/rubies/ruby-2.4.1/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:120:in `require'
    from /Users/robskrob/.rvm/rubies/ruby-2.4.1/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:120:in `require'
    from (irb):18
    from /Users/robskrob/.rvm/rubies/ruby-2.4.1/bin/irb:11:in `<main>'

这是我在 irb 中的 Gem 路径:

        2.4.1 :012 > Gem.path
     => [
          "/Users/robskrob/.rvm/gems/ruby-2.4.1", 
          "/Users/robskrob/.rvm/gems/ruby-2.4.1@global
        ]

这是我的活跃记录宝石:

ls /Users/robskrob/.rvm/gems/ruby-2.4.1/gems/activere
activerecord-4.2.10/   activerecord-5.1.2/    activerecord-5.1.4/    activerecord-5.1.6/
activerecord-5.0.0.1/  activerecord-5.1.3/    activerecord-5.1.5/    activeresource-5.0.0/

如何将其中一个 ActiveRecord gem 加载到我的 IRB 会话中?

我查看了this postthis post,但我无法从问题或答案中找到解决方案。

【问题讨论】:

  • 你在使用Bundler吗?
  • @tadman 是的,我正在使用 bundler 安装 gems。
  • 您也需要先require 'bundler/setup',以确保在尝试要求任何 gem 依赖项之前加载您的 Bundler 环境。
  • 如果您在启动 irb 后立即查看 $LOADED_FEATURES,您会看到已经加载了一些 RubyGems 代码。
  • bundler/setup 部分是为了确保您使用的是Gemfile 中指定的正确 ActiveRecord 版本,而不仅仅是碰巧安装的任何版本。

标签: ruby activerecord rubygems require irb


【解决方案1】:

试试require('active_record')

如果您查看 gem Github 存储库,实际文件名是 active_record.rb,所以上面的代码应该可以工作。

https://github.com/rails/rails/tree/master/activerecord/lib

【讨论】:

  • 这是在 ActiveRecord 3.0 前后重命名的,不是吗?
  • 说实话,我真的不知道。因此,在 irb 中,require 所做的是查找作为参数传入的任何 gem,如果它无法找到 gem,它将通过错误“LoadError:无法加载此类文件--”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-30
  • 2013-08-20
  • 1970-01-01
  • 2015-08-13
  • 2013-05-12
相关资源
最近更新 更多