2012-04-25 24 views
1

我正在學習rails,當我開始並根據正在閱讀的書籍安裝sqlite3時所用的所有內容。但是,我試圖部署一個我在heroku上編寫的測試應用程序。 Heroku認爲這些應用程序運行postgresql進行開發和生產以防止微妙的錯誤。所以我決定從今以後在所有的rails應用程序中使用post gresql。rails應用默認爲sqlite3。我想將postgresql設置爲默認值_如何更改

要做到這一點我做了如下設置:
1)下載並安裝PostgreSQL的
2)的添加文件夾的路徑在我.bash_rc文件
3)安裝在PG寶石
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的 我怎樣才能改變我的軌道設置,在默認情況下所有的configs數據庫是PostgreSQL的?

感謝

+0

對不起,不完全得到你的問題。無論我做了什麼,我都列出了上述步驟。我不確定如何將每個應用程序捆綁的默認sqlite3更改爲默認PostgreSQL。我可以這樣做嗎?這將如何工作?我需要改變什麼? – banditKing 2012-04-25 22:56:43

回答

5

更新:退房 - 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 
+0

快速的問題。 postgresql數據庫將位於我的電腦上。我剛剛安裝了它。我如何找到它的路徑。另外,我是否需要將其複製並放到我的應用程序的db文件夾中?這一切如何工作?謝謝,對不起,如果問題是基本的。我在學習導軌 – banditKing 2012-04-25 23:10:34

+0

看看這個屏幕演員。它應該幫助你很大http://railscasts.com/episodes/342-migrating-to-postgresql – 2012-04-25 23:17:11

2

不知道這是否是一個新功能,因爲您提出了問題,但將'-d postgresql'傳遞給rails new命令,它將使用postgres信息填充config/database.yml。

rails new testapp -d postgresql 
+0

你是否知道在rails項目存在的情況下是否還能運行它? – snapfractalpop 2014-10-04 18:56:30