[英]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.