2016-02-23 50 views
2

我新的Rails和mongoid,我有mongoid.yml文件,它包含的条目如下:mongoid YAML结合环境变量主机

development: 
    # Configure available database clients. (required) 
    clients: 
    # Defines the default client. (required) 
    default: 
     # Defines the name of the default database that Mongoid can connect to. 
     # (required). 
     database: mycollectionname 
     # Provides the hosts the default client can connect to. Must be an array 
     # of host:port pairs. (required) 
     hosts: 
     - localhost:27017 

这个工作正常发展,然而,在生产中,我想从指定的环境变量主机像ENV['OPENSHIFT_MONGODB_DB_HOST'] +“:” + ENV['OPENSHIFT_MONGODB_DB_PORT']

我已经试过各种方法,如本

hosts: 
     - <%= \"#{ENV['OPENSHIFT_MONGODB_HOST']}:#{ENV['OPENSHIFT_MONGODB_PORT']}\" %> 

hosts: 
     - #{ENV['OPENSHIFT_MONGODB_HOST']:ENV['OPENSHIFT_MONGODB_PORT']} 

等,但没有工作

+0

您是否也尝试使用URI,即'uri:<%= ENV ['OPENSHIFT_MONGODB_DB_URL']%>'? –

回答

2

在YAML代码,<%= %>是为您插入Ruby代码,你可以使用Expression Substitution里面格式化您的网址

Expression substitution is a means of embedding the value of any Ruby expression into a string using #{ and }

类似这样的事情:

<%= "#{ENV['OPENSHIFT_MONGODB_HOST']}:#{ENV['OPENSHIFT_MONGODB_PORT']}" %>

在我与openshift mongoid项目,我使用了uri:场这样的:

uri: <%= "#{ENV['OPENSHIFT_MONGODB_DB_URL']}#{ENV['OPENSHIFT_APP_NAME']}" %>

也请注意缩进,它必须是准确的,它必须是空间!标签也会导致问题!