操作系统:Fedora 21
Rails一般有三种环境: development
, production
, test
.
一般来说,Rail在开发和测试的时候使用sqlite数据库。
生产环境使用mysql或者postgresql。
(mysql已经被mariadb代替了)
1. sqlite
预先应该安装支持库。
sudo yum install -y sqlite-devel
sqlite使用的gem是sqlite3(在Gemfile里配置)
gem 'sqlite3'
不需要其他额外的配置。
2. mysql(mariadb)
预先安装支持库
sudo yum install mariadb-devel
安装mariadb,设置开机启动,启动数据库。
sudo yum install mariadb mariadb-server
sudo systemctl start mysqld
sudo systemctl enable mysqld
可以在新建项目的时候配置mysql,也可以在建立项目后进行配置。
- 新建项目的时候
rails new my_app -d mysql
生成的Gemfile里会有一行
gem 'mysql2'
切换到项目根目录后,运行bundle
cd my_app
bundle install
运行rake db:create
,创建数据库。
不同环境下的命令如下(默认是development):
RAILS_ENV=production rake db:create
RAILS_ENV=test rake db:create
- 手工配置
在Gemfile中添加,并运行bundle
gem 'mysql2'
bundle install
更改数据库的配置文件config/database.yml
default: &default
adapter: mysql2
encoding: utf8
pool: 5
username: root
password:
socket: /var/lib/mysql/mysql.sock
development:
<<: *default
database: my_app_development
test:
<<: *default
database: my_app_test
production:
<<: *default
database: my_app_production
username: my_app
password: <%= ENV['MY_APP_DATABASE_PASSWORD'] %>
运行rake db:create
如果不能正常运行,就把socket: /var/lib/mysql/mysql.sock
删除。
3. postgresql
安装postgresql,同时也安装postgresql的库。
可以参考Fedora的官方文档
sudo yum install postgresql-server postgresql-contrib postgresql-devel
sudo systemctl enable postgresql
sudo postgresql-setup initdb
sudo systemctl start postgresql
记得要修改一个配置文件pg_hba.conf
,没有安全考量的话,直接改成trust就好了。配置完后要重新启动postgresql。
/var/lib/pgsql/data/pg_hba.conf
在Rails项目中使用postgresql的方式跟使用mysql差不多。
rails new my_app -d postgresql
或者手工添加gem 'pg'
到Gemfile
数据库的配置文件大概是这样的
default: &default
adapter: postgresql
encoding: unicode
pool: 5
development:
<<: *default
database: my_app_development
test:
<<: *default
database: my_app_test
production:
<<: *default
database: my_app_production
username: my_app
password: <%= ENV['MY_APP_DATABASE_PASSWORD'] %>
如果rake db:create
失败的话,添加下面两行到pool: 5
下面
username: postgres
password:
postgres是postgresql一个默认的用户,不用手工添加。