我安装了 prostgres 以与我的 rails4 应用程序一起使用,并且能够连接到数据库服务器并创建数据库。然后我对我的 Gemfile 和 config/database.yml 进行了必要的更改以使用 postgres。然后我创建了一个新应用程序,并在应用程序中创建了一个用户模型:
$ rails generate model User name:string email:string
invoke active_record
create db/migrate/20130806145935_create_users.rb
create app/models/user.rb
invoke rspec
create spec/models/user_spec.rb
然后我做了:
$ bundle exec rake db:migrate
== CreateUsers: migrating ====================================================
-- create_table(:users)
-> 0.1498s
== CreateUsers: migrated (0.1500s) ===========================================
但是在 db 目录中,我看到了这些文件:
development.sqlite3
test.sqlite3
此外,当我尝试使用 SQLite 数据库浏览器查看这些文件时,我收到一条错误消息,指出它们不是 sqlite 3 数据库。事实上,它们是空的:
~/rails_projects/sample_app4_0/db$ ls -al
total 40
drwxr-xr-x 8 7stud staff 272 Aug 6 22:50 .
drwxr-xr-x 24 7stud staff 816 Aug 6 22:23 ..
-rw-r--r-- 1 7stud staff 0 Jul 30 00:21 development.sqlite3
drwxr-xr-x 3 7stud staff 102 Aug 6 22:22 migrate
-rw-r--r-- 1 7stud staff 1063 Aug 6 09:06 schema.rb
-rw-r--r-- 1 7stud staff 343 Jul 29 20:01 seeds.rb
-rw-r--r-- 1 7stud staff 0 Jul 30 03:02 test.sqlite3
我读到您可以使用告诉它使用 postgres 的标志创建您的 rails 应用程序:
rails new myapp --database postgresql
但我已经创建了我的应用程序。我必须重新开始吗?如果这有所作为,我正在使用 git。
我的宝石文件:
source 'https://rubygems.org'
ruby '2.0.0'
#ruby-gemset=railstutorial_rails_4_0
gem 'rails', '4.0.0'
gem 'bootstrap-sass', '2.3.2.0'
#Added for postgres:
gem 'pg', '0.15.1'
group :development, :test do
#gem 'sqlite3', '1.3.7'
gem 'rspec-rails', '2.13.1'
gem 'guard-rspec', '2.5.0'
gem 'spork-rails', github: 'sporkrb/spork-rails'
gem 'guard-spork', '1.5.0'
gem 'childprocess', '0.3.6'
end
group :test do
gem 'selenium-webdriver', '2.0.0'
gem 'capybara', '2.1.0'
gem 'growl', '1.0.3'
end
gem 'sass-rails', '4.0.0'
gem 'uglifier', '2.1.1'
gem 'coffee-rails', '4.0.0'
gem 'jquery-rails', '2.2.1'
gem 'turbolinks', '1.1.1'
gem 'jbuilder', '1.0.2'
group :doc do
gem 'sdoc', '0.3.20', require: false
end
group :production do
#gem 'pg', '0.15.1'
gem 'rails_12factor', '0.0.2'
end
配置/数据库.yml:
development:
adapter: postgresql
encoding: utf8
database: sampleapp_dev #can be anything unique
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: postgresql
encoding: utf8
database: sampleapp_test #can be anything unique
pool: 5
timeout: 5000
production:
adapter: postgresql
database: sampleapp_prod
pool: 5
timeout: 5000