NameError - 运行dev服务器时未初始化的常量

时间:2016-01-19 11:16:24

标签: ruby-on-rails ruby sinatra foreman

在使用foreman或rails服务器运行Sinatra应用程序时,我无法使用置于config / initializers / constants.rb下的常量。

App似乎没有看到他们向我扔这个:

 NameError - uninitialized constant UserJson::API_DATE_FORMAT:

我可以以某种方式强行重装吗?

编辑: 这是失败的类:

require 'active_record'

    class UserJson

      attr_accessor :id, :active, :created_at, :updated_at, :name, :email

      def self.private_json(user)
        json = UserJson.new()
        json.id = user.id
        json.active = user.active
        json.email = user.email
        json.name = user.name
        json.updated_at = user.updated_at.strftime(API_DATE_FORMAT)
        json.created_at = user.created_at.strftime(API_DATE_FORMAT)
        json
      end

    end

它位于app / models / user.rb下。我在那里有更多的类,当尝试使用API​​_DATE_FORMAT

读取文件中声明的一个常量时,每个类都失败了

1 个答案:

答案 0 :(得分:3)

当您更新/添加config目录下的任何内容时,您应该重新启动服务器,因为更改不会自动加载到此文件夹中。

另一个原因可能是常数解决问题:

json.created_at = user.created_at.strftime(::API_DATE_FORMAT)

修改

您可以在模型中要求包含常量的文件:

 require_relative 'config/initializers/constants'

但是由于你有多个模型使用这些常量,我会尝试全局解决它。

将require添加到主应用程序文件将确保您不必在每个模型中要求该文件,而只需要一次:

# collector.rb (Sinatra input file)
require_relative 'config/initializers/constants'