45
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

CentOS環境でRails6.0をSQLite3 (>=3.8)で動かす

はじめに

Ruby on Rails 6でSQLiteを使う場合、SQLite3.8以上が必要になります。
ただし、現時点(2019/9月)でCentOSで提供されているSQLiteのパッケージは3.7が最新であり、
普通にアプリケーションを作ると以下のようなエラーが発生します。

$ rake db:migrate
rake aborted!
Your version of SQLite (3.7.17) is too old. Active Record supports SQLite >= 3.8.

これを解消するために、ここでは

  • ソースからインストール
  • gemをwith-sqlite3-libでインストール

することで解決を目指します。

SQLiteの最新版をインストール

# 3.29をダウンロード
$ wget https://www.sqlite.org/2019/sqlite-autoconf-3290000.tar.gz

$ tar xzvf sqlite-autoconf-3290000.tar.gz

$ cd sqlite-autoconf-3290000

# もとから入っているsqliteと競合しないように /opt/sqlite/sqlite3 にインストールします
$ ./configure --prefix=/opt/sqlite/sqlite3

$ make

$ sudo make install

# バージョン確認
$ /opt/sqlite/sqlite3/bin/sqlite3 --version
3.29.0 2019-07-10 17:32:03 fc82b73eaac8b36950e527f12c4b5dc1e147e6f4ad2217ae43ad82882a88bfa6

sqlite3のgemを入れ直し

$ gem uninstall sqlite3

# 上記でいれたlibとincludeのパスを指定してinstall
# --with-sqlite3-includeが必要な旨を教えていただいたので追加
$ gem install sqlite3 -- --with-sqlite3-include=/opt/sqlite/sqlite3/include \
   --with-sqlite3-lib=/opt/sqlite/sqlite3/lib

# 成功!
$ rake db:migrate
== 20190905152058 CreateUsers: migrating ======================================
-- create_table(:users)
   -> 0.0013s
== 20190905152058 CreateUsers: migrated (0.0014s) =============================

※ sqlite3のパスは古いまま(/usr/bin/sqlite3)なのでターミナルから使う場合はパスの修正が必要です。

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
45
Help us understand the problem. What are the problem?