(Windows) Ruby2.0 on Rails で SQLite3 にハマらない手順
(おそらく)ハマらない手順まとめ
railsinstaller-3.0.0.exe デフォルト選択肢でインストール (C:\RailsInstaller)。
sqlite-autoconf-3071502.tar.gz を解凍して C:\sqlite-autoconf-3071502 として設置。
[RailsInstaller] - [Command Prompt with Ruby and Rails] にて
> set PATH=C:\RailsInstaller\DevKit\mingw\bin;%PATH% > bash $ cd c:/sqlite-autoconf-3071502 $ ./configure --prefix=c:/sqlite3 $ make $ mkdir c:/sqlite3 $ make install $ cp c:/RailsInstaller/Ruby2.0.0/bin/sqlite3.exe c:/RailsInstaller/Ruby2.0.0/bin/sqlite3.exe.bk $ cp c:/sqlite3/bin/* c:/RailsInstaller/Ruby2.0.0/bin/. $ exit > gem uninstall sqlite3 > gem install sqlite3 --platform=ruby -- --with-sqlite3-include=c:/sqlite3/include --with-sqlite3-lib=c:/sqlite3/lib … 1 gem installed
とりあえず以上の手順で sqlite3 モジュールインストール完了。
適当なプロジェクトで確認。
[RailsInstaller] - [Command Prompt with Ruby and Rails] にて
> rails new HogeProject > gem uninstall sqlite3 Select gem to uninstall: 1. sqlite3-1.3.7-x86-mingw32 2. sqlite3-1.3.7 3. All versions > 1 Successfully uninstalled sqlite3-1.3.7-x86-mingw32 > cd HogeProject > rails g scaffold Content name:string body:text > rake db:migrate > rails s
サーバが起動されました。
ブラウザで http://localhost:3000/ を開き、[About your application's environment] をクリックして
各モジュールのバージョンを確認しましょう。
rails new が mingw32 系の sqlite3 をインストールしてしまうので、手動でアンインストールしているのがミソです。
もっとスマートな方法があれば誰か教えてください。
以下は詳細な道のり。(上記手順で解決しているなら特に読まなくても良い)
手順詳細
RailsInstaller による Ruby on Rails インストール
railsinstaller-windows 3.0.0-alpha1 with Ruby 2.0.0 を入手する。
railsinstaller.org
└→ RubyForge: Rails Installer: ファイルリスト
└→ railsinstaller-3.0.0.exe
railsinstaller-3.0.0.exe を実行し、ぜんぶデフォルトで進んでいけばOK。
C:\RailsInstaller にインストールされます。
インストール後にプロンプトで以下のようなことを聞かれる場合は
github 等で使う名前とメールアドレスを入力しましょう。
… Please enter your name, for example mine is: Wayne E. Seguin name > (名前を入力) … Please enter your email address, for example mine is: wayneeseguin@gmail.com email > (メールアドレスを入力)
適当なプロジェクトを準備してみる
プロジェクト作って、ひとつモデルを作ってみる。
[RailsInstaller] - [Command Prompt with Ruby and Rails] にて
> rails new HogeProject > cd HogeProject > rails g scaffold Content name:string body:text C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7-x86-mingw32/lib/sqlite3.rb:6:in `require': cannot load such file -- sqlite3/sqlite3_native (LoadError) from C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7-x86-mingw32/lib/sqlite3.rb:6:in `rescue in <top (required)>' …
gem の sqlite3 の処理でコケます。
普通に gem sqlite3 モジュールを入れ直してみる
[RailsInstaller] - [Command Prompt with Ruby and Rails] にて
> gem uninstall sqlite3 Temporarily enhancing PATH to include DevKit... Building native extensions. This could take a while... ERROR: Error installing sqlite3: ERROR: Failed to build gem native extension. C:/RailsInstaller/Ruby2.0.0/bin/ruby.exe extconf.rb checking for sqlite3.h... no sqlite3.h is missing. Install SQLite3 from http://www.sqlite.org/ first. *** 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. …
ダメですね。
sqlite3 の差し替え
sqlite3 のファイル一式を入手する
SQLite Home Page
└→ SQLite Download Page
└→ sqlite-autoconf-3071502.tar.gz
解凍して、C:\sqlite-autoconf-3071502 として設置する。
[RailsInstaller] - [Command Prompt with Ruby and Rails] にて
> set PATH=C:\RailsInstaller\DevKit\mingw\bin;%PATH% > bash $ cd c:/sqlite-autoconf-3071502 $ ./configure --prefix=c:/sqlite3 $ make $ mkdir c:/sqlite3 $ make install $ cp c:/RailsInstaller/Ruby2.0.0/bin/sqlite3.exe c:/RailsInstaller/Ruby2.0.0/bin/sqlite3.exe.bk $ cp c:/sqlite3/bin/* c:/RailsInstaller/Ruby2.0.0/bin/. $ exit > gem uninstall sqlite3 > gem install sqlite3 --platform=ruby -- --with-sqlite3-include=c:/sqlite3/include --with-sqlite3-lib=c:/sqlite3/lib … 1 gem installed
成功!
プロジェクトの準備ふたたび
再度モデル作成を試します。
[RailsInstaller] - [Command Prompt with Ruby and Rails] にて
> cd HogeProject > rails g scaffold Content name:string body:text invoke active_record create db/migrate/20130710053516_create_contents.rb create app/models/content.rb … invoke scss create app/assets/stylesheets/scaffolds.css.scss > rake db:migrate == CreateContents: migrating ================================================= -- create_table(:contents) -> 0.0020s == CreateContents: migrated (0.0040s) ========================================
できた!
もし、以下のようなエラーが出るようなら、
> rails g scaffold Content name:string body:text C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7-x86-mingw32/lib/sqlite3.rb:6:in `require': cannot load such file -- sqlite3/sqlite3_native (LoadError) from C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7-x86-mingw32/lib/sqlite3.rb:6:in `rescue in <top (required)>' …
余計な sqlite3-1.3.7-x86-mingw32 を消しましょう。
> gem uninstall sqlite3 Select gem to uninstall: 1. sqlite3-1.3.7-x86-mingw32 2. sqlite3-1.3.7 3. All versions > 1 Successfully uninstalled sqlite3-1.3.7-x86-mingw32
プロジェクトの実行
[RailsInstaller] - [Command Prompt with Ruby and Rails] にて
> cd HogeProject > rails s => Booting WEBrick => Rails 3.2.12 application starting in development on http://0.0.0.0:3000 => Call with -d to detach => Ctrl-C to shutdown server [2013-07-10 05:42:22] INFO WEBrick 1.3.1 [2013-07-10 05:42:22] INFO ruby 2.0.0 (2013-02-24) [i386-mingw32] [2013-07-10 05:42:22] INFO WEBrick::HTTPServer#start: pid=1628 port=3000 …
確認
http://localhost:3000/ で、[About your application's environment] をクリックすれば
各モジュールのバージョンが分かります。
Ruby 2.0.0 で実行できた!
謝辞
@yuumi3のお仕事日記
すごく参考になりました!