繁体   English   中英

Rails.root-未初始化的常量

[英]Rails.root - uninitialized constant

我正在编写位于Rails 5项目的/bin中的脚本。 基本上,我试图遍历各种文件和路径。 可以帮助我完成这项工作的是Rails.root因此我不必担心相对路径等

问题是,当我尝试在脚本中使用Rails.root时,出现错误:

uninitialized constant Rails (NameError)

我的脚本看起来像这样

斌/ my_class.rb

class MyClass
  def initialize
    ...
  end

  def my_function
    ...
    Rails.root.to_s
  end 
end

MyClass.new.my_function

然后我叫我的脚本像

ruby bin/template_check.rb foo=bar

它在我通过错误消息调用Rails.root的行上Rails.root

uninitialized constant Rails (NameError)

我努力了

  • 将Rails.root移到类之上的常量(可能是名称冲突之类的东西?)。 没用
  • 将名称更改为::Rails.root.to_s 也不起作用

有谁知道为什么我无法在脚本中访问Rails.root

编辑我能够通过添加解决此问题

require File.expand_path(File.join(File.dirname(__FILE__), '..', 'config', 'environment'))

到我脚本的顶部。 这将加载导轨。 默认情况下,脚本速度较慢,并且我不是只为了使用Rails.root加载所有rails的Rails.root ,但目前它可以工作。

其他解决方案(例如下面的答案)是使用rails runner运行脚本,或者将所有内容包装在rake任务中。

使用$ rails runner bin/my_class.rb 你可以在这里找到更多关于滑轨的信息

You can try with

rails r bin/my_class.rb  if your file is under bin

否则你可以使用

rails r#{file_name} .rb指定文件名

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM