Rails,Mongoid,使用环境变量进行数据库配置会抛出NoMethodError

时间:2017-01-12 15:49:42

标签: ruby-on-rails ruby mongoid capistrano bundler

我正在尝试将使用mongoid的rails应用程序部署到我的远程生产服务器。

在我mongoid.yml我添加了这个:

hosts:
    - <%= ENV['MONGOSERVER_PORT_27017_TCP_ADDR'] %>:27017

当我启动我的capistrano时,它会抛出这个错误:

SSHKit::Command::Failed: rake exit status: 1
rake stdout: rake aborted!
NoMethodError: undefined method `split' for :"27017":Symbol

添加下划线会导致此错误发生吗?

2 个答案:

答案 0 :(得分:2)

看起来环境变量是零,所以它只是阅读:

hosts:
    - :27017

它认为主机是一个符号,它正在抛弃它。

仔细检查您的env var是否设置正确并使用主机周围的引号进行尝试:

hosts:
    - "<%= ENV['MONGOSERVER_PORT_27017_TCP_ADDR'] %>:27017"

答案 1 :(得分:1)

该行被解析为- :27017,它会创建Symbol而不是您的网址字符串。这可能是由于您的ENV变量没有被定义;确保你已正确定义它。

要回答“添加下划线会导致此错误吗?”的问题:很可能没有。下划线在环境变量中有效。