2016-02-23 49 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']}" %>

也請注意縮進,它必須是準確的,它必須是空間!標籤也會導致問題!