【发布时间】:2018-03-19 15:30:42
【问题描述】:
给定以下类(这是实际的类,没有其他代码)
class PageRepo
cattr_accessor :root_path
end
和初始化文件
PageRepo.root_path = Rails.root.join("content")
当我跑步时
rails console
PageRepo.root_path
=> PageRepo.root_path
=> #<Pathname:/Users/blah/my_rails_app/content/pages>
但是,当我尝试在我的 rails 控制器中访问它时,root_path 值为 nil。 (我已经使用 web_console 进行了检查。)
没有其他类的子类或者是 PageRepo 类的父类,并且在初始化阶段之后,我没有在类级别或实例级别的任何地方将 root_path 设置为 nil。我已经多次重新启动 spring 和我的服务器但无济于事。
关于 Rails 初始化程序或 cattr_accessor,有什么我不知道的吗?
更新
我想设置这样的路径,因为在我的代码中我将初始化一个 PageRepo 实例并且路径不会改变。但是,它可能会在不同的环境中发生变化。 IE。在开发中,路径将不同于测试和生产环境。虽然我可以做
def initialize
@root_path = ENV['ROOT_PATH']
end
我不希望强迫程序员使用 ENV VARS 来执行此操作,因此我在上面进行了尝试。
【问题讨论】:
标签: ruby-on-rails