OpsWorks已部署,但我的行为不起作用。我的database.yml文件搞砸了吗?

时间:2014-07-13 23:10:32

标签: mysql ruby-on-rails amazon-web-services aws-opsworks

当我使用本地mysql服务器在本地运行rails服务器时,我的端点工作正常,并且正在插入和更新到mysql数据库,所有内容都很漂亮。

然而,当我部署到AWS OpsWorks时,应用程序已部署,我可以查看/public文件夹中的内容,但我的所有操作都没有“#39}工作,我不太确定如何调试它。

当我检查日志时,看到bundle install被调用,甚至跟着......

[2014-07-13T14:37:34+00:00] INFO: No database adapter specified for bgs_api, guessing
[2014-07-13T14:37:35+00:00] INFO: Looks like bgs_api uses mysql2 in its Gemfile

..但没有关于实际创建表或执行迁移的事情。

关于我的实例和应用...

我有一个EC2实例,其上有Rails和MySQL层。

我使用的是database.yml文件,但我不确定这是否意味着我可以在部署应用程序时忽略自定义JSON。这就是我目前正在做的事情。

这是我的database.yml文件

development:
  adapter: mysql2
  encoding: utf8
  reconnect: true
  database: xyz #name for local database defined by me
  username: abc #username for local database user defined by me
  password: 123 #password for local database user defined by me
  pool: 5
  host: localhost

production:
  adapter: mysql2
  encoding: utf8
  reconnect: true
  database: xyz #name for opsworks database defined by me
  username: root #username for opsworks database defined by opsworks
  password: abc #password for opsworks database defined by opsworks
  pool: 5
  host: localhost

我不确定的一个特别的事情是生产主机价值......我想它会是localhost,因为这会让你的ec2失控。

任何帮助或调试方向都会有很大帮助。谢谢!

1 个答案:

答案 0 :(得分:1)

您需要通过自定义JSON发送数据库详细信息。这是因为APP没有自动从配置中获取连接详细信息。即使你把它添加到代码库中,它也会被配方写下来。

{
  "deploy":{
    "app_name":{
      "database":{
        "password":"",
        "adapter":"mysql2",
        "username":"",
        "database":"",
        "host":"localhost"
      }
    }
  }
}

您需要运行创建数据库等的正常任务。这是您应该在安装应用程序时单独执行的操作。一个很好的选择是使用部署挂钩:opsworks hooks