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

时间:2014-09-11 12:56:04

标签: ruby-on-rails ruby constants environment pathname

使用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

1 个答案:

答案 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?方法,当然,如果它不存在于某个地方。)