我正在编写位于Rails 5项目的/bin
中的脚本。基本上,我试图遍历各种文件和路径。 Rails.root
可以帮助我完成这项工作,因此我不必担心相对路径等
问题是,当我尝试在脚本中使用Rails.root
时,出现错误:
uninitialized constant Rails (NameError)
我的脚本看起来像这样
bin / 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
的行上中断了:
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 runner
运行脚本,或将所有内容包装在rake任务中。
答案 0 :(得分:0)
运行$ rails runner bin/my_class.rb
。您可以找到有关RailsRunner here
答案 1 :(得分:0)
You can try with
rails r bin/my_class.rb if your file is under bin
否则,您可以使用
rails r#{file_name} .rb指定文件名