sam*_*452 10 postgresql ruby-on-rails ruby-on-rails-3
好的,我正在构建我的第一个rails 3.0应用程序,并希望在我的开发机器(运行10.6)上测试postgreSQL服务器作为生产.当您创建新应用程序并rake db:migrate时,它会为所有三种环境创建sqlite db.凉.现在我想学习如何转向生产和使用postgres.我用自制软件来安装postgres,安装了pg (env ARCHFLAGS="-arch x86_64" gem install pg)和postgres-pr gems.
我运行rake db:migrate希望与sqlite3一样,它会自动构建我的生产服务器,因为我已经更新了我的database.yml(见下文).
好的,在我的应用程序的文件夹中,我使用' rails s --environment=production' 重新启动服务器,它说它无法找到我的生产数据库.
所以谷歌搜索'rails 3 postgres install'让我走得这么远,但我似乎错过了一些东西,因为rails无法创建新的pg数据库.
postgres正在运行,由ps决定.
createdb -Omysuperusername -Eutf8 vitae_production
createdb -Omysuperusername -Eutf8 /Users/sam/apps/vitae/db/vitae_production
Run Code Online (Sandbox Code Playgroud)
但是这个目录没有这个数据库所以我错过了什么.我在俯瞰什么?
这是我的database.yml片段:
production:
adapter: postgresql
host: localhost
database: db/vitae_production
pool: 5
timeout: 5000
username: mysuperusername
password:
Run Code Online (Sandbox Code Playgroud)
mu *_*ort 13
这里有几件事情要发生.首先,您似乎将SQLite和PostgreSQL格式混合database:在您的设置中database.yml.使用SQLite,您可以使用以下命令指定SQLite数据库文件的相对路径:
database: db/vitae_production.sqlite
Run Code Online (Sandbox Code Playgroud)
但是使用PostgreSQL,您可以使用以下内容指定数据库名称:
development:
database: vitae_development
username: rails
...
Run Code Online (Sandbox Code Playgroud)
然后,一旦database.yml设置完毕,您将从内部创建数据库用户(如果需要)psql:
psql> create role rails login;
Run Code Online (Sandbox Code Playgroud)
然后让Rails创建数据库:
$ rake db:create
Run Code Online (Sandbox Code Playgroud)
然后,您应该能够运行迁移来创建初始表并离开.
您可能希望阅读create role文档以确保获得正确的选项.您可能希望在开发环境而不是生产环境中工作,因此我更改了名称和YAML以反映这一点,生产用于部署,我认为您尚未部署任何内容.
| 归档时间: |
|
| 查看次数: |
14918 次 |
| 最近记录: |