1

使用 rails 4,我需要从开发中的相对 url 和生产中的绝对 url 生成环境变量

开发:SOME_PATH = [Rails 根]/some_path

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

我按照我在那里找到的说明将这些变量存储在一个 yml 文件中。存储和生成这些变量的好方法/最佳实践是什么?

例如,在我的 yml 中,我可以写:

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
4

1 回答 1

1

如果这些是您的要求,那么这些就是您的要求。

我可能会基于 Rails 环境而不是路径名,以防粗手指,或者包括对路径 v. 环境的检查,以确保没有人粗手指配置。

我也可能使用 Ruby 环境初始化文件而不是环境,所以这都是代码。

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

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

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

于 2014-09-11T13:15:16.290 回答