Rails环境变量相对或绝对路径

问题描述:

使用轨道4,我需要生成从在发展相对URL环境变量,和绝对酮在生产Rails环境变量相对或绝对路径

DEV: SOME_PATH = [导轨根]/SOME_PATH

PROD: SOME_PATH = [某些绝对路径]/some_other_path

我存储这些变量在一个YML文件,以下我发现there说明书。 什么是一个很好的方式/最佳做法来存储和生成这些变量?

例如,在我的阳明我可以这样写:

development: 
    DOCETUDE_PATH: some_path 
production: 
    DOCETUDE_PATH: /home/public/some_other_path 

而且在某个地方我的代码必须生成路径名的变量。这似乎工作,但看起来hackish:

if (ENV['DOCETUDE_PATH'].start_with?("/")) 
    MY_CST = Pathname.new(ENV['DOCETUDE_PATH'] 
else 
    MY_CST = File.join(Rails.root, ENV['DOCETUDE_PATH']) 
end 

如果这些是你的要求,那些是你的要求。

我可能会将其基于Rails环境而不是路径名称,以防发胖或包含路径与环境检查以确保没有人指责配置。

我可能会使用Ruby环境init文件而不是环境,所以它都是代码。

如果我做你的方式我会重构的一些代码,所以它看起来更像:

path = ENV['DOCETUDE_PATH'] 
MY_CST = relative_path?(path) ? Pathname.new(path) : File.join(Rails.root, path) 

(并创建relative_path?方法,当然,如果它不存在某处)。