美文网首页ruby&rails 测试Ruby
Rails[4]:配置数据库

Rails[4]:配置数据库

作者: gimp | 来源:发表于2014-12-26 17:06 被阅读2663次

    操作系统: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,也可以在建立项目后进行配置。

    1. 新建项目的时候
    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
    
    1. 手工配置
      在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一个默认的用户,不用手工添加。

    相关文章

      网友评论

      • gimp:For Fedora 22
        Use the follow cmd
        sudo systemctl start mariadb.service
        sudo systemctl enable mariadb.service

      本文标题:Rails[4]:配置数据库

      本文链接:https://www.haomeiwen.com/subject/jxiatttx.html