Rails Production FATAL:数据库" db / production.postgresql"不存在

时间:2015-10-16 19:56:23

标签: ruby-on-rails postgresql ubuntu capistrano

我在Digitalocean中关注此tutorial以设置我的rails生产服务器。但是我在cap production deploy:initial

收到错误

我的设置包括DigitalCean中的Ubuntu 14.04,Capistrano,Nginx和Puma。

在教程中,他们没有提到有关编辑database.yml但我注意到我需要编辑它,因为默认的是sqlite3,而我的生产数据库是postgresql。

SSHKit::Runner::ExecuteError: Exception while executing on host      159.203.107.215: Exception while executing on host 159.203.107.215: rake     exit status: 1
rake stdout: rake aborted!
ActiveRecord::NoDatabaseError: FATAL:  database "db/production.postgresql" does not exist

的database.yml

default: &default
adapter: postgresql
pool: 5
timeout: 5000

development:
  <<: *default
  database: db/development.sqlite3

test:
<<: *default
 database: db/test.sqlite3

production:
<<: *default
database: db/production.postgresql

1 个答案:

答案 0 :(得分:2)

Sqlite和PostgreSQL需要非常不同的连接参数。 Sqlite只是获取磁盘数据库文件的路径。 PostgreSQL需要连接信息:主机名,数据库名称,用户名和密码。我会摆脱你的development: pool: 5 timeout: 5000 database: db/development.sqlite3 test: pool: 5 timeout: 5000 database: db/test.sqlite3 production: adapter: postgresql pool: 5 encoding: unicode database: your_db_name_here host: your_db_host_here username: your_db_username_here password: your_db_password_here 东西,并使每一个都明确。像这样:

username: <%= ENV.fetch('DATABASE_USERNAME', '') %>
password: <%= ENV.fetch('DATABASE_PASSWORD', '') %>

我还鼓励你不要在这个文件中存储实际的用户名和密码,而是通过环境获取它(dot_env gem可以帮助,也可以帮助其他几个)。像这样:

heres my script:
import zipfile

zFile = zipfile.ZipFile('lol.zip')
passFile = open('dictionary.txt')

for line in passFile.readlines():
    password = x.strip()
    try:
        zFile.extractall(pwd=password)
        print('[+] Password = ' + password)
        exit(0)
    except Exception:
        pass