質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

2回答

5666閲覧

rails の導入?がうまくいかない

tyobi

総合スコア18

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

1クリップ

投稿2019/02/27 08:25

前提・実現したいこと

railsの導入に関する質問です。
sqliteのインストールがうまくいきません。

gem install sqlite3

とすると下のようなエラーが出ます。

発生している問題・エラーメッセージ

Temporarily enhancing PATH for MSYS/MINGW... Installing required msys2 packages: mingw-w64-x86_64-sqlite3 警告: mingw-w64-x86_64-sqlite3-3.27.2-1 は最新です -- スキップ Building native extensions. This could take a while... ERROR: Error installing sqlite3: ERROR: Failed to build gem native extension. current directory: C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/sqlite3-1.4.0/ext/sqlite3 C:/Ruby25-x64/bin/ruby.exe -r ./siteconf20190227-6304-1pp04oe.rb extconf.rb *** 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=C:/Ruby25-x64/bin/$(RUBY_BASE_NAME) --with-sqlcipher --without-sqlcipher --with-sqlite3-config --without-sqlite3-config --with-pkg-config --without-pkg-config C:/Ruby25-x64/lib/ruby/2.5.0/mkmf.rb:456:in `try_do': The compiler failed to generate an executable file. (RuntimeError) You have to install development tools first. from C:/Ruby25-x64/lib/ruby/2.5.0/mkmf.rb:541:in `try_link0' from C:/Ruby25-x64/lib/ruby/2.5.0/mkmf.rb:559:in `try_link' from C:/Ruby25-x64/lib/ruby/2.5.0/mkmf.rb:661:in `try_ldflags' from C:/Ruby25-x64/lib/ruby/2.5.0/mkmf.rb:1821:in `pkg_config' from extconf.rb:35:in `<main>' To see why this extension failed to compile, please check the mkmf.log which can be found here: C:/Ruby25-x64/lib/ruby/gems/2.5.0/extensions/x64-mingw32/2.5.0/sqlite3-1.4.0/mkmf.log extconf failed, exit code 1 Gem files will remain installed in C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/sqlite3-1.4.0 for inspection. Results logged to C:/Ruby25-x64/lib/ruby/gems/2.5.0/extensions/x64-mingw32/2.5.0/sqlite3-1.4.0/gem_make.out

試したこと

とりあえずエラーメッセージにあった C:/Ruby25-x64/lib/ruby/2.5.0/mkmf.rb のファイルを見てみたのですが
何をどう修正すればよいのか全く見当がつきません
当方railsを入れようというとこで躓いたためrailsに関する基礎知識がほぼない状態です。ですのでよろしければ、
どうすれば良いか詳しく教えていただければ助かります。よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

同じような質問に何度も答えていますがRuby2.4系を使用してください。
理由などはこことか参考にしてください。

投稿2019/02/27 09:16

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tyobi

2019/03/02 12:01

回答ありがとうございます。 ruby 2.4.5p335 (2018-10-18 revision 65137) [x64-mingw32]にしましたが、改善されませんでした。 rails serverとしても rails new APP_PATH [options]がでてきました。
退会済みユーザー

退会済みユーザー

2019/03/04 00:17

それはコマンドの実行場所がおかしいのでは?
guest

0

ベストアンサー

エラーの原因ですが、2019年3月4日時点での最新のsqlite3 v1.4.0ではdlおよびdlopen()(Linuxに存在するライブラリとCの関数)が必須となっているのですが、MSYS2/Mingw-w64環境には標準でこの関数が存在しない(入れる方法は後述)ため、必要な関数が無いと言うことでコンパイルに失敗してしまいます。sqlite3の最新版(v1.4.0)特有の問題であり、**Rubyのバージョンは関係ありません。**sqlite3のバージョンを下げない限り、Rubyのバージョンを下げても問題は解決しません。

v1.3.13を指定してインストールすることで解決します。次のコマンドでインストールしてみてください。
※ ruby 2.6.1p33 (2019-01-30 revision 66950) [x64-mingw32]で確認しています。

gem install sqlite3 --version 1.3.13 --platform ruby

Ruby 2.5以上の場合は--platform rubyは必須です(sqlite3 1.3.13のmingw版にはRuby 2.4までしかWindows用バイナリが用意されていないため)。sqlite3側でもそのうち修正はされるとは思いますが、まだ誰もIssuesに投げていないようなので、いつ修正されるかは不明です。


asmさんの情報より

ridk exec pacman -S mingw-w64-x86_64-dlfcn

でMSYS2上にdlfncパッケージを入れておくとコンパイルが出来ることを確認しました。1.4.0を使いたいなら、この方法の方が良いかもしれません。

投稿2019/03/04 13:55

編集2019/03/05 11:29
raccy

総合スコア21735

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tyobi

2019/03/04 14:41

回答ありがとうございます。 おっしゃられた通りにバージョンを指定したらインストールできました。 ありがとうございました。
asm

2019/03/04 23:25

ridk exec pacman -S mingw-w64-x86_64-dlfcn で、dlをmsys2に入れることができるらしいですね。 sqlite3が依存ライブラリにdlfcnを追加するのか、RubyInstaller2側でSDKとしてdlくらいは用意すべきなのか ちょっと考えさせらます。
raccy

2019/03/05 11:30

asmさんの情報を元に1.4.0を入れられることを確認したので、その情報を追記しておきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問