使用rails 4,我需要从开发中的相对URL生成环境变量,并在生产中生成绝对的
DEV: SOME_PATH = [Rails root] / some_path
PROD: SOME_PATH = [某些绝对路径] / some_other_path
我按照我发现there的说明将这些变量存储在yml文件中。 存储和生成这些变量的好方法/最佳实践是什么?
例如,在我的yml中我可以写:
development:
DOCETUDE_PATH: some_path
production:
DOCETUDE_PATH: /home/public/some_other_path
在我的代码中,我必须生成Pathname变量。这似乎有效,但看起来很黑:
if (ENV['DOCETUDE_PATH'].start_with?("/"))
MY_CST = Pathname.new(ENV['DOCETUDE_PATH']
else
MY_CST = File.join(Rails.root, ENV['DOCETUDE_PATH'])
end
答案 0 :(得分:1)
如果这些是您的要求,那就是您的要求。
我可能会基于Rails环境而不是路径名,如果是指法,或者包括检查路径v。环境以确保没有人指责配置。
我可能也使用Ruby环境的init文件而不是环境,所以它都是代码。
如果我按照你的方式做,我会重构一些代码,所以它看起来更像:
path = ENV['DOCETUDE_PATH']
MY_CST = relative_path?(path) ? Pathname.new(path) : File.join(Rails.root, path)
(并创建relative_path?
方法,当然,如果它不存在于某个地方。)