当我尝试在我的config / site_config.rb文件中的“mainstreet”环境中启动我的rails服务器时
def self.settings(env)
answer = YAML::load_file('config/siteconfig.yml')[env]
raise "No settings for environment #{env}" if answer.nil?
answer
end
返回“没有环境mainstreet的设置”在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。
以下是完整的跟踪:
答案 0 :(得分: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
的值传递