NameError - 运行 开发服务器时未初始化的常量
NameError - uninitialized constant while running dev server
我不能使用放在 config/initializers/constants.rb 下的常量,而 运行 Sinatra 应用程序使用工头,或 rails 服务器。
App 似乎没有看到他们向我扔这个:
NameError - uninitialized constant UserJson::API_DATE_FORMAT:
我可以强制重新加载它们吗?
编辑:
这是失败的 class:
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 下。我在那里得到了更多 classes,并且在尝试读取文件中使用 API_DATE_FORMAT
声明的常量之一时,每个都失败了
当您 update/add 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'
我不能使用放在 config/initializers/constants.rb 下的常量,而 运行 Sinatra 应用程序使用工头,或 rails 服务器。
App 似乎没有看到他们向我扔这个:
NameError - uninitialized constant UserJson::API_DATE_FORMAT:
我可以强制重新加载它们吗?
编辑: 这是失败的 class:
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 下。我在那里得到了更多 classes,并且在尝试读取文件中使用 API_DATE_FORMAT
声明的常量之一时,每个都失败了当您 update/add 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'