簡體   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