![](/img/trans.png)
[英]Uninitialized constant RAILS_ROOT: Surveyor gem and using 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.to_s
。 也不起作用 有谁知道为什么我无法在脚本中访问Rails.root
?
编辑我能够通过添加解决此问题
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'config', 'environment'))
到我脚本的顶部。 这将加载导轨。 默认情况下,脚本速度较慢,并且我不是只为了使用Rails.root
加载所有rails的Rails.root
,但目前它可以工作。
其他解决方案(例如下面的答案)是使用rails runner
运行脚本,或者将所有内容包装在rake任务中。
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.