简体   繁体   中英

Rails environment variable relative or absolute path

Using rails 4, I need to generate an environment variable from a relative url in development, and an absolute-one in production

DEV : SOME_PATH = [Rails root]/some_path

PROD : SOME_PATH = [Some absolute path]/some_other_path

I'm storing these variables in a yml file, following the instructions I found there . What would be a nice way/best practice to store and generate these variables ?

For example, in my yml I could write:

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

And somewhere in my code I must generate the Pathname variables. This seems to work but looks 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

If those are your requirements, those are your requirements.

I might base it on the Rails environment rather than the path name, in case of fat-fingering, or include a check of path v. environment to make sure nobody fat-fingers the configuration.

I might use a Ruby environment init file instead of the environment, too, so it's all code.

If I was doing it your way I'd refactor some of the code so it looked more like:

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

(And create the relative_path? method, of course, if it doesn't already exist somewhere.)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM