1

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

但是,当我部署到 AWS OpsWorks 时,应用程序已部署,我可以看到/public文件夹中的内容,但我的所有操作都不起作用,我不太确定如何调试它。

当我检查日志时,看到它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因为这个 get 在 ec2 insatnce 上运行。

任何调试帮助或指导都会有很大帮助。谢谢!

4

1 回答 1

1

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

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

您需要运行创建数据库等的正常任务。作为安装应用程序的一部分,您应该单独执行此操作。一个不错的选择是使用部署挂钩:opsworks hooks

于 2014-07-16T03:21:45.013 回答