我有一个Node.js / Rails3应用程序,我在Heroku上托管。 当我在本地机器或远程生产盒上运行时,rails部分在PostgreSQL和SQLite3之间无缝切换。
在本地,rails框架连接到configite config/databases.yml定义的SQLite3,当我推送到Heorku时,部署脚本会用生产设置覆盖它。
我的node.js脚本没有Heroku可以挂钩的框架,并确保我在生产环境中使用正确的数据库。
如何让我的node.js脚本“正常工作”我的Rails应用程序在开发和生产环境之间无缝移动的方式?
I have a Node.js/Rails3 app that I'm hosting on Heroku. The rails portion seamlessly switches between PostgreSQL and SQLite3 when it's run on my local machine or the remote production box.
Locally, the rails framework connects to SQLite3 as defined in config/databases.yml and when I push to Heorku, the deploy scripts overwrite this with their production setup.
My node.js scripts don't have a framework that Heroku can hook into and make sure I'm using the right database in my production environment.
How can I make my node.js scripts "Just Work" the way my Rails app moves seamlessly between development and production environments?
最满意答案
Heroku公开了一个可以通过DATABASE_URL环境变量连接的数据库URL。 这是Heroku开发中心文档的相关部分。
使用Postgres数据库
要将PostgreSQL数据库添加到您的应用程序,请运行以下命令:
$ heroku addons:add shared-database这将设置DATABASE_URL环境变量。 将postgres NPM模块添加到您的依赖项:
"dependencies": { ... "pg": "0.5.4" }并使用该模块从代码中的某个位置连接到DATABASE_URL :
var pg = require('pg'); pg.connect(process.env.DATABASE_URL, function(err, client) { var query = client.query('SELECT * FROM your_table'); query.on('row', function(row) { console.log(JSON.stringify(row)); }); });
Heroku exposes a database URL you can connect to via the DATABASE_URL environment variable. Here's the relevant section from the Heroku Dev Center docs.
Using a Postgres Database
To add a PostgreSQL database to your app, run this command:
$ heroku addons:add shared-databaseThis sets the DATABASE_URL environment variable. Add the postgres NPM module to your dependencies:
"dependencies": { ... "pg": "0.5.4" }And use the module to connect to DATABASE_URL from somewhere in your code:
var pg = require('pg'); pg.connect(process.env.DATABASE_URL, function(err, client) { var query = client.query('SELECT * FROM your_table'); query.on('row', function(row) { console.log(JSON.stringify(row)); }); });
更多推荐
发布评论