rails app默认为sqlite3。我想将postgresql作为默认_如何更改

时间:2012-04-25 22:33:46

标签: ruby-on-rails postgresql sqlite

我正在学习rails,当我开始安装所有内容时,我根据我正在阅读的书籍使用sqlite3。但是,我试图部署我在heroku上编写的测试应用程序。 Heroku重申,应用程序运行postgresql进行开发和生产,以防止出现细微的错误。所以我决定今后使用post gresql来获取所有我的rails应用程序。

为此,我做了以下设置:
1)下载并安装Postgresql
2)在.bash_rc文件中添加了文件夹路径 3)安装了pg gem
4)到目前为止一切都很好。但是,当我转到我的应用程序的根文件夹并尝试此命令时:

rails generate scaffold User name:string email:string

我在控制台上收到以下错误

rails generate scaffold User name:string email:string

invoke  active_record 
/Users/AM/.rvm/gems/ruby-1.9.2-p290/gems/bundler-
1.0.22/lib/bundler/rubygems_integration.rb:143:in `block in replace_gem': 
Please install the sqlite3 adapter: `gem install activerecord-sqlite3-adapter` 
(sqlite3   is not part of the bundle. Add it to Gemfile.) (LoadError)
from /Users/AM/.rvm/gems/ruby-1.9.2-p290/gems/activerecord- 
3.2.1/lib/active_record/connection_adapters/sqlite3_adapter.rb:3:in `<top (required)>'

这告诉我rails应用程序中的默认设置是sqlite3。所以我打开了我的databse.yml文件,这就是它的内容。

# SQLite version 3.x
#   gem install sqlite3
#
#   Ensure the SQLite 3 gem is defined in your Gemfile
#   gem 'sqlite3'
development:
  adapter: sqlite3
  database: db/development.sqlite3
  pool: 5
  timeout: 5000

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  adapter: sqlite3
  database: db/test.sqlite3
  pool: 5
  timeout: 5000

production:
  adapter: sqlite3
  database: db/production.sqlite3
  pool: 5
  timeout: 5000

为sqlite3设置了所有内容 如何更改我的rails设置,以便默认情况下数据库的所有配置都是postgresql?

由于

2 个答案:

答案 0 :(得分:6)

更新:结帐 - http://railscasts.com/episodes/342-migrating-to-postgresql

您只需更改database.yml文件中的设置即可知道您要使用的内容。在您的情况下,您将要更改适配器和数据库:

development:
  adapter: postgresql
  database: my_app_dev
  username: username
  password: pw

一旦你有了它,你可以运行以下命令使其与sqlite中的相匹配:

rake db:create && rake db:schema:load

答案 1 :(得分:3)

自从您提出问题后不确定这是否是新功能,但是将'-d postgresql'传递给rails new命令,它将使用postgres信息填充config / database.yml。

rails new testapp -d postgresql