目的
引き続き Web+DB Press vol.58の特集記事「詳細Rails 3」にしたがって作業を進めているのですが、記事ではRailsのデータベースとしてSQLite3を使用しているのでそれを使えるようにします。
環境はCentOS 5.3です。
とりあえずそれっぽいことを試みる
ここのサイトを見ていたら、SQLite3のインストールしてましたので、とりあえずまねっこ。Railsで使うのは、sqlite3-rubyって名前のものなのかな?
LinuxにRuby1.9.2とRails3をインストール - りっぷる開発記録
# gem install sqlite3-ruby Building native extensions. This could take a while... ERROR: Error installing sqlite3-ruby: ERROR: Failed to build gem native extension. /usr/local/bin/ruby extconf.rb checking for sqlite3.h... yes checking for sqlite3_libversion_number() in -lsqlite3... yes checking for rb_proc_arity()... yes checking for sqlite3_initialize()... no sqlite3-ruby only supports sqlite3 versions 3.6.16+, please upgrade! *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options. Provided configuration options: --with-opt-dir --without-opt-dir --with-opt-include --without-opt-include=${opt-dir}/include --with-opt-lib --without-opt-lib=${opt-dir}/lib --with-make-prog --without-make-prog --srcdir=. --curdir --ruby=/usr/local/bin/ruby --with-sqlite3-dir --without-sqlite3-dir --with-sqlite3-include --without-sqlite3-include=${sqlite3-dir}/include --with-sqlite3-lib --without-sqlite3-lib=${sqlite3-dir}/lib --with-sqlite3lib --without-sqlite3lib Gem files will remain installed in /usr/local/lib/ruby/gems/1.9.1/gems/sqlite3-ruby-1.3.2 for inspection. Results logged to /usr/local/lib/ruby/gems/1.9.1/gems/sqlite3-ruby-1.3.2/ext/sqlite3/gem_make.out
うん、失敗してますね。
sqlite3-ruby only supports sqlite3 versions 3.6.16+, please upgrade!
だそうです。
もっと新しいバージョンのsqlite3が必要か、もしくはもともと入ってないのか(後から考えれば、それをちゃんと確かめておくべきだった)。
Web+DB PRESSの記事では特にsqlite3のインストールには言及していないので、もしかしたら別に入れなくても動いたりするのかな? ためしに作業を続けてみる。
$ rails g scaffold post title:string body:text Could not find gem 'sqlite3-ruby (>= 0, runtime)' in any of the gem sources listed in your Gemfile. Try running `bundle install`.
やっぱりだめっぽいです。入れなきゃいけないな。
SQLite3をインストールする
公式サイトを探してみました。
SQLite Home Page
なんかいろんなファイルがあってどれだかわかりにくいのですが、適当に見繕ってえいやで入れちゃいます。
ここでも覚えたばかりのcheckinstallを使います(こちら参照id:hachiilcane:20110101)。ダウンロードファイルの名前がちょっとわかりづらいので、checkinstall実行後の設定画面で、バージョン名とかパッケージ名とか適当につけました。
# wget http://www.sqlite.org/sqlite-autoconf-3070400.tar.gz # tar xzvf sqlite-autoconf-3070400.tar.gz # cd sqlite-autoconf-3070400 # ./configure # /usr/local/sbin/checkinstall # rpm -ivh /usr/src/redhat/RPMS/i386/sqlite-3.7.4-1.i386.rpm 準備中... ########################################### [100%] 1:sqlite ########################################### [100%]
入ったみたいです。ではもう一回sqlite3-rubyをgemでインストールしてみましょう。
# gem install sqlite3-ruby Building native extensions. This could take a while... Successfully installed sqlite3-ruby-1.3.2 1 gem installed Installing ri documentation for sqlite3-ruby-1.3.2... Installing RDoc documentation for sqlite3-ruby-1.3.2...
おおっ、成功したみたいですよ! これでRailsアプリの作成を続けられますね!
2011/04/04追記 sqlite3-ruby? sqlite3?
達人出版会さんの「はじめる!Rails3(1)」を購入して勉強し始めたのですが(はじめる! Rails3(1) - 達人出版会)、そこではこんな風に書いてありました。
> sudo gem install sqlite3
うーん? インストールすべきものの名前は、sqlite3-ruby なのか sqlite3 なのか、どっちなんだろう?
たまたまPCの入れ替えをしたので、もう一度一連のRailsインストールを手順を試すときがきました。今回は試しに、sqlite3 という名前でgemインストールし、そのあとsqlite3-rubyという名前でもgemインストールするということをわざとやってみました。すると……。
# gem install sqlite3 Building native extensions. This could take a while... Successfully installed sqlite3-1.3.3 1 gem installed Installing ri documentation for sqlite3-1.3.3... Installing RDoc documentation for sqlite3-1.3.3... # gem install sqlite3-ruby ####################################################### Hello! The sqlite3-ruby gem has changed it's name to just sqlite3. Rather than installing `sqlite3-ruby`, you should install `sqlite3`. Please update your dependencies accordingly. Thanks from the Ruby sqlite3 team! <3 <3 <3 <3 ####################################################### Successfully installed sqlite3-ruby-1.3.3 1 gem installed Installing ri documentation for sqlite3-ruby-1.3.3... Installing RDoc documentation for sqlite3-ruby-1.3.3...
The sqlite3-ruby gem has changed it's name to just sqlite3. だそうです。ということで、"sqlit3"という名前でインストールするのが正しいみたいですね。
ついでいうと、「はじめる!Rails3(1)」ではgemインストールの前に、CentOS5の場合は以下の手順をと書かれているのだが、
> sudo yum install sqlite3-devel
これってまちがってますよね? CentOS5だと sqlite3-devel という名前のパッケージはないです。sqlite-devel はありますけどね。でもCentOS5.5では sqlite-devel-3.3.6-5 なので、どっちにしろバージョンが足りないんじゃないかな。