0

当我尝试在“mainstreet”环境中启动我的 Rails 服务器时,我的 config/site_config.rb 文件中的这个函数

def self.settings(env)
    answer = YAML::load_file('config/siteconfig.yml')[env]
    raise "No settings for environment #{env}" if answer.nil?
    answer
end

返回“环境主街没有设置”在siteconfig.yml中我有:

mainstreet:
environment: mainstreet
S3_DOC_BUCKET: 
PPTX_GEN_SERVICE:
PDF_GEN_SERVICE: 
OBJ_THUMB_SERVICE: 
WINDOWS_CLIENT_URL: 
KM_KEY:
HOST_NAME: http://localhost:3000

我在 /config 中有一个 mainstreet.rb 文件,其中定义了设置。我是红宝石的新手,所以我不确定这里发生了什么,我从来没有遇到过这样的问题。另外,我正在使用Windows。

这是完整的跟踪:

4

1 回答 1

1

听起来当前目录不是您认为的那样...您需要指定配置文件的完整路径:

def self.settings(env)
    path = File.join(Rails.root, "config", "siteconfig.yml")
    answer = YAML::load_file(path)[env]
    raise "No settings for environment #{env}" if answer.nil?
    answer
end

编辑:您的配置文件格式错误,如果您在这里的内容是正确的。它应该缩进:

mainstreet:
    environment: mainstreet
    S3_DOC_BUCKET: 
    PPTX_GEN_SERVICE:
    PDF_GEN_SERVICE: 
    OBJ_THUMB_SERVICE: 
    WINDOWS_CLIENT_URL: 
    KM_KEY:
    HOST_NAME: http://localhost:3000

在 rails3 控制台中,文件解析正确:

irb(main):039:0> y = YAML.load_file("c.yml")["mainstreet"]
=> {"environment"=>"mainstreet", "S3_DOC_BUCKET"=>nil, "PPTX_GEN_SERVICE"=>nil, "PDF_GEN_SERVICE"=>nil, "OBJ_THUMB_SERVICE"=>nil, "WINDOWS_CLIENT_URL"=>nil, "KM_KEY"=>nil, "HOST_NAME"=>"http://localhost:3000"}

这假设您将“mainstreet”作为env函数中的值传递

于 2013-04-02T00:14:08.500 回答