开发者

Using different settings locally versus remotely in files such as application.yml

In my app I have some code that changes when running locally versus in development on the remote server, such as app_domain in application.yml, etc. Besides having to manually chang开发者_StackOverflow社区e them each time I run locally versus deploy to remote machine, is there a better way of managing this?


EDIT - for yml

It depends a bit on how you are loading the application.yml but generally when you load yml files ruby parses it all into a hash for you. Thus you can set something up like the database.yml and structure all the yml under your different environments:

development:
    domain: localhost

production:
    domain: mydomain.com

test:
    domain: foo

and then when you load your yml file you want to grab the settings for the specific environment you are in, like this:

MY_CONFIGS = YAML.load_file("[path to my yaml file]/application.yml")[RAILS_ENV]


I like Matthew's answer unless you have some secrets in those files (passwords).

If you have passwords you don't want in source, what I tell my UrbanDeploy customers when they have this type of scenario is to use a script (or we have a built-in script) that effectively does a token replace based on environment. Where the replacements are coming from the deployment system, or a magic file somewhere on the deployment target.

Either way, treat an environment as a first order thing that has data about it that needs to be managed.


Using kwateeSDCM you can customize any file at deployment time on a server by server basis. This way you only need one templatized application.xml and parametrize it depending on the target server.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜